java - 如何从证书颁发机构提供的 PEM 文件正确创建 java keystore 文件?

标签 java tomcat jetty ssl-certificate keystore

我正在尝试使用 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/

相关文章:

tomcat - Vaadin 和 Tomcat7 问题登录

java.lang.NoSuchFieldError : INSTANCE with Spring Social on Azure 错误

java - 将 Apache Tomcat Web 服务器与 Microsoft Visual Studio .net 框架集成

java - 警告 :/%3C%=request. getContextPath()%%3E/trailpath/trailpath.nocache.js : java. lang.NumberFormatException: =r

java - Jetty 如何创建自定义 WebSocket

java - 迭代列表直到列表为空

java - 执行失败 Process command/usr/lib/jvm/java-8-oracle/bin/java finished with non-zero exit value 2

servlets - 如何将 servlet 动态添加到 jetty 服务器?

java - 使用 java 和 apache poi 读取 excel 时获取未知字符

java - Pydoop 作业未运行