目录
专业术语
详见,鄙人拙文《PKI/CA/数字签名等相关名词解释》
HTTPS(SSL)通信原理介绍
详见,鄙人拙文《浅谈SSL认证原理》
keytool密钥管理
本篇采用keytool工具进行tomcat的SSL证书配置。所以有必要先介绍一下keytool工具。
keytool是JDK自带的密钥管理工具,包括密钥的生成,导出,删除和密码修改等功能。证书的公私钥均存储于密钥仓库中。密钥仓库本质是一个带有口令的数据文件。密钥他库分为:
密钥仓库
密钥项(私钥区)
密钥项 - 存放极为敏感的加密密钥信息,通过口中令方式访问。用于存储PKI体系中的私钥。及其关联的证书链。
可信任密钥库
可信任密钥库 - 用于存储PKI体系中证书的公钥,用于身份识别。适用于数字签名验证。
Tomcat服务器配置SSL证书
SSL配置流程
生成数字证书
#切换到tomcat的bin目录
C:\Users\XS>cd C:\Program Files\Apache Software Foundation\Tomcat
9.0\bin
#生成证书
C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin>keytool -genkey -alias tomcat -keyalg RSA -keypass 123456 -storepass 123456 -keysize 2048 -keystore tomcat.keystore -validity 7300
您的名字与姓氏是什么?
[Unknown]: zh
您的组织单位名称是什么?
[Unknown]: test
您的组织名称是什么?
[Unknown]: tt
您所在的城市或区域名称是什么?
[Unknown]: nj
您所在的省/市/自治区名称是什么?
[Unknown]: js
该单位的双字母国家/地区代码是什么?
[Unknown]: ch
CN=zh, OU=test, O=xs, L=nj, ST=js, C=ch是否正确?
[否]: y
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore tomcat.keystore -destkeystore tomcat.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
命令介绍:
参数 | 描述 |
---|---|
-genkey | 创建密钥仓库,以“.keystore”结尾 |
-alias | 别名 缺省值 mykey} |
-keyalg | 指定密钥的算法(RSA DSA,默认采用DSA) |
-keypass | 私钥的密码,一般设定与storepass一致 |
-storepass | 指定密钥库的密码 |
-keysize | 指定密钥长度 缺省值 1024 |
-keystore | 指定密钥库的名称 |
-validity | 指定证书的有效期 单位天,默认三个月 90 |
根据需要填写证书注册项:您的名字与姓氏是什么?一般填写服务器所使用的域名(例:www.bac.com),其它的根据实际情况填写,也可以直接回车跳过,最后确认,输“Y”。此时会目录下生成tomcat.keystore 文件,如下图:
导出服务端证书公钥
将tomcat.keystore密钥库中的证书公钥进行导出,后缀为.cer的证书公钥,执行命令如下:
keytool -export -alias tomcat -storepass 123456 -file tomcat.cer -keystore tomcat.keystore
注:参数必须为生成tomcat.keystore密钥文件时所指定的别名和密码,否则证书导出失败。执行上述命令之后,生成“tomcat.cer”文件,如下图所示:
导入公钥证书到可信任密钥库
keytool -import -trustcacerts -alias tomcat -storepass 123456 -file tomcat.cer -keystore cacerts
如果有提示,输入Y回车。
命令执行成功后,在bin目录下多出cacerts文件,如下图:
配置Tomcat的SSL端口和证书
打开tomcat/conf/server.xml,添加如下内容:
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="C:/rogram Files/Apache Software Foundation/Tomcat 9.0/conf/tomcat.keystore" keystorePass="123456"
clientAuth="false" sslProtocol="TLS"/>
启动tomcat
启动如果报443端口错误,多半是因为443被其他程序占用了,建议换成444。重启。
或者参考
启动tomcat时提示端口被占用"[HTTP/1.1-443]]失败"
输入https://127.0.0.1回车。
注:443为默认端口,所以在访问时无需输入端口号。