念念不忘,必有回响


July 19, 2016

Confluence 更换 SSL 证书设置

公司的企业 wiki 使用的 Atlassian 的产品 Confluence。它是一个专业的企业知识管理与协同软件,也可以用于构建企业 wiki。通过它可以实现团队成员之间的协作和知识共享。

由于域名的 SSL 证书到期了,重新签了一年 SSL 证书。把 nginx 配置里面的证书更换了,打开一切正常,绿锁正常显示。但是登陆的时候出现了以下报错:

因为还使用了 JIRA(JIRA 是 Atlassian 公司出品的项目与事务跟踪工具),为了两套系统能够统一登陆就做了 SSO (单点登陆)。SSO 登陆的时候出现如下报错: 

查询了 Confluence 和 Crowd 的日志,相同的报错如下:

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)
    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
    at sun.security.validator.Validator.validate(Validator.java:260)
    at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491)
    ... 50 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
    ... 56 more

根据日志报错搜索了google,我们了解到不仅需要设置 nginx 的证书,还需要把证书导入到 java 的证书库中才行。

官方的 SSL 设置文档:《Running Confluence Over SSL or HTTPS

根据文档我们把域名证书导入到 java 证书库中

cd /opt/atlassian/confluence/jre/lib/security/
keytool -import -alias cacerts -keystore cacerts -file /usr/local/nginx/conf/ssl/x.pem

再次打开 Confluence,登录成功