restTemplate.postForObject出现Hostname open.feishu.cn not verified错误
时间: 2024-06-09 10:05:18 浏览: 171
该错误提示是因为 HTTPS 协议的证书没有被信任所导致的。解决方案如下:
1. 在本地将 open.feishu.cn 的证书导入到 JDK 中,具体方法可参考这篇文章:https://www.cnblogs.com/xiaoH/p/10517517.html
2. 通过代码忽略证书验证,但这种方法不太安全,代码示例如下:
```java
// 创建 SSL 上下文
SSLContext sslContext = SSLContext.getInstance("TLS");
// 初始化 SSL 上下文
sslContext.init(null, new TrustManager[]{new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}}, new SecureRandom());
// 创建 SSL 连接工厂
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
// 创建 HostnameVerifier
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
public boolean verify(String s, SSLSession sslSession) {
return true;
}
};
// 设置 HostnameVerifier
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
```
建议还是尽可能使用第一种方法,增强代码的安全性。
阅读全文