我正在为我的 Artifactory-repo 使用来自 startssl.com 的免费 SSL 证书。在我的浏览器中,一切都是绿色和漂亮的,但当然不是来自 Java。所以我用这个方便的脚本安装了 cacerts:
http://www.ailis.de/~k/uploads/scripts/import-startssl
但我仍然得到:
Server access Error: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException
错误。JAVA_HOME 设置正确。任何建议都非常感谢!
更多信息:
它来自 SBT 0.12.2 的常春藤(使用 pualp 的脚本https://github.com/paulp/sbt-extras)在证书上大吵大闹:
[info] Resolving net.liftmodules#omniauth_2.10;2.5-SNAPSHOT-0.7-SNAPSHOT ...
[error] Server access Error: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target url=https://repo.woodenstake.se/all/net/liftmodules/omniauth_2.10/2.5-SNAPSHOT-0.7-SNAPSHOT/maven-metadata.xml
- 更新:
这个问题似乎与 Java 本身无关。从浏览器访问该页面会产生一个绿色证书,我可以看到它从 StartSSL 签名的信息。但即使是 wget 或 curl 也会窒息并告诉我这是一个自签名证书。似乎根据客户提供不同的证书。
回购位于https://repo.woodenstake.se/ - 如果您将其粘贴到浏览器中,我猜您会获得 StartSSL-cert。但是如果你 wget https://repo.woodenstake.se/你会得到一些我不知道它来自哪里的旧的自签名证书。
-- 更新更新:
所以问题是我正在为一些 *.woodenstake.se 形式的站点提供服务。我觉得可以拥有不同的证书,例如:
server {
listen 443;
server_name site1.woodenstake.se;
client_max_body_size 512m;
ssl on;
ssl_certificate cert1.crt;
ssl_certificate_key cert1.key;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://server1;
break;
}
}
}
server {
listen 443;
server_name site2.woodenstake.se;
client_max_body_size 512m;
ssl on;
ssl_certificate cert2.crt;
ssl_certificate_key cert2.key;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://server2;
break;
}
}
}
它在我所有的浏览器中都可以正常工作。
但是,它不适用于 wget 或 JDK6。