zoukankan      html  css  js  c++  java
  • 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:developToolsapache-tomcat-idm	omcat.keystore" keystorePass="111111"
    
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
    
    secure="true" sslProtocol="TLS" />

      其中clientAuth=”false”表示是SSL单向认证,即服务端认证,port=”8443”是https的访问端口,keystoreFile="D:developToolsapache-tomcat-idm omcat.keystore"是第一步中生成的keystore的保存路径,keystorePass="111111"是第一步生成的keystore的密码。

      为了验证是否已经配置正确,我们可以在浏览器中进行验证。首先启动tomcat,然后在浏览器地址输入栏中输入:https://localhost:8443。会提示网站证书不受信任,需要手动点击确定。

  • 相关阅读:
    Java 应用性能调优实践
    Java序列化——实现Serializbale接口
    Bootstrap3快速使用
    C语言程序设计_zju——记录1
    《图解密码技术》——记录1
    电脑win10蓝屏,INACCESSIBLE BOOT DEVICE,处理方法
    读书笔记之《如何高效学习》
    读书笔记之《番茄工作法图解》
    读书笔记之《富爸爸与穷爸爸》
    读书笔记之《微习惯》
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/15110465.html
Copyright © 2011-2022 走看看