LOADING

加载过慢请开启缓存 浏览器默认开启

2024/5/5

Tomcat配置HTTPS实现双向认证

这几天写应用密码学实验写到人傻了……

用到的资源:链接: https://pan.baidu.com/s/1IrFwVIPpc-bAeYQ5R07dxg 提取码: abcd

  1. 使用openssl生成ca证书并颁发证书的步骤以及运行结果

#ca操作

创建ca私钥

openssl genrsa -out ca\ca-key.pem 1024

image-20231210154748562

创建证书请求

openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem -config openssl.cnf

image-20231210154810696

自签署证书

openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650

image-20231210154821150

打印证书的内容

openssl x509 -in ca/ca-cert.pem -noout -text

image-20231210154831244

打印证书的序列号

openssl x509 -in ca/ca-cert.pem -noout -serial

image-20231210154844060

导出证书格式为p12

openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12

image-20231210154851167

#下面的为server

创建server私钥

openssl genrsa -out server/server-key.pem 1024

image-20231210154900590

server创建证书请求

openssl req -new -out server/server-req.csr -key server/server-key.pem -config openssl.cnf

image-20231210154914512

CA为server签署证书

openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650

image-20231210154938589

openssl x509 -in server/server-cert.pem -inform PEM -out server/server-cert.der -outform DER

image-20231210154946222

导出证书格式为p12

openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12

image-20231210154958635

#下面的为client

创建server私钥

openssl genrsa -out client/client-key.pem 1024

image-20231210155006790

client创建证书请求

openssl req -new -out client/client-req.csr -key client/client-key.pem -config openssl.cfg

image-20231210155019258

CA为client签署证书

openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650

image-20231210155031917

导出证书格式为p12

openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12

image-20231210155042443

将证书导出成浏览器支持的.p12格式:

openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client_err.p12

image-20231210155055765

生成客户端证书导出成浏览器支持的.p12格式(用于导入浏览器):

openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out client/client.p12

image-20231210155109876

根据ca证书生成jks文件

keytool -keystore D:/OpenSSL-Win64/bin/jks/truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file D:/OpenSSL-Win64/bin/ca/ca-cert.pem

image-20231210155121695

  1. 在网站中使用PKI,配置网站的安全连接https访问的步骤以及效果截图

接下来的内容建议在虚拟机做:

安装tomcat8.0和JavaSE8环境

进入“设置”->“系统”->“关于”->“高级系统设置”->“环境变量”

在“系统变量”中新增变量“JAVA_HOME”,值为JavaSE8安装的地址如“C:\Program Files\Java\jdk1.8.0_331”

编辑Path变量,新增变量“%CATALINA_HOME%\bin”

将“server.p12”和“truststore.jks”放在Tomcat的根目录,“server-cert.pem”和“server-key.pem”放在bin目录下

配置cof目录下的“server.xml”,修改为下图所示,“root”为生成“server.p12”时的密码,“222222”为生成“truststore.jks”时的密码

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
    <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS"
    keystoreFile="server.p12"
    keystorePass="root" 
    keystoreType="PKCS12"
    truststoreFile="truststore.jks"
    truststorePass="222222" 
    truststoreType="JKS"
    SSLCertificateFile="../bin/server-cert.pem"
    SSLCertificateKeyFile="../bin/server-key.pem" 
 />

保存在bin目录下启动“startup.bat”

image-20231210163650004

访问https://localhost,https连接显示不安全,这时需要把证书导入到浏览器中

img

在受信任的跟证书颁发机构导入ca的证书“ca.p12.crt”

img

img

输入生成证书时的密码“root”,一直选择下一步,然后安装证书

img

相同步骤,在“个人”中导入client的证书“client.p12.crt”

img

再次访问https://192.168.145.133/ (localhost的IP),选择证书即可

img