java - 使用 Cloudflare 进行 Tomcat/TomEE SSL 配置

标签 java ssl tomcat cloudflare apache-tomee

我在使用 cloudflare 提供的 SSL 配置 tomee 的正确方法方面遇到了问题。 第一次这样做,所以情况如下:

1)首先我创建 keystore 文件:

keytool -keysize 2048 -genkey -alias tomee -keyalg RSA -keystore tomee.keystore

2)然后我导入生成的 keystore :

keytool -importkeystore -srckeystore tomee.keystore -destkeystore tomee.keystore -deststoretype pkcs12

3)导入后,我创建用于发出证书请求的 CSR 文件:

keytool -certreq -keyalg RSA -alias tomee -file FQDN.csr -keystore tomee.keystore

4) 然后我进入 cloudflare > ssl/tls > 源服务器 > 创建证书 > 选择“我有自己的私钥和 csr” > 然后将 FDQN.csr 内容粘贴到文本区域 > 单击下一步 > 最后我收到 PEM 内容,并以 FQDN.pem 形式保存在服务器上

5) 将 FQDN.pem 作为可信证书导入 keystore :

keytool -import -alias tomee -keystore tomee.keystore -trustcacerts -file FQDN.pem

6) 将 tomee.keystore 文件复制到 tomee conf 目录

7) 最后我为 tomee 配置 server.xml,如下所示:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true" 
            compression="on"  scheme="https" secure="true" keystoreFile="conf/tomee.keystore"
            keystorePass="myPasswordHere"
            SSLVerifyClient="none" SSLProtocol="TLSv1.2"
/>

8) 在这里我遇到了问题: 重新启动 tomcat 并通过端口 8443 发出请求。它可以工作,但证书显示为无效。查看证书时,我得到以下信息:“此 CA 根证书不受信任,因为它不在受信任的根证书颁发机构存储中。”

据我所知,根据文档 HERE - Add Cloudflare Origin CA root certificates ,我可能需要使用提供的文件添加其他配置。我理解正确还是我错过了什么? 如果是这样 - 这些配置会是什么样子?我应该按照 server.xml 文件中演示的格式做一些事情,如下所示:(或者这是完全不同的事情?)

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
           maxThreads="150" SSLEnabled="true" >
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" xpoweredBy="false" server="Apache TomEE" />
    <SSLHostConfig>
        <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                     certificateFile="conf/localhost-rsa-cert.pem"
                     certificateChainFile="conf/localhost-rsa-chain.pem"
                     type="RSA" />
    </SSLHostConfig>
</Connector>

有趣的是,网上没有太多信息,我已经努力理解这个问题好几天了。 对此的任何启发都会有所帮助。

向发布类似主题的人致敬 HERE

最佳答案

已经解决了。 对于任何感兴趣的人来说,有两个问题:

1) 在对 tomcat/tomee Web 服务器执行步骤 5) 之前,您需要添加受信任的根证书,并使用 cloudflare 提供的 key HERE(Configure the SSL/TLS mode in the Cloudflare SSL/TLS app) .

keytool -import -alias root -keystore tomee.keystore -trustcacerts -file origin_ca_rsa_root.pem

然后将您的别名 rsa 添加到 keystore ,如 5) 中所示。

2) 其他问题是 cloudflare DNS 设置上被忽略的 CN 配置,因此请检查您的配置。

希望这对某人有帮助:)

关于java - 使用 Cloudflare 进行 Tomcat/TomEE SSL 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62248306/

相关文章:

java - 继承 : using base class or derived class to do stuff

java - 使用paintComponent()和高CPU使用率

jsp - 显示非英文字符 ??在 Action 类

Java HTTPS 客户端证书认证

java - 通过 JVM 参数相对路径加载 SSL 配置

maven - 在部署新版本之前备份已部署的 Web 应用程序(自动)

jakarta-ee - Servlet jar 未加载 Tomcat 问题

java - 写入或读取文件

java - 为什么java "putAll"无法深复制Map的值元素?

ruby-on-rails - 使用 nginx 为 rails 中的登录用户强制 ssl