当 SMTP 客户端连接到远程 SMTP 服务器并发出具有自签名证书的 STARTTLS 命令时 - 我在客户端收到错误:
javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
有一种解决方案可以信任所有证书,例如:
SSLContext trustAllSSLContext;
TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}};
try {
trustAllSSLContext = SSLContext.getInstance("SSL");
trustAllSSLContext.init(null, trustAllCerts, null);
} catch (NoSuchAlgorithmException | KeyManagementException ex) {
//...
}
但这会导致安全漏洞。我认为这可能比在这种情况下发送未加密的数据更好?