为了账号安全,请及时绑定邮箱和手机立即绑定

SSL证书服务器名称是如何解析的/我可以使用keytools添加其他名称吗?

SSL证书服务器名称是如何解析的/我可以使用keytools添加其他名称吗?

qq_笑_17 2019-06-21 17:46:42
SSL证书服务器名称是如何解析的/我可以使用keytools添加其他名称吗?为了清楚起见,这些问题的措辞可能是不同的,但它们都与同一问题有关。SSL证书服务器名称是如何解析的?为什么浏览器似乎使用证书的cn字段,而Java的机制似乎只关注“Subject Alternative Name”?是否可以使用KeyTool向SSL证书添加其他名称?如果没有,那么使用OpenSSL代替OpenSSL是一个好的选择吗?只是一些背景:我需要一个主服务器来使用HTTPS与多个服务器进行通信。显然,我们不想为每个服务器购买SSL证书(可能有很多),所以我想使用自签名证书(我一直在使用KeyTool来生成它们)。在我将证书添加到操作系统中后,浏览器(IE和Chrome)很高兴地接受连接为受信任的。但是,即使在将证书添加到Java的仙人掌之后,Java仍然不会接受信任的连接,并抛出以下异常:引发原因:java.security.cert.CertificateException:在sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:142)at sun.security.util.HostnameChecker.match(HostnameChecker.java:75)at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkIdentity(X509T rustManagerImpl.java:264)com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509 TrustManagerImpl.java:250)com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Clien tHandshaker.java:1185).我发现我可以让Java信任实现我自己的HostNameVerifier的证书,我从这里复制了该证书:com.sun.jbi.internal.security.https.DefaultHostnameVerifier只是为了测试(顺便说一下,作为参数传递给HostnameVerifier的主机名是正确的,所以我认为它应该被接受)。我一直使用证书字段cn作为主机名(通常是IP地址)。有人能告诉我,如果我做错了什么,并指出我的正确方向吗?
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

这种情况下,在证书中使用IP地址将是一个更大的问题。可能更改IP地址是DNS的用途。通过使用动态DNS服务和使用具有该名称的证书(或任何解决该动态名称的CNAME),您更有可能解决问题

查看完整回答
反对 回复 2019-06-21
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

请注意,您可以在另一台机器上使用Java 7中的keyTool,并在以后复制密钥存储库(您不必运行Java 7)。或者,我已经为使用OpenSSL编辑了我的答案。尽管如此,从长远来看,您可能会发现使用主机名而不是IP地址更灵活(无论如何,使用SAN是个好主意)

查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 1794 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信