gpt4 book ai didi

java - 为 Tomcat 配置 SSL 的步骤是什么?

转载 作者:行者123 更新时间:2023-12-02 09:10:18 25 4
gpt4 key购买 nike

我对在本地计算机上为 Tomcat 配置 SSL 感到有点困惑。首先,我是否需要使用 keytool 创建一个新的 keystore ?然后我应该将现有的.pfx证书文件导入到新创建的java keystore (.jks文件)中吗?最后导出一个新的 blabla.pfx 文件并添加一个在 443 端口上运行的新连接器,如下所示:

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" 
enableLookups="false" keystoreFile="C:/dev/certificates/blabla.pfx" keystorePass="12345"
keystoreType="PKCS12" maxThreads="25" port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="https" secure="true"` sslProtocol="TLS"/>

什么是 cacert?我还应该创建一个新的 cacerts 文件并将其添加到本地服务器吗?我需要做点什么来让它值得信任吗?您能否解释一下将现有证书添加到本地 Tomcat 的正确且必要的顺序。非常感谢。

最佳答案

这取决于...这取决于您的目标(您希望将其配置为尽可能与生产类似吗?您想考虑性能吗?)以及您所拥有的(例如您的 JRE 是否支持 TLS 1.3?)

我假设您只想通过尽可能简单的配置来获得 SSL/TLS,并且在这个阶段您不想太关心安全性(这在许多情况下是相当好的)。

您说已有 .pfx 证书。我认为这是一个自签名证书。那么这就是您所需要的。您不需要任何进一步的导入、导出、转换。

您使用的配置格式已被弃用。我建议您使用 和 。

您的配置如下所示:

    <Connector
port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="25"
SSLEnabled="true">
<SSLHostConfig>
<Certificate
certificateKeystoreFile=".../your_existing_localhost.pfx"
certificateKeystorePassword="12345"
type="RSA" />
</SSLHostConfig>
</Connector>

这假设 .pfx 包含单个证书。如果 yoiu 在同一个 .pfx 文件中有多个证书,您应该指定 Tomcat 应使用的证书的别名:

    <Connector
port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="25"
SSLEnabled="true">
<SSLHostConfig>
<Certificate
certificateKeystoreFile=".../your_existing_localhost.pfx"
certificateKeyAlias="your_certificate_alias"
certificateKeystorePassword="12345"
type="RSA" />
</SSLHostConfig>
</Connector>

将私钥与证书保存在同一存储区并不是最佳实践。您可以将证书放入一个文件(该文件不 protected 且易于访问)以及另一个的私钥(用密码加密和保护)。那么配置将如下所示:

    <Connector
port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="25"
SSLEnabled="true">
<SSLHostConfig>
<Certificate
certificateFile=".../localhost_certificate.cer"
certificateKeyFile=".../localhost_private_key.pkcs8"
certificateKeyPassword="56789"
type="RSA" />
</SSLHostConfig>
</Connector>

称为“cacerts”的文件包含您信任的证书颁发机构的证书。如果您在 Tomcat 上部署某个应用程序,并且该应用程序将通过 SSL/TLS 访问其他某个服务器,那么您将需要建立对该外部服务器的信任。然后,您需要在“cacerts”存储中注册该服务器的证书(或颁发该服务器的某些“上游”CA 的证书)。但就您而言 - 当您只想通过 SSL/TLS 访问 Tomcat 时 - 这是没有必要的。

对于您的问题“我是否需要做一些事情来使其受到信任?”要使其信任谁?:信任在同一主机上运行的浏览器?您在本地网络中的其他主机(计算机、智能手机、其他设备)上运行的浏览器?您不能强制客户端信任您的自签名证书。如果本地网络中的用户通过 HTTPS 访问您的 Tomcat,则每个用户都必须为您的自签名证书显式添加异常(exception)。要使您的 Tomcat 自动受到您在同一主机上运行的浏览器的信任,您可以尝试 mkcert。要让从其他主机访问 Tomcat 的浏览器自动信任您的 Tomcat,您需要将 Tomcat 放到公共(public) Internet、注册域名、获取证书从某个受信任的 CA 获取此域,并通过公共(public) Internet 访问您的 Tomcat。

关于java - 为 Tomcat 配置 SSL 的步骤是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59479181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com