Caused by: java.security.cert.CertificateException: No subject alternative names present
时间: 2024-01-27 09:13:03 浏览: 122
这个错误通常是由于SSL证书中缺少主题备用名称(SAN)字段引起的。可以通过以下方法解决此问题:
1.忽略证书验证,但这并不是一个好的解决方案,因为它会降低应用程序的安全性。可以使用以下代码来忽略证书验证:
```java
connOpts.setHttpsHostnameVerificationEnabled(false);```
2.在SSL证书中添加主题备用名称(SAN)字段。这可以通过在证书签名请求(CSR)中包含主题备用名称扩展来完成。可以使用以下命令生成包含主题备用名称扩展的CSR:
```shell
openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr -subj "/C=US/ST=California/L=San Francisco/O=Example Corp/CN=example.com" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:example.com,DNS:www.example.com"))
```
3.使用IP地址而不是主机名来访问SSL站点。这种方法不需要主题备用名称字段。可以使用以下代码来访问SSL站点:
```java
URL url = new URL("https://192.168.0.1");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
```
阅读全文