【发布时间】:2010-12-23 03:43:44
【问题描述】:
我正在为我的服务器上的端口 12345 打开一个安全 SSL 套接字。我现在使用的是自签名证书。我将证书安装到我的服务器密钥库和客户端信任库中;很好,废话。
我正在构建这个例子:http://www.exampledepot.com/egs/javax.net.ssl/Client.html
客户端正确验证服务器是否有签名证书。客户端似乎没有验证提供的证书 CN(通用名称)是否与我正在连接的服务器的主机名匹配。显然,如果不要求它与请求的域匹配,那么获得签名证书并不难。
当我安装我的证书(使用 keytool --import)时,我是否将它安装为根级证书?我是否需要使用第一个证书的主密钥签署第二个证书?为什么 TrustManager 不验证公用名?
我希望这是有道理的,我并没有想太多。
谢谢!
更新:Java SSL 似乎需要手动验证证书? (http://www.java2s.com/Open-Source/Java-Document/Net/Apache-common-HttpClient/org/apache/commons/httpclient/contrib/ssl/StrictSSLProtocolSocketFactory.java.htm) 这真的是真的吗?我本来希望默认值是安全的,而任何更少的东西都需要显式覆盖。我很惊讶。有人可以确认吗?
【问题讨论】:
-
默认是遵守 RFC(s)。
标签: java sockets ssl-certificate