我正在尝试通过 atlassian Rest api java 框架连接到我的 Jira:
JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory();
JiraRestClient client = factory.createWithBasicHttpAuthentication(uri, userName, password);
但这会导致错误:
javax.net.ssl.SSLHandshakeException:一般 SSLEngine 问题
PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
我认为发生这种情况是因为我为 Jira 使用了自签名证书。有没有办法至少出于开发目的而关闭 JiraRestClientFactory
的证书验证?
最佳答案
我知道您在寻找不使用信任存储的解决方案。但现在您的系统将只信任任何证书,并且在生产环境中部署时您必须禁用您的解决方法。
我建议建议以下解决方案:
正如您所注意到的 - 这是由于您的自签名 ssl 证书未在信任存储中注册造成的。但是,您不应信任所有证书,而只需将您自己签署的证书添加到 java 信任存储中。解决起来既简单又快速。
keytool -genkeypair -alias alias_name -keyalg RSA -validity #_of_days -keysize 2048 -keystore path_to_keystore_file
可以在以下位置找到默认信任存储
{JAVA_HOME}/jre/lib/security/cacerts
您还可以创建自定义信任存储并在启动应用程序时将路径作为参数传递。
有关信任存储的更多信息和示例可以在此处找到:
https://docs.oracle.com/cd/E54932_01/doc.705/e54936/cssg_create_ssl_cert.htm#CSVSG178
关于java - 关闭 JiraRestClient 的 ssl 证书验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49099610/