Java SSL连接和UNKNOWN SERVER CERTIFICATE警告

时间:2012-03-17 12:32:25

标签: 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));

这很好用,我得到了回复和所有内容,但是输出中写了一条警告: UNKNOWN SERVER CERTIFICATE ,例如,如果我发出请求: https ://www.google.com 这就是我得到的:

UNKNOWN SERVER CERTIFICATE: CN=www.google.com, O=Google Inc, L=Mountain View, ST=California, C=US

由于一切仍然有效,对我来说这不是一个问题,但我想知道两件事:

  1. 为什么我会收到警告? googles的证书是一个“众所周知的”,浏览器似乎没有警告它。我应该以某种方式告诉ssl引擎在哪里查找证书?

  2. 我可以在运行时以某种方式捕获此警告,而不是打印出此消息吗?

  3. 感谢。

2 个答案:

答案 0 :(得分:1)

检查以确保在执行此操作时向Netty正确识别“信任存储”,您可能必须将$ {JAVA_HOME} / jre / lib / security / cacerts添加为受信任存储。

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

答案 1 :(得分:1)

戴夫,

查看此主题中的代码示例:Set up Netty with 2-way SSL Handsake (client and server certificate)

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