转/keystore和truststore的区别
keytool是java自带的工具用于产生密钥
keystore可以看成一个放key的库,key就是公钥,私钥,数字签名等组成的一个信息。
truststore是放信任的证书的一个store.
那他们之间有啥关系和联系呢?在一个安全链接的模型中又各自起到什么作用呢?
其实我也没搞太清楚-_-b
我先把目前的理解记下来,以后再慢慢修正
这篇主要针对的是web应用,web应用一般是通过https,ssl来做客户端和server端的链接
就以单向验证为例,服务器端的app server是tomcat
目前比较常用(我感觉是简单)的安全方案是单向验证,也就是说,客户端IE会验证服务器端的身份。这需要在服务器端做一些配置。
1. 在命令行中通过使用keytool在keystore中生成一个key.
这里就有两个概念了,keystore和key
key,存放了数字证书(包括公钥和发布者的数字签名),以及私钥
keystore,可以认为是放key的一个仓库,以文件的形式存在系统中,默认是放在C:\Documents and Settings\user...\下,也可以在命令行中指定路径和文件名
2.将key以数字证书的形式从keystore中导出,数字证书(包括公钥和发布者的数字签名)
3.将数字证书导入到truststore,一般是tomcat所用的JAVA_HOME下的jre\lib\security\cacerts文件
其实,truststore和keystore的性质是一样的,都是存放key的一个仓库,区别在于,truststore里存放的是只包含公钥的数字证书,代表了可以信任的证书,而keystore是包含私钥的。但是具体应用还有待深入研究,这里我还不是非常清楚
4.配置tomcat下的server.xml里相应的ssl端口,这样客户端就可以通过https来访问server了