我正在尝试使用 Jetty 建立一个通过 SSL 运行的安全站点。我从证书颁发机构收到了 4 个 PEM 文件:
- 1 个根证书
- 2 份中级证书
- 我的网站有 1 个证书
但我无法让它工作。站点要么完全拒绝请求,要么可以工作但无法识别证书并且浏览器会发出警告。我尝试过以下方法:
keytool -keystore keystore.jks -import -alias server -file server.crt -trustcacerts
...但这会导致对该网站的请求立即被拒绝,Chrome 表示该网页不可用 - 服务器上根本没有错误。我也尝试过这个:
openssl pkcs12 -export -out keystore.pkcs12 -in server.crt -inkey server-private-key.pem
keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks
...这会导致站点响应请求,但仍然警告证书不受信任。
我需要对根证书和中间证书做什么(如果有的话)。我的尝试失败是因为我没有使用它们吗?我找不到任何信息来拼凑我所缺少的内容。
最佳答案
将所有证书组合在一起。你的 server.crt 看起来像这样
-----BEGIN CERTIFICATE-----
1 Certificate for my site
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
1st Intermediate Certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
2nd Intermediate Certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
1 Root Certificate
-----END CERTIFICATE-----
使用命令:
openssl pkcs12 -export -clcerts -in server.crt -inkey server-private-key.pem -out keystore.pkcs12
keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks
关于java - 如何从证书颁发机构提供的 PEM 文件正确创建 java keystore 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26639651/