zoukankan      html  css  js  c++  java
  • JDK的KeyTool和KeyStore等加密相关

    Keytool是一个有效的安全钥匙和证书的管理工具.
    Java 中的 keytool.exe (位于JDKBin下)可以用来创建数字证书,所有的数字证书是以一条一条(用别名区别,不区分大小)地存储在证书库(keystore|密钥库)中,证书库中的一条数字证书包含该证书的私钥,公钥, 以及对应的信息。证书库中的一条证书可以导出数字证书文件, 但导出的数字证书文件只包括主体信息和对应的公钥(不含私钥)。
    Keytool把钥匙和证书储存到keystore. keystore默认以文件形式保存, 它有一个访问保护密码.

    关于证书的几个概念:

    证书是一个实体的数字签名, 还包含这个实体的公钥.    实体是你想信任的东西, 可以是一个人, 一个组织, 一个程序, 一台计算机.   

    公钥:是一个详细的实体的数字关联,并有意让所有想同这个实体发生信任关系的其他实体知道. 公钥用来检验签名.

    数字签名:是实体用私钥签名(加密)自己的实体信息后得到的数据. 这条数据可以用实体的公钥来检验签名(解密)以鉴别实体的身份.

    私钥:是一些数字,私钥和公钥组成公钥加密系统的钥匙对. 公钥用来加密数据,私钥用来计算签名. 公钥加密的信息只能由私钥解密,私钥签名的信息只能由公钥检验。

    如下命令生成一个自签名的证书:
    keytool -genkey -dname "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN" -alias myCA -keyalg RSA -keysize 1024 -keystore myCALib -keypass 654321 -storepass 123456 -validity 3650
    该命令将生成一个别名为myCA的自签名证书,证书的密钥对的密码为654321,证书中实体信息为
    "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN",存储在名为myCALib的keystore中(如果没有将自动生成一个),这个keystore的密码为123456,密钥对产生的算法指定为RSA,有效期为10年。

    KeyTool使用举例

    1.生成密钥对,修改密码
    keytool -genkey -alias duke -keypass dukekeypasswd
    这行命令的作用是产生一个新的钥匙对.其中duke为别名,dukekeypasswd为duke别名的密码.
    如果你想修改密码, 可以用:
    keytool -keypasswd -alias duke -keypass dukekeypasswd(旧) -new newpass(新)
    将旧密码dukekeypasswd改为newpass.
    Keytool -keypasswd -alias myCA -keypass 654321 -new newpass -storepass 123456 -keystore myCALib
    更改证书库的密码
    keytool -storepasswd -new 123456 -storepass 789012 -keystore truststore .其中-storepass指定原密码,-new指定新密码。


    2.检查keystore
    keytool -list -v -keystore keystore
    Enter keystore password: your password(输入密码)


    3.输出
    输出keystore的条目duke到文件testkey:
    keytool -export -alias duke -keystore keystore -rfc -file testkey
    系统输出:
    Enter keystore password: your password(输入密码)
    Certificate stored in file
    keytool -export -keystore monitor.keystore -alias monitor -file monitor.cer
    从证书库monitor.keystore中将别名为monitor的证书导出到monitor.cer文件中. 该文件包含证书主体的信息及

    证书的公钥, 但不包括私钥, 可以公开。
    keytool -export -alias myCA -file myCA.cer -keystore myCALib -storepass 123456 -rfc
    从证书库myCALib中将别名为myCA的证书导出到证书文件myCA.cer中。(其中-storepass指定keystore的密码,-rfc指定以可查看编码的方式输出,可省略)。


    4.导入
    导入证书到truststore:
    keytool -import -alias dukecert -file testkey -keystore truststore
    Enter keystore password: your new password(输入truststore新密码)

    keytool -import -alias RapaServer -file Rapa.cert -keystore cacerts
    向Java默认的证书库cacerts导入Rapa.cert
    keytool -import -alias myCA -file myCA.cer -keystore truststore
    如果没有名为truststore的keystore,将自动创建, 将会提示输入keystore的密码


    5.删除keystore条目
    keytool -delete -alias RapaServer -keystore d2aApplet.keystore
    删除d2aApplet.keystore中的RapaServer这一条证书。
    keytool -delete -alias myCA -keystore myCALib

    6.通过证书文件查看证书信息
    keytool -printcert -file myCA.cer

  • 相关阅读:
    adb
    js百分比
    隐私策略
    JSON.parse&JSON.stringify
    MVC内容backgroundimage: url('')问题
    mvc笔记
    winform路径
    配置
    邮件发送的原理
    如何调试Windows服务
  • 原文地址:https://www.cnblogs.com/myJavaEE/p/6861456.html
Copyright © 2011-2022 走看看