首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为Tomcat配置SSL的步骤有哪些?

为Tomcat配置SSL的步骤有哪些?
EN

Stack Overflow用户
提问于 2019-12-25 22:09:59
回答 2查看 890关注 0票数 0

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

代码语言:javascript
复制
<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的正确和必要的顺序吗?非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2019-12-27 02:41:16

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

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

您说过有一个现有的.pfx证书。我假设它是一个自签名证书。那么这就是你所需要的。您不需要任何进一步的导入、导出、转换。

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

您的配置如下所示:

代码语言:javascript
复制
    <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包含单个证书。

代码语言:javascript
复制
    <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>

将私钥与证书保存在同一存储区中不是最佳做法。您可以将证书放在一个文件中(该文件不受保护且易于访问),将私钥放到另一个文件中(加密并使用密码进行保护)。则配置如下所示:

代码语言:javascript
复制
    <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。

票数 1
EN

Stack Overflow用户

发布于 2020-01-14 07:19:30

您可以在一个步骤中完成所有这些操作,而不需要使用keytool,使用this web-based tool生成私钥,创建CSR,导入fullchain,将其保存为密钥库文件(现在是P12格式),并显示正确的连接器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59479181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档