keystore 与 trust store 的区别 及 keytool 常用命令
本文为博主原创,未经允许不得转载:
1. key store 与 trust store 区别
2. java 配置 单向认证与双向认证的过程
3. key store 与 trust store 常用命令
4. tomcat , zookeeper 配置 双向认证过程
1. key store 与 trust store 区别
keystore是存储密钥(公钥、私钥)的容器。
keystore和truststore其本质都是keystore。只不过二者存放的密钥所有者不同而已。本质都是相同的文件,只不过约定通过文件名称区分类型以及用途
对于keystore一般存储自己的私钥和公钥,而truststore则用来存储自己信任的对象的公钥。
2. 单向认证与双向认证
单向认证:
单向认证是客户端验证服务端的真伪性,所以需要将服务器端的证书server.crt导出,导出的server.crt就是服务器端的公钥。然后将 server.crt 导入到客户端的 trustore 中。这样服务器就被客户端信任了,连接时客户端使用服务器端的公钥去验证服务器。
双向认证:
服务器的公钥导入到客户端的truststore,客户端的公钥导入到服务器端的truststore中。
客户端请求服务器端,服务器端通过预置有客户端证书的 trust store 验证客户端的证书,如果证书被信任,则验证通过
服务器端响应客户端,客户端通过预置有服务端证书的 trust store 验证服务端的证书,如果证书被信任,则验证通过,完成一个双向认证过程。
java 在jdk 中已经默认在 $JAVA_HOME/lib/security/cacerts 这个文件中预置了常用的 证书
3. key store 与 trust store 常用的命令:
3.1 创建证书
keytool -genkeypair -alias "test1" -keyalg "RSA" -keystore test.keystore.jks
-genkeypair:生成一对非对称密钥;
-alias:指定密钥对的别名,该别名是公开的;
-keyalg:指定加密算法,本例中的采用通用的RAS加密算法;
-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下生成一个".keystore"的文件
3.2 查看 Keystore 的内容
keytool -list -v -keystore test.keystore.jks
3.3 添加一个信任根证书到keystore文件
keytool -import -alias newroot -file root.crt -keystore test.keystore.jks
3.4 导出 jks 的证书文件到指定文件
keytool -export -alias alias_name -keystore test.keystore.jks -rfc -file test.cer
3.5 删除jks 中指定别名的证书
keytool -delete -keystore test.keystore.jks -alias alias_name
4. tomcat 配置 ssl 认证
打开server.xml,找到
<!-- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> -->
这样一段注释,在这段注释下面添加如下一段代码:
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="false" maxThreads="25" port="8443" keystoreFile="D:\developTools\apache-tomcat-idm\tomcat.keystore" keystorePass="111111" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS" />
其中clientAuth=”false”表示是SSL单向认证,即服务端认证,port=”8443”是https的访问端口,keystoreFile="D:\developTools\apache-tomcat-idm\tomcat.keystore"是第一步中生成的keystore的保存路径,keystorePass="111111"是第一步生成的keystore的密码。
为了验证是否已经配置正确,我们可以在浏览器中进行验证。首先启动tomcat,然后在浏览器地址输入栏中输入:https://localhost:8443。会提示网站证书不受信任,需要手动点击确定。