我对在本地计算机上为Tomcat配置SSL感到有点困惑。首先,我是否需要用keytool创建一个新的keystore?然后我应该将existing.pfx证书文件导入到新创建的java密钥库(.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"/>什么是cacerts?我是否也应该创建一个新的cacerts文件并将其添加到本地服务器?我需要做些什么来让它可信吗?您能解释一下将现有证书添加到本地Tomcat的正确和必要的顺序吗?非常感谢。
发布于 2019-12-27 02:41:16
这取决于..。这取决于您的目标(您是否希望将其配置为尽可能类似于生产环境?您想要考虑性能吗?)以及你所拥有的(例如,你的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包含单个证书。
<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>将私钥与证书保存在同一存储区中不是最佳做法。您可以将证书放在一个文件中(该文件不受保护且易于访问),将私钥放到另一个文件中(加密并使用密码进行保护)。则配置如下所示:
<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>如果您在Tomcat上部署了一些应用程序,且此应用程序将通过SSL/TLS访问其他服务器,那么您将需要建立对外部服务器信任。然后,您需要在您的"cacerts“存储中注册该服务器的证书(或颁发该证书的一些”上游“CA的证书)。
对于你的问题“我应该做些什么来让它可信吗?”让谁信任它?:让你的浏览器信任你在同一主机上运行的浏览器?在本地网络中的其他主机(计算机、智能手机、其他设备)上运行的浏览器?您不能强制客户端信任您的自签名证书。如果您的本地网络中的用户通过HTTPS访问您的Tomcat,则每个用户都必须显式地为您的自签名证书添加例外。要使Tomcat自动信任您在同一主机上运行的浏览器,您可以尝试mkcert。要使从其他主机访问Tomcat的浏览器自动信任您的Tomcat,您需要将Tomcat连接到公共Internet,注册一个域名,从某个受信任的CA获取此域的证书,然后通过公共Internet访问Tomcat。
发布于 2020-01-14 07:19:30
您可以在一个步骤中完成所有这些操作,而不需要使用keytool,使用this web-based tool生成私钥,创建CSR,导入fullchain,将其保存为密钥库文件(现在是P12格式),并显示正确的连接器。
https://stackoverflow.com/questions/59479181
复制相似问题