随笔 - 669  文章 - 0  评论 - 56  阅读 - 321万

SSL证书

1生成服务器端证书
keytool -genkeypair -v -alias server -keyalg RSA -validity 3650 -keystore ./server.keystore  -storepass 123456 -keypass 123456 -dname "CN=*.qinghua.net,OU=rm,O=rm,L=gz,ST=gd,C=cn"
keytool -importkeystore -srckeystore ./server.keystore -destkeystore ./server.keystore -deststoretype pkcs12
2导出服务器端证书
keytool -exportcert -alias server  -keystore ./server.keystore  -file ./server.cer  -storepass 123456
3将服务器端证书导入信任证书
keytool -importcert -alias serverca  -keystore ./server_trust.keystore  -file ./server.cer  -storepass 123456

4生成客户端证书
keytool -genkeypair -v -alias client -dname "CN=*.qinghua.net" -keyalg RSA -validity 3650 -keypass 123456 -keystore ./client.p12 -storepass 123456 -storetype PKCS12
5导出客户端证书
keytool -exportcert -alias client -file ./client.cer -keystore ./client.p12 -storepass 123456 -storetype PKCS12
6导入客户端证书到服务器端信任证书库
keytool -importcert -alias clientca  -keystore ./server_trust.keystore  -file ./client.cer  -storepass 123456

7编辑conf/server.xml文件加入如下的配置:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS"
               keystoreFile="${catalina.base}/server.keystore" keystorePass="123456"
               truststoreFile ="${catalina.base}/server_trust.keystore" truststorePass="123456"/>
  • clientAuth为true表示开启SSL双向认证
  • keystoreFile指定服务器端的证书位置
  • truststoreFile指定服务器端信任证书库

8 双击client.p12 导入客户端证书
9 双击server.cer  导入服务器端证书到客户端
openssl pkcs12 -in server.keystore
https://www.qinghua.net:8443/demo1/hello-servlet


java 语言可使用pkcs12  client.p12即可访问;如果要其他语言访问需要转换成pem格式
若服务端要求客户端认证,需要将pfx证书转换成pem格式
openssl pkcs12 -clcerts -nokeys -in cert.pfx -out client.pem    #客户端个人证书的公钥
openssl pkcs12 -nocerts -nodes -in cert.pfx -out key.pem #客户端个人证书的私钥
也可以转换为公钥与私钥合二为一的文件
openssl pkcs12 -in  cert.pfx -out all.pem -nodes                                   #客户端公钥与私钥,一起存在all.pem中
执行curl命令
1、使用client.pem+key.pem
curl -k --cert client.pem --key key.pem https://www.qinghua.net:8443/demo1/hello-servlet
2、使用all.pem
curl -k --cert all.pem  https://www.qinghua.net:8443/demo1/hello-servlet
使用-k,是不对服务器的证书进行检查,这样就不必关心服务器证书的导出问题了。
3 ,服务端CA证书转换(必须要 -k)
penssl x509 -inform der -in server.cer -out ca.pem
curl --cacert ca.pem  --cert client.pem --key key.pem https://www.qinghua.net:8443/demo1/hello-servlet



 

posted on   adolfmc  阅读(140)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2019-12-17 各种UserAgent的列表
2019-12-17 mui
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

点击右上角即可分享
微信分享提示