Java SSL连接和未知服务器证书警告
我正在使用Netty进行异步http(s)请求。当请求的url为https时,我会将其添加到管道中: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)); 这很好,我得到了响应和所有信息,但是输出中会写入一条警告:未知服
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
由于一切仍在运行,这对我来说不是什么大问题,但有两件事我想知道:
谢谢。检查以确保在执行此操作时将“信任存储”正确标识为Netty,您可能需要考虑将${JAVA_HOME}/jre/lib/security/cacerts添加为信任存储 如果没有配置,您可能无法通过SSL进行连接 查看此线程中的代码示例:
我认为这将有助于您的密钥库和信任库设置 看起来我需要实现TrustManagerFactorySpi和TrustManager,因为SecureChat示例提供的是“假的”。它接受任何证书并在不检查的情况下打印警告。我现在将坚持这一点,稍后将继续讨论。您能否对打印警告的方法进行子类化并覆盖该方法?只需复制无警告代码即可?是的,它打印在X509TrustManager的实现中,我可以自己实现,我只是不知道如何做,我想稍后我将深入讨论。