前置知识域

Keytool

Keytool简介

  • Keytool是Java数据证书的管理工具,该工具位于JDK的安装目录下。所有的数字证书采用alias(别名)进行区分,并存入到Keystore中,Keystore中的每个证书包含该条证书的私钥、公钥与对应的数字证书信息。
  • Keystore中的一个Key可以导出为数字证书文件,包括主题信息与对应公钥。
  • Trusted certificate entries为可信任的证书实体,一般只包含信任的公钥。
  • keypass是keystore中key的密码,该密码可以获取公私钥对
  • storepass是kestore的密码,该密码可以获得存储在keystore中的key

Keytool主要命令

  • 在windows下,可以通过命令行keytool使用keytool工具
  • 主要参数说明

    • -genkeypair 表示要创建一个新的密钥
    • -dname 表示密钥的Distinguished Names,表明了密钥的发行者身份,以下是该部分的参数解释:

      • CN=commonName 注:生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhost
      • OU=organizationUnit
      • O=organizationName
      • L=localityName
      • S=stateName
      • C=country
    • -keyalg 使用加密的算法
    • -alias key的别名
    • -keypass key的密码
    • -keystore keystore保存的文件
    • -storepass keystore的密码
    • -validity 该key的有效时间
    • -export 导入一个key
    • -rfc 以RFC样式输出
    • -list 列出keystore中的条目
    • -v 验证key
    • -importkeystore 导入keystore

无CA证书签发

  1. 使用下列命令在命令行中利用keytool工具生成一个key,并存储在E:\server.keystore文件下,该key的别名为server,将作为服务端的key,同时设置keysize大小为1024,validity有效期为365天,key与keystore的密码均为password
keytool -genkey -alias server -keypass password -keyalg RSA -keysize 1024 -validity 365 -keystore E:\server.keystore -storepass password
  1. 使用下列命令导入第一步生成的key,并以二进制形式将公钥输出到E:\server.cer文件
keytool -export -alias server -keystore E:\server.keystore -storepass password -file E:\server.cer
  • 若需要以rfc格式输出,可以采用下列命令
keytool -export -alias server -keystore E:\server.keystore -storepass password -rfc -file E:\server.crt
    • 补充说明,.cer文件一般为二进制文件
    1. 使用下列命令行将先前生成的server key导入到E:\tclient.keystore,作为客户端的信任证书实体
    keytool -import -alias server -file E:\server.cer -keystore E:\tclient.keystore
    1. 若采用无CA的单向认证,上述步骤已完成了Keytool部分的使用,以下步骤将以类似的方法生成客户端的key,并存储在服务端存储信任证书实体的keystore中。
    2. 使用下列命令生成客户端的key,参数说明如第一步所示。
    keytool -genkey -alias client -keypass password -keyalg RSA -keysize 1024 -validity 365 -keystore E:\client.keystore -storepass password
    1. 使用下列命令将客户端的key公钥导出为E:\client.cer,参数说明如第二步所示
    keytool -export -alias client -keystore E:\client.keystore -storepass password -file E:\client.cer
    1. 使用下列命令将客户端的key公钥导入到E:\tserver.keystore作为服务端的信任证书实体
    keytool -import -alias client -file E:\client.cer -keystore E:\tserver.keystore

    含有CA的证书签发

    待补充

    标签: Java, SSL/TLS, KeyTool

    评论已关闭