如何使用 CA 签名证书在 Jetty 中正确配置 SSL?
How to configure SSL in Jetty with CA signed certificate properly?
我正在尝试保护我的 eXist-db 应用程序,这意味着我想保持打开状态的唯一端口应该是 8443(用于使用 WebDAV 和管理应用程序)。这是 eXist-db 安装后打开的基本安全端口。它使用自签名证书。我可以用新证书替换默认证书,但问题是我无法使用 CA 签名证书执行此操作。
我试过了:
sudo rm eXist-db/tools/jetty/etc/keystore
cat ServerCertificate.crt Alpiro-TrustProvider-IntermediateCA.crt Root.cer > cert-chain.txt
- 我清理了坏行并验证了每个证书都在新行开始。
openssl pkcs12 -export -inkey my-app.key -in cert-chain.txt -out my-app.pkcs12
keytool -importkeystore -srckeystore my-app.pkcs12 -srcstoretype PKCS12 -destkeystore eXist-db/tools/jetty/etc/keystore
重启后,我检查了连接:openssl s_client -connect xx.xx.xxx.xxx:8443
,一切正常。我可以看到有我的可信证书并且连接 (handshake
) 正常工作。但是,浏览器仍然声称它不是可信连接。
当我尝试通过 XQuery 通过 https 检查某些内容时,它抛出:
java.security.cert.CertificateException: No subject alternative names matching IP address xx.xx.xxx.xxx found …
解决方案非常简单。问题是我一直试图通过 IP 访问该站点,而不是通过完全限定的域名。证书关联的是域名,不是IP!
我正在尝试保护我的 eXist-db 应用程序,这意味着我想保持打开状态的唯一端口应该是 8443(用于使用 WebDAV 和管理应用程序)。这是 eXist-db 安装后打开的基本安全端口。它使用自签名证书。我可以用新证书替换默认证书,但问题是我无法使用 CA 签名证书执行此操作。
我试过了:
sudo rm eXist-db/tools/jetty/etc/keystore
cat ServerCertificate.crt Alpiro-TrustProvider-IntermediateCA.crt Root.cer > cert-chain.txt
- 我清理了坏行并验证了每个证书都在新行开始。
openssl pkcs12 -export -inkey my-app.key -in cert-chain.txt -out my-app.pkcs12
keytool -importkeystore -srckeystore my-app.pkcs12 -srcstoretype PKCS12 -destkeystore eXist-db/tools/jetty/etc/keystore
重启后,我检查了连接:openssl s_client -connect xx.xx.xxx.xxx:8443
,一切正常。我可以看到有我的可信证书并且连接 (handshake
) 正常工作。但是,浏览器仍然声称它不是可信连接。
当我尝试通过 XQuery 通过 https 检查某些内容时,它抛出:
java.security.cert.CertificateException: No subject alternative names matching IP address xx.xx.xxx.xxx found …
解决方案非常简单。问题是我一直试图通过 IP 访问该站点,而不是通过完全限定的域名。证书关联的是域名,不是IP!