zoukankan      html  css  js  c++  java
  • keytool

    keytool

    一、keytool是java自带的生成数字证书的一种命令工具,KeyStore里面存放3个实体,PrivateKeyEntry,SecretKeyEntry,TrustedCertificateEntry,一个条目就是条目名+实体。其实,密钥库里保存了两类信息,一类是密钥条目,另一类是可信证书条目,而证书里包含实体和公钥keytool命令在jdk安装路  径的位置:/Library/java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/bin

        

    二、java自带的密钥库在$JAVA_HOME/jre/lib/security目录下的cacerts文件

      

    三、keytool命令的参数信息,在安装了jdk环境的pc下输入keytool -help,查看具体参数详解的信息可用keytool 参数 -help来实现

    MBP-de-bitmain:bin bitmain$ keytool -help
    密钥和证书管理工具
    
    命令:
    
     -certreq            生成证书请求
     -changealias        更改条目的别名
     -delete             删除条目
     -exportcert         导出证书
     -genkeypair         生成密钥对
     -genseckey          生成密钥
     -gencert            根据证书请求生成证书
     -importcert         导入证书或证书链
     -importpass         导入口令
     -importkeystore     从其他密钥库导入一个或所有条目
     -keypasswd          更改条目的密钥口令
     -list               列出密钥库中的条目
     -printcert          打印证书内容
     -printcertreq       打印证书请求的内容
     -printcrl           打印 CRL 文件的内容
     -storepasswd        更改密钥库的存储口令

      

    四、常用命令

    1> 生成密钥库:   

    keytool -genkey -v  -keyalg RSA -alias keyAlias -keypass password -storepass password -keystore /Users/bitmain/learndemo/keytool/key.jks   
    
    -v 详细输出
    -alias 处理的条目的别名
    -keyalg 密钥算法名称
    -keypass 密钥口令
    -storepass 密钥库口令
    -keystore 密钥库名称
    -storetype <storetype> 密钥库类型

    如上命令在/Users/bitmain/learndemo/keytool下生成名为key.jks密钥库

    注意:使用需要指列出部分参数,其他参数可通过keytool -genkey -help来查看。keytool -genkey 如果不指定条目的别名,会自动生成一个名为mykey的条目,条目可以理解成证书,storetype有jks,pkcs12两种类型,keyalg包含两种算法RSA,DSA,默认是DSA

        

    2> 查看证书库信息

      keytool -list -v -keystore key.jks 查看证书库信息

      keytool -list -v  -alias  mykey -keystore key.jks  使用别名查看keystore特定条目

      如下图:记录了密钥库类型:jks,密钥库中条目的数量,条目的别名,条目类型(默认添加的条目类型才是privatekeyentry),证书链的长度

          

    3> 导出导入

      keytool -export -alias mykey -keystore /Users/bitmain/learndemo/keytool/key.jks -file publickey.cer  导出密钥库中的证书(包含公钥的证书)

      keytool -certreq -alias mykey -keystore /Users/bitmain/learndemo/keytool/key.jks -file key.csr  // 为存在的keystore生成证书请求文件CSR(Certificate Signing Request证书请求文件) CSR在此不多做介绍

      keytool -import -trustcacerts -alias google -file google.cer -keystore key.jks  // 导入根证书或中级证书到keystore,导入之后可通过keytool -list

    查看密钥库中多了一条别名为google的条目

    4> 查看单个证书

      keytool -printcert -v -file key.cer   // 查看cer证书的内容

      keytool -printcertreq -v -file key.csr  // 查看csr文件的内容

    5> 删除密钥库中的条目、修改密钥库的密码

      keytool -delete -alias google  -keystore key.jks  // 从key.jks密钥库中删除别名为google的条目

      keytool -storepasswd -new new_storepass -keystore key.jks  //  修改密钥库的密码

    五、java自带的密钥库cacerts

      cacerts密钥库和密钥的密码默认是changeit

      //  导入新的CA到信任证书

          keytool -import -trustcacerts -file /path/to/ca/ca.pem -alias CA_ALIAS -keystore $JAVA_HOME/jre/lib/security/cacerts

    六、说明:签发证书与信任证书:PrivateKeyEntry trustedCertEntry

    • KeyStore.PrivateKeyEntry

        存放一个加密的 非对称加密的 私钥, 他还附带一个对应的公钥的证书链

        是可以通过keytool -export命令导出对应证书

    • KeyStore.SecretKeyEntry

        存放一个加密的对称加密的密钥

    • KeyStore.TrustedCertificateEntry

        存放受信任的证书

     

         

        

  • 相关阅读:
    AttributeError: module 'tensorflow' has no attribute 'placeholder'问题
    反转二叉树
    Tensorflow 报错No module named 'tensorflow.examples.tutorials'解决办法
    合并二叉树
    二叉树的最大深度
    数组中的字符串匹配
    分别用js,css,html实现三个不同颜色的文字拼接
    删除回文子序列
    上手Typescript,让JavaScript适用于大型应用开发
    js 空数组是true还是false
  • 原文地址:https://www.cnblogs.com/Kevin00/p/ssl.html
Copyright © 2011-2022 走看看