Tomcat搭建https并与APR模式兼容

前言

当前环境:Ubuntu14 server 64位

Jdktomcat都已安装成,并且tomcat以配置APR运行模式

 

生成https证书

1、Keytool是jdk自带的证书管理工具。

2、证书生成

keytool -genkey -alias myserver -keyalg RSA -keystore my.keystore -dname "CN=192.168.5.244, OU=192.168.5.244, O=192.168.5.244, L=HB, ST=WH, C=CN" -keypass 123456 -storepass 123456 -validity 36500

参数介绍

-genkey:表示要创建一个新的秘钥

-alias:证书别名,每个keystore都关联一个别名,不区分大小写。

-keyalg:使用的加密算法,这里是RSA

-keystore:秘钥保存的目录文件,不写目录路径的话生成在当前目录。

-dname:秘钥的识别名

CN名称一般填写服务IP或域名

OU组织单位,随便填,这里写IP。

O组织名,可随便填,这里写IP。

L城市名,省会名

ST名,当前所在城市名

C国家名CN表示中国。

-keypass:私有秘钥的密码

-storepass:存取密码

-validity:秘钥有效期,36500表示100,默认90

tomcat不需要以APR模式运行,只需修改tomcat/conf/server.xml文件

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"               

maxThreads="150" SSLEnabled="true" scheme="https" secure="true"               

clientAuth="false" sslProtocol="TLS" keystoreFile="my.keystore" keystorePass="123456" />

 

 

同时修改tomcat/conf/web.xml文件(在</welcome-file-list>标签后加入以下信息

<login-config>  

         <auth-method>CLIENT-CERT</auth-method>  

        <realm-name>Client Cert Users-only Area</realm-name>  

   </login-config>  

   <security-constraint>  

      <web-resource-collection >  

         <web-resource-name >SSL</web-resource-name>  

         <url-pattern>/*</url-pattern>  

      </web-resource-collection>  

      <user-data-constraint>  

         <transport-guarantee>CONFIDENTIAL</transport-guarantee>  

      </user-data-constraint>  

   </security-constraint>

配置APR模式证书

APR模式实际上就是调用Apache底层的http服务,所以https方面,APRApache一样需要采用OpenSSL。需要一个cer证书文件和一个key私钥文件

1、 导出cer证书文件:

keytool -export -alias myserver -keystore my.keystore -file mycerts.cer -storepass 123456

2、 获取私钥文件:

2.1、把keystore转换成为pkcs12格式

keytool -importkeystore -srckeystore my.keystore -destkeystore my.p12 -deststoretype PKCS12

2.2、使用openssl导出私钥:

openssl pkcs12 -in my.p12 -out myprivKey.pem –nodes

至此我们需要的两个文件分别是mycerts.cer证书文件和myprivKey.pem私钥文件,把两个文件拷贝到tomcat根目录。

然后修改tomcat/conf/server.xml文件

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"

            connectionTimeout="20000"

            maxThreads="500"

            minSpareThreads="150"

            enableLookups="false"

            disableUploadTimeout="true"

            acceptCount="300"

            compression="on" compressionMinSize="2048"

    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

            SSLEnabled="true" scheme="https" secure="true"

            clientAuth="false" sslProtocol="TLS"

            SSLCertificateFile="/usr/local/tomcat/mycerts.cer"

            SSLCertificateKeyFile="/usr/local/tomcat/myprivKey.pem"/>

注意” SSLCertificateFile”和” SSLCertificateKeyFile”配置绝对路径

然后重启tomcat,查看日志打印:

 

 

额外备注

1、 cer证书导入JVM的命令:

keytool -import -trustcacerts -alias myserver -keystore "$JAVA_HOME/jre/lib/security/cacerts" -file mycerts.cer -storepass 123456

2、 查看JVM中是否存在此别名的证书命令:

keytool -list -v -alias myserver -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass 123456

3、 删除JVM中此别名的证书命令:

keytool -delete -alias myserver -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass 123456

 

 

 

posted @ 2020-08-14 10:33  ZL_WJZF  阅读(297)  评论(0编辑  收藏  举报