使用 pem 文件在 tomcat 上启用 SSL

Abd*_*lam 7 ssl https tomcat

我想在我的 tomcat 8 服务器上启用或配置 https,这需要我配置证书路径。我收到了 .pem 文件,如何使用这个 .pem 文件在 tomcat 上配置 https?

Pio*_*asz 5

虽然大多数答案集中在提出问题时支持的 Tomcat 7.0 和 8.0 版本,但自版本 8.5.2(2016 年 5 月)以来,可以直接使用 PEM 文件,而无需转换为 PKCS12 文件。

您可以:

  • 将 PEM 编码的私钥和所有证书按从叶到根的顺序放入单个文件(假设conf/cert.pem)并使用:
<Connector port="443" SSLEnabled="true" secure="true" scheme="https">
  <SSLHostConfig>
    <Certificate certificateFile="conf/cert.pem" />
  </SSLHostConfig>
</Connector>
Run Code Online (Sandbox Code Playgroud)

强烈建议不要将私钥和证书存储在同一个文件中。

  • 将私钥conf/privkey.pem和证书(按通常的顺序)放入conf/cert.pem并使用:
<Connector port="443" SSLEnabled="true" secure="true" scheme="https">
  <SSLHostConfig>
    <Certificate certificateFile="conf/cert.pem"
                 certificateKeyFile="conf/privkey.pem" />
  </SSLHostConfig>
</Connector>
Run Code Online (Sandbox Code Playgroud)
  • 使用三个单独的文件:例如,conf/privkey.pem用于私钥、conf/cert.pem服务器证书和conf/chain.pem中间证书,并使用:
<Connector port="443" SSLEnabled="true" secure="true" scheme="https">
  <SSLHostConfig>
    <Certificate certificateFile="conf/cert.pem"
                 certificateKeyFile="conf/privkey.pem"
                 certificateChainFile="conf/chain.pem" />
  </SSLHostConfig>
</Connector>
Run Code Online (Sandbox Code Playgroud)

所有三种连接器类型均支持此配置:NIONIO2APR


小智 -2

要在您的项目上启用https,请按照以下步骤操作:

1-转到您的JAVA_HOME并运行以下命令:(您的 java 目录可能不同)

"C:\Program Files\Java\jre1.8.0_161\bin\keytool" -genkey -alias tomcat -keyalg RSA
  -keystore \path\to\your\directory\keystore.exe
Run Code Online (Sandbox Code Playgroud)

它将引导您完成一个过程,并询问keystore.exe. 记住这个密码

2-\path\to\your\directory,您应该拥有您的keystore.exe.

3-现在在您的apache tomcat's directory, openserver.xml` 中编写以下代码:

<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
            port="9999" maxThreads="200" scheme="https" secure="true" SSLEnabled="true"
            keystoreFile="PATH_TO_YOUR_DIRECTORY/cert1.keystore" keystorePass="YOUR_PASSSWORD_HERE"
            clientAuth="false" sslProtocol="TLS" />
Run Code Online (Sandbox Code Playgroud)

4-重新启动服务器并使用https端口 9999 打开您的项目。您现在将找到您的项目https