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地址)。有人能告訴我,如果我做錯了什么,并指出我的正確方向嗎?
添加回答
舉報
0/150
提交
取消