如何用tomcat强制执行https?

时间:2017-09-01 06:50:35

标签: tomcat https

我在tomcat上运行了一个webapp。现在我想强制执行https。我收到了3个文件,我保存在tomcat / conf /:localhost-rsa-cert.pem,localhost-rsa-chain.pem和localhost-rsa-key.pem

我更改了server.xml,因此未注释的连接器如下所示并重新启动了tomcat。我只能使用... com:8080访问我的页面而不是... com:8443。有什么问题?

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
           maxThreads="150" SSLEnabled="true" >
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
    <SSLHostConfig>
        <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                     certificateFile="conf/localhost-rsa-cert.pem"
                     certificateChainFile="conf/localhost-rsa-chain.pem"
                     type="RSA" />
    </SSLHostConfig>
</Connector>

我读到你需要在web.xml中更改一些内容。

1 个答案:

答案 0 :(得分:1)

要默认强制执行https,您需要将以下内容添加到web.xml(这是与server.xml位于同一目录中的根web.xml)。即使用户输入https://www.yoursite.com

,这也会强制将所有请求重定向到http://www.yoursite.com

**

<security-constraint>
 <web-resource-collection>
 <web-resource-name>Protected Context</web-resource-name>
 <url-pattern>/*</url-pattern>
 </web-resource-collection>
 <user-data-constraint>
 <transport-guarantee>CONFIDENTIAL</transport-guarantee>
 </user-data-constraint>
 </security-constraint>

**

但首先您需要正确安装/配置证书,并且需要确保在手动输入https时可以访问应用程序https。

我已按照以下步骤在tomcat 8上安装和配置SSL。

  1. 生成的密钥库运行命令:

    keytool -keysize 2048 -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore

    通过运行命令生成csr文件:

    keytool -certreq -keyalg RSA -alias tomcat -file yourCSR.csr -keystore tomcat.keystore

    在www.godaddy.com上提交CSR请求

  2. 一旦我的请求获得批准,goDaddy就会颁发证书。我已按照以下步骤操作(goDaddy将此指令与cert文件一起发送)。 通过运行以下命令安装根证书:

    <强> keytool -import -alias root -keystore tomcat.keystore -trustcacerts -file [name of the root certificate]

    运行以下命令安装中间证书:

    keytool -import -alias intermed -keystore tomcat.keystore -trustcacerts -file [name of the intermediate certificate] 我的中级证书以.pem

    结尾

    通过运行以下命令将已颁发的证书安装到密钥库中:

    <强> keytool -import -alias tomcat -keystore tomcat.keystore -trustcacerts -file [name of the certificate]

    最后,我将以下内容添加/修改为server.xml并重新启动tomcat服务器。

    <Connector port="80" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="443" />
    
    
    <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true"
       clientAuth="false" sslProtocol="TLS" keystoreFile=".mykeystore" keystorePass="xxxxxx"
       ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,
       TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,
       TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA" />