Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为Tomcat配置SSL的步骤是什么?_Java_Tomcat_Ssl Certificate - Fatal编程技术网

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

Java 为Tomcat配置SSL的步骤是什么?,java,tomcat,ssl-certificate,Java,Tomcat,Ssl Certificate,我对在本地计算机上为Tomcat配置SSL有点困惑。首先,我是否需要使用keytool创建新的密钥库?然后我应该将现有的.pfx certicate文件导入到新创建的java keystore.jks文件中吗?最后导出一个新的blabla.pfx文件,并添加一个在443端口上运行的新连接器,如下所示: <Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true"

我对在本地计算机上为Tomcat配置SSL有点困惑。首先,我是否需要使用keytool创建新的密钥库?然后我应该将现有的.pfx certicate文件导入到新创建的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"/>
什么是卡塞特斯?我是否应该创建一个新的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>
    <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>
这意味着.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>
将私钥与证书保存在同一个存储中不是最佳做法。您可以将证书放在一个不受保护且易于访问的文件中 以及另一个加密和密码保护的私钥。然后,配置将如下所示:

    <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>
    <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>
称为CACERT的文件包含您信任的证书颁发机构的证书。如果您在Tomcat上部署了一些应用程序,并且该应用程序将通过SSL/TLS访问其他服务器,那么您需要建立对该外部服务器的信任。然后,您需要在您的cacerts存储中注册该服务器的证书,或者注册颁发证书的某些上游CA的证书。但是在您的情况下——当您只想通过SSL/TLS访问您的Tomcat时——这是不必要的


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

您可以一步完成所有操作,而无需使用keytool,使用它生成私钥,创建CSR,导入完整链,现在将其全部保存为密钥库文件P12格式,并显示了它的正确连接器。

您所说的Java服务器是什么意思?@mentalurg tomcat server一个完全不同的建议:在tomcat前面放置一个反向代理,让它完成SSL操作。为Tomcst配置SSL的步骤有明确的文档记录。