tomcat 配置 HTTPS

将pem 转换成 jks

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@vpn conf]# ll *.pem
-rw-r--r-- 1 root root 1999 5月 7 14:03 cert.pem
-rw-r--r-- 1 root root 1686 5月 7 14:03 chain.pem
-rw-r--r-- 1 root root 3686 5月 7 14:03 fullchain.pem
-rw-r--r-- 1 root root 1679 5月 7 14:03 privkey.pem

# 导出.p12格式的证书
[root@vpn conf]# openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out fangwenjun.com.p12 -name fangwenjun.com
Enter Export Password:
Verifying - Enter Export Password:


# 再将证书由.p12格式转换成.jks格式
[root@vpn conf]# keytool -importkeystore -srckeystore fangwenjun.com.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore fangwenjun.com.jks
正在将密钥库 fangwenjun.com.p12 导入到 fangwenjun.com.jks...
输入目标密钥库口令:
再次输入新口令:
输入源密钥库口令:
已成功导入别名 fangwenjun.com 的条目。
已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore fangwenjun.com.jks -destkeystore fangwenjun.com.jks -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
[root@vpn conf]#
[root@vpn conf]# keytool -importkeystore -srckeystore fangwenjun.com.jks -destkeystore fangwenjun.com.jks -deststoretype pkcs12
输入源密钥库口令:
已成功导入别名 fangwenjun.com 的条目。
已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消

Warning:
已将 "fangwenjun.com.jks" 迁移到 Non JKS/JCEKS。将 JKS 密钥库作为 "fangwenjun.com.jks.old" 进行了备份。

配置 server.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/fangwenjun.com.jks"
certificateKeystorePassword = "123123"
type="RSA" />
</SSLHostConfig>
</Connector>

<Engine name="Catalina" defaultHost="www.fangwenjun.com">
<Host name="www.fangwenjun.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">

启动tomcat

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@vpn conf]# ../bin/shutdown.sh
Using CATALINA_BASE: /opt/apache-tomcat-9.0.19
Using CATALINA_HOME: /opt/apache-tomcat-9.0.19
Using CATALINA_TMPDIR: /opt/apache-tomcat-9.0.19/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /opt/apache-tomcat-9.0.19/bin/bootstrap.jar:/opt/apache-tomcat-9.0.19/bin/tomcat-juli.jar
[root@vpn conf]# ../bin/startup.sh
Using CATALINA_BASE: /opt/apache-tomcat-9.0.19
Using CATALINA_HOME: /opt/apache-tomcat-9.0.19
Using CATALINA_TMPDIR: /opt/apache-tomcat-9.0.19/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /opt/apache-tomcat-9.0.19/bin/bootstrap.jar:/opt/apache-tomcat-9.0.19/bin/tomcat-juli.jar
Tomcat started.

效果

强制 HTTP–> HTTPS

在 web.xml 下 </welcome-file-list> 下方添加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<login-config>
    <!-- Authorization setting for SSL -->
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
    <!-- Authorization setting for SSL -->
    <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>

效果