如何在Linux系统下生成tomcat SSL协议的证书?
如果希望 Tomcat 支持 https,主要的工作是配置 SSL 协议

- 生成安全证书
- 配置tomcat
配置环境:
- Centos 7.6
- Java1.8
- Tomcat 9.0.20
下载软件

[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz

[root@localhost ~]# wget https://download.oracle.com/otn/java/jdk/8u211-b12/478a62b7d4e34b78b671c754eaaf38ab/jdk-8u211-linux-x64.tar.gz?AuthParam=1557925466_c1e8a4be89edbd8384205f446081b390
(该下载地址已失效 请自行在官网复制下载地址)
链接: https://pan.baidu.com/s/1Ezh2Y8fx7EcBMuSURwabgQ 提取码: ux3a
生成安全证书
1. 配置java环境
因为SUN公司提供了制作证书的工具keytool, 在JDK 1.4以后的版本中都包含了这一工具,它的位置为<JAVA_HOME>/bin/keytool
[root@localhost software]# tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/src/
[root@localhost software]# vim /etc/profile
#Java Env
export JAVA_HOME=/usr/src/jdk1.8.0_211
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
使环境变量立即生效,查看JDK的版本;
[root@localhost software]# source /etc/profile
[root@localhost software]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
2.安装Tomcat
解压Tomcat软件包;
[root@localhost software]# tar -zxvf apache-tomcat-9.0.20.tar.gz -C /usr/src
3.生成证书
keytool -genkeypair -alias [user] -keyalg [认证类型] -keystore [file]
常用参数介绍:
-
keytool -genkey:自动使用默认的算法生成公钥和私钥
-
-alias[名称]:给证书取个别名
-
-keyalg:制定密钥的算法,如果需要制定密钥的长度,可以再加上keysize参数,密钥长度默认为1024位,使用DSA算法时,密钥长度必须在512到1024之间,并且是64的整数倍
-
-keystore:参数可以指定密钥库的名称。密钥库其实是存放迷药和证书文件,密钥库对应的文件如果不存在会自动创建。
-
-validity:证书的有效日期,默认是90天
-
-keypass changeit:不添加证书密码
-
-storepass changeit:不添加存储证书的密码
[root@localhost ~]# keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/src/apache-tomcat-9.0.20/conf/.keystore
Enter keystore password: #123456
Re-enter new password:
What is your first and last name?
[Unknown]: yue
What is the name of your organizational unit?
[Unknown]: yue
What is the name of your organization?
[Unknown]: CNCF
What is the name of your City or Locality?
[Unknown]: ShangHai
What is the name of your State or Province?
[Unknown]: SH
What is the two-letter country code for this unit?
[Unknown]: cn
Is CN=yue, OU=yue, O=CNCF, L=ShangHai, ST=SH, C=cn correct?
[no]: yes
Enter key password for <tomcat> #123456
(RETURN if same as keystore password):
Re-enter new password:
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /usr/src/apache-tomcat-9.0.20/conf/.keystore -destkeystore /usr/src/apache-tomcat-9.0.20/conf/.keystore -deststoretype pkcs12".
[root@localhost ~]#
配置tomcat
定位到tomcat的安装目录,找到 /usr/src/apache-tomcat-9.0.20/conf
下的server.xml
文件
修改 server.xml
文件,配置https连接器;
注释掉http连接器
<!--
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
-->
释放掉https连接器
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
修改为如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/.keystore"
type="RSA" certificateKeystorePassword="123456" />
</SSLHostConfig>
</Connector>
浏览器访问8443端口的连接器时,会以加密的方式来访问web服务器,连接器收到浏览器的请求后,会向浏览器出示一份数字证书,浏览器再用数字证书里面的公钥来加密数据, certificateKeystoreFile="conf/.keystore"用来指明密钥库文件的所在路径,服务器从密钥库中提取证书时需要密码,certificateKeystorePassword="123456"指明密钥库的访问密码。(tomcat8及8以下的版本配置的是keystoreFile="conf/.keystore"和keystorePass="123456")
启动Tomcat测试

作者:尘世不扰
链接:https://www.jianshu.com/p/f556fd3c66ca
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了