惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
I
InfoQ
H
Help Net Security
大猫的无限游戏
大猫的无限游戏
L
LangChain Blog
F
Full Disclosure
Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
WordPress大学
WordPress大学
N
Netflix TechBlog - Medium
博客园 - Franky
IT之家
IT之家
K
Kaspersky official blog
Simon Willison's Weblog
Simon Willison's Weblog
C
Cisco Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
PCI Perspectives
PCI Perspectives
V2EX - 技术
V2EX - 技术
P
Proofpoint News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
The Last Watchdog
The Last Watchdog
V
Vulnerabilities – Threatpost
Vercel News
Vercel News
博客园 - 司徒正美
G
Google Developers Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Blog — PlanetScale
Blog — PlanetScale
Help Net Security
Help Net Security
S
Secure Thoughts
有赞技术团队
有赞技术团队
P
Privacy International News Feed
S
Schneier on Security
T
Troy Hunt's Blog
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
H
Heimdal Security Blog
Latest news
Latest news
S
Security @ Cisco Blogs
博客园 - 聂微东
The Hacker News
The Hacker News
B
Blog
Forbes - Security
Forbes - Security
A
About on SuperTechFans
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
罗磊的独立博客
雷峰网
雷峰网

博客园 - 高山流水200808

ubuntu安装HermesAgent接入Nous平台小米大模型和微信通道配置 沈阳2025中考各区各校人数估算 沈阳2025公办普高率分析 思科Cisco ASA5506-x防火墙内部用户无法使用PPTP连接到VPN - 高山流水200808 专利事务所信息Python爬取 对CSDN的理性吐槽 CSDN博客已经打不开了 大连交大教务一键教学评价 apache2.4+tomcat8+jk1.2.40集群配置 使用Fiddle监听HTTPS网页 证书吊销 window下Apache-http-server(httpd-2.4.12)安装与配置 tomcat7.0.55配置HTTP强制跳转到HTTPS CentOS6.6升级openssl到1.0.2a openssl生成证书链多级证书 tomcat7.0.55配置单向和双向HTTPS连接(二) Widows下利用OpenSSL生成证书 tomcat7.0.55配置单向和双向HTTPS连接 HTTP/1.1标准请求方法和状态码
KeyStore和TrustStore
高山流水200808 · 2015-05-13 · via 博客园 - 高山流水200808

笔者的这篇文章参考了http://docs.oracle.com/cd/E19509-01/820-3503/ggfgo/index.html

KeyStore和TrustStore在很多HTTPS双向配置的文章中基本没有明白的,可能是因为当前的HTTPS网站太少,得不到重视,都是照着别人的抄一遍,然后运行一下。

KeyStore是服务器的密钥存储库,存服务器的公钥私钥证书

TrustStore是服务器的信任密钥存储库,存CA公钥,但有一部分人存的是客户端证书集合,这样并不合适

下面是几个常见的错误

1.KeyStore和TrustStore做成同一个JKS文件或PKCS12文件。通过导入客户端证书来实现验证客户端证书。实际生产中并不能这么做,客户端有成千上万个,你不可能都去导吧。

2.openssl生成CA、server、client证书,用同样的方法转成PKCS12文件,KeyStore指定server.p12,TrustStore指定CA.p12、浏览器证书个人存储区存client.p12,受信任的根证书颁发机构存CA.p12,总体思路是对的,但是CA这里这里绝对不能将私钥也导入到PKCS12中,一个正常的CA要是把CA私钥泄露了那不就惨了。

下面进入主题

一、生成JKS格式的KeyStore

JKS与其他密钥存储可有一个区别就是,不仅密钥存储库可以设置密码,并且里面的条目也可以设置密码,条目如果不设置密码默认与密钥库密码一致,条目可以存证书、密钥对,但是私钥不能直接导出
1.生成密钥库

不能单纯的生成一个密钥库,生成密钥库的时候必须同时生成一个条目
下面这个命令在当前工作目录生成了一个密钥库文件clientkeystore,里面存储了一个别名为client的密钥对

keytool -keystore clientkeystore -genkey -alias client

生成的时候提示:您的名字与姓氏是什么?(What is your first and last name?)
这一步填服务器的域名即可,必须填

2.生成证书请求文件

根据client密钥对生成证书请求文件,这个文件client.csr用于CA签名

keytool -keystore clientkeystore -certreq -alias client -keyalg rsa -file client.csr

比较常见的CA有:http://www.verisign.com

如果签署的证书在CA证书链中,那么导入cer文件即可,如果不在证书链中(比如我们自己创建的CA),你就需要导入CA证书文件

3.导入CA证书文件

下面这个命令用于导入CA证书文件

keytool -import -keystore clientkeystore -file CARoot.cer -alias theCARoot

4.导入签名后的证书文件

如果CA对client.csr签名了,那么你会得到一个client.cer的证书文件,下面你可以导入这个签名后的证书文件

keytool -import -keystore clientkeystore -file client.cer -alias client

二、生成PKCS12格式的KeyStore

JKS格式的密钥存储库不能导出私钥,这是个缺陷,下面我们来看PKCS12格式
下面都是用openssl工具来生成

下面这个命令是将pem格式的私钥mykey.pem.txt与pem格式的证书mycertificate.pem.txt合并成一个文件mykeycertificate.pem.txt

cat mykey.pem.txt mycertificate.pem.txt>mykeycertificate.pem.txt

将上面合并的文件作为一个条目存储pkcs12存储库中,生成过程中必须输入密码

openssl pkcs12 -export -in mykeycertificate.pem.txt -out mykeystore.pkcs12 -name myAlias -noiter -nomaciter

三、生成TrustStore

命令

keytool -import -file C:\cascerts\firstCA.cert -alias firstCA -keystore myTrustStore

如果是多级CA,可能还需要导入secondCA和thirdCA