Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SSL连接和未知服务器证书警告_Java_Ssl_Https_Ssl Certificate_Netty - Fatal编程技术网

Java SSL连接和未知服务器证书警告

Java SSL连接和未知服务器证书警告,java,ssl,https,ssl-certificate,netty,Java,Ssl,Https,Ssl Certificate,Netty,我正在使用Netty进行异步http(s)请求。当请求的url为https时,我会将其添加到管道中: SSLEngine engine = SecureChatSslContextFactory.getClientContext().createSSLEngine(); engine.setUseClientMode(true); pipeline.addLast("ssl", new SslHandler(engine)); 这很好,我得到了响应和所有信息,但是输出中会写入一条警告:未知服

我正在使用Netty进行异步http(s)请求。当请求的url为https时,我会将其添加到管道中:

SSLEngine engine = SecureChatSslContextFactory.getClientContext().createSSLEngine();
engine.setUseClientMode(true);

pipeline.addLast("ssl", new SslHandler(engine));
这很好,我得到了响应和所有信息,但是输出中会写入一条警告:未知服务器证书,例如,如果我发出以下请求:https://www.google.com 这就是我得到的:

UNKNOWN SERVER CERTIFICATE: CN=www.google.com, O=Google Inc, L=Mountain View, ST=California, C=US
由于一切仍在运行,这对我来说不是什么大问题,但有两件事我想知道:

  • 为什么我会收到这样的警告?谷歌的证书是“众所周知”的,浏览器似乎没有对此发出警告。我是否应该告诉ssl引擎在哪里查找证书

  • 我是否可以在运行时捕获此警告,而不是打印此消息


  • 谢谢。

    检查以确保在执行此操作时将“信任存储”正确标识为Netty,您可能需要考虑将${JAVA_HOME}/jre/lib/security/cacerts添加为信任存储

    如果没有配置,您可能无法通过SSL进行连接

    查看此线程中的代码示例:


    我认为这将有助于您的密钥库和信任库设置

    看起来我需要实现TrustManagerFactorySpi和TrustManager,因为SecureChat示例提供的是“假的”。它接受任何证书并在不检查的情况下打印警告。我现在将坚持这一点,稍后将继续讨论。您能否对打印警告的方法进行子类化并覆盖该方法?只需复制无警告代码即可?是的,它打印在X509TrustManager的实现中,我可以自己实现,我只是不知道如何做,我想稍后我将深入讨论。