Java 中的“java.security.cert.CertificateException: No subject Alternative Names Present”错误故障排除
连接到 HTTPS Web 服务时使用 Java 客户端时,遇到异常“java.security.cert.CertificateException:不存在主题备用名称”可能会令人沮丧。解决此问题的方法如下:
验证证书信息
要获取服务器的证书详细信息,请使用命令“openssl s_client -showcerts -connect AAA.BBB.CCC” .DDD:9443 > certs.txt。”生成的文件“certs.txt”包含:
替代解决方案
关于建议解决方案的第1步:
关于第 2 步建议的解决方案:
推荐方法
考虑以下替代方案:
// In the ISomeService class: static { disableSslVerification(); } private static void disableSslVerification() { // ... [Code to disable HTTPS checks as described in the provided answer] }
// In the ISomeService class: HostnameVerifier customVerifier = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { // Perform custom hostname verification, such as accepting the IP address (AAA.BBB.CCC.DDD). return true; } }; HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection(); httpsConn.setHostnameVerifier(customVerifier);
警告:禁用 HTTPS 检查或实现自定义主机名验证器可能会损害安全性。仅将这些方法用于测试或受控环境中。
以上是如何修复 Java 中的'java.security.cert.CertificateException:不存在主题备用名称”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!