Java jks keystore with CA, intermediate and website cert on tomcat in docker on AWS gives "Peer' s Certificate issuer is not recognised"

标签 java tomcat ssl firefox docker

我已经将 jks keystore 和 Java 1.8 cacerts 与我公司的证书提供商提供的证书放在一起,仅供内部使用,并将其构建到我的应用程序的 docker 构建中,使用 tomcat 部署它并成功启动服务器并通过连接到它Chrome 和 Edge,但 Windows 10 上的 Firefox 未连接,给出 SEC_ERROR_UNKNOWN_ISSUER“您的连接不安全”和“无法识别对等证书颁发者”。

这是我所做的:

  1. 我使用 Java 1.8 key 工具创建了私钥和证书请求。
  2. 获得根证书.cer、中间.cer和网站.cer文件
  3. 我将根证书放入 java 的 cacerts 中:
keytool -importcert -alias app-cert1 -file AD1GXECA001-SHA2-Root.cer -v -keystore c:/dev/tools/Java/jdk1.8.0_131/jre/lib/security/cacer

  1. 我还按以下顺序将它们连接到一个 pem 文件中:

    1. website cert
    2. intermediate cert
    3. company cert
    
  2. 并使用 keytool 将它们插入到 jks 中:
keytool -import -alias app-cert1 -file chain.pem -v -keystore my-app.jks
  1. 然后我将它们构建到我的 docker 镜像中,该镜像运行一个带有 tomcat 和应用程序的 Spring boot fat jar:
CMD -Dlogging.file=/logs/my-app.log 
    -Djava.security.auth.login.config=/config/login.conf
    -Djava.security.krb5.conf=/config/krb5.conf
    -Djavax.net.ssl.trustStore=/config/cacerts
    -Djavax.net.ssl.trustStorePassword=changeit
    -Djavax.net.debug=ssl
    -jar /my-app.jar

和 Spring 配置:

server.ssl.key-alias=app-cert1
server.ssl.key-password=changeit
server.ssl.key-store=file:/config/my-app.jks
server.ssl.key-store-provider=SUN
server.ssl.key-store-type=JKS

我在构建或 tomcat 日志记录中没有看到任何错误。

我的问题在哪里?火狐? window 10? jetty worker ?

Chrome和Edge真的没有问题吗?这是否意味着它必须是 firefox?

最佳答案

该错误消息仅表示 Firefox 无法建立从其证书库(通常是根 CA)中的受信任证书开始一直到网站证书的链。

当您在 Tomcat 的 SSL keystore 中导入完整链(不包括根 CA)时,Tomcat 会将这些证书交付给客户端。所以,你在服务器端没问题。但在客户端(在本例中为 Firefox)您需要一个信任 anchor ,因此您必须将根证书导入 Firefox。

您在 Chrome/Edge 上得到不同结果的原因是 Firefox 有自己的证书存储,而 Chrome 和 Edge 使用 Windows 存储。

关于Java jks keystore with CA, intermediate and website cert on tomcat in docker on AWS gives "Peer' s Certificate issuer is not recognised",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47335355/

相关文章:

java.lang.AbstractMethodError : org. apache.xerces.jaxp.DocumentBuilderFactoryImpl 不继承抽象 javax.xml.parsers.DocumentBuilderFactory

SSL 证书已更新但更改不可见

google-chrome - Chrome45 和 Firefox - 大多数网站上的 ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION

java - PostgresQL中如何使用SCRAM-SHA-256通过jdbc连接数据库

rest - 在 jersey 1.8 和 tomcat 7 Resful 和 eclipse 中找不到 404

java - 如何使用WS-Discovery规范在Java中发现网络上的ONVIF设备?

tomcat - Jersey 是如何连接到 servlet 3 容器的

email - SSL 证书是否/可以特定于服务(例如,服务器对 HTTPS 使用的证书与 SMTP/TLS 不同)

Java jar在ubuntu上创建多个进程但在mac上不创建

java - 在 JList 上设置选定的索引