Java证书工具keytool用法总结

Java证书工具keytool用法总结Keytool 简单介绍 keytool 是个密钥和证书管理工具 它使用户能够管理自己的公钥 私钥对及相关证书 用于 通过数字签名 自我认证 用户向别的用户 服务认证自己 或数据完整性以及认证服务 在 JDK nbsp 1 4 以后的版本中都包含了这一工具 它的位置为 JAVA HOME bin keytool exe keytool 用法说明使用 keytool 工具时可以使用如下命令 各个 JDK 版本

Keytool简单介绍

keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。在JDK 1.4以后的版本中都包含了这一工具,它的位置为“%JAVA_HOME%\bin\keytool.exe”。

keytool用法说明

使用keytool工具时可以使用如下命令(各个JDK版本命令会有差异但会向下兼容,本例使用JDK1.8)

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

要了解某个命令的参数可以使用keytool –command_name –help来获取。例如:使用keytool –genkeypair –help可以查看genkeypair命令的参数说明:

C:\Users\Administrator>keytool -genkeypair -help keytool -genkeypair [OPTION]... 生成密钥对 选项: -alias 
  
    要处理的条目的别名 -keyalg 
   
     密钥算法名称 -keysize 
    
      密钥位大小 -sigalg 
     
       签名算法名称 -destalias 
      
        目标别名 -dname 
       
         唯一判别名 -startdate 
        
          证书有效期开始日期/时间 -ext 
         
           X.509 扩展 -validity 
          
            有效天数 -keypass 
           
             密钥口令 -keystore 
            
              密钥库名称 -storepass 
             
               密钥库口令 -storetype 
              
                密钥库类型 -providername 
               
                 提供方名称 -providerclass 
                
                  提供方类名 -providerarg 
                 
                   提供方参数 -providerpath 
                  
                    提供方类路径 -v 详细输出 -protected 通过受保护的机制的口令 使用 "keytool -help" 获取所有可用命令 
                   
                  
                 
                
               
              
             
            
           
          
         
        
       
      
     
    
  

有许多命令使用的参数是有默认值的,使用命令时可以不指定,以”-genkeypair”命令为例:

The following examples show the defaults for various option values. -alias "mykey" -keyalg "DSA" (when using -genkeypair) "DES" (when using -genseckey) -keysize 2048 (when using -genkeypair and -keyalg is "RSA") 1024 (when using -genkeypair and -keyalg is "DSA") 256 (when using -genkeypair and -keyalg is "EC") 56 (when using -genseckey and -keyalg is "DES") 168 (when using -genseckey and -keyalg is "DESede") -validity 90 -keystore 
  
    -storetype 
   
     -file stdin (if reading) stdout (if writing) -protected false -sigalg "SHA1withDSA" (when the underlying private key is of type DSA) "SHA256withRSA" (when the underlying private key is of type RSA) "SHA256withECDSA" (when the underlying private key is of type EC) 
    
  

创建密钥库和密钥条目

说明:秘钥库是存储一个或多个密钥条目的文件,每个密钥条目应该以一个别名标识,它包含密钥和证书相关信息。

如果使用”keytool -genkeypair”命令生成密钥条目,则会生成一个密钥对(公钥和相关私钥)并将公钥包装到X.509 v3自签名证书中,该证书存储为单个元素证书链,此证书链和私钥存储在以别名标识的密钥库条目中,条目类型为PrivateKeyEntry。

如果使用”keytool -genseckey”命令生成密钥条目,则会生成一个密钥并将其存储在以别名标识的密钥库条目中,条目类型为SecretKeyEntry。

下面以”keytool -genkeypair”命令为例,创建一个新的密钥库并生成一个名为”www.bo.org”的条目。

cmd命令:

keytool -genkeypair -alias www.bo.org -keyalg RSA -keystore d:\keystore\bo.keystore -storetype pkcs12

参数说明:

-genkeypair:生成一对非对称密钥并将公钥包装到X.509 v3自签名证书中;

-alias:指定密钥条目的别名,该别名是公开的;

-keyalg:指定加密算法,本例中的采用通用的RSA加密算法;

-keystore:指定密钥库的路径及名称,若密钥库不存在则创建。若不指定则默认在操作系统的用户目录下生成一个”.keystore”的文件;

-storetype:指定密钥库的类型,如果不指定,默认是JKS。如果创建默认类型密钥库,命令行会提示转化为pkcs12类型,所以这里在创建时指定;

输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [Unknown]: www.bo.org 您的组织单位名称是什么? [Unknown]: xinwei 您的组织名称是什么? [Unknown]: xinwei 您所在的城市或区域名称是什么? [Unknown]: bj 您所在的省/市/自治区名称是什么? [Unknown]: bj 该单位的双字母国家/地区代码是什么? [Unknown]: cn CN=www.bo.org, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn是否正确? [否]: y 

注意:

1、如果指定的密钥库是第一次创建,则必须在创建时初始化一个条目

2、密钥库的密码至少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等

3、”名字与姓氏”应该是输入域名,而不是我们的个人姓名,其他的可以不填

4、如果创建默认类型(JKS)的密钥库,则可附加”-keypass”参数指定条目的密钥口令,如果没有指定则会在最后一步提示”输入该条目的密钥口令,如果与密钥库口令相同按回车”,一般设为与密钥库口令相同。如果创建PKCS12类型的密钥库,则会忽略条目的密钥口令相关参数,因为PKCS12不支持设置密钥库条目密码,默认它与密钥库密码一致。

执行完上述命令后,在操作系统的指定目录下生成了一个”bo.keystore”的文件。

查看密钥库信息

示例:查看名为bo.keystore的密钥库信息

 cmd命令:

keytool -list -v -keystore D:\keystore\bo.keystore 输入密钥库口令: 密钥库类型: JKS 密钥库提供方: SUN 您的密钥库包含 1 个条目 别名: www.bo.org 创建日期: 2019-2-17 条目类型: PrivateKeyEntry 证书链长度: 1 证书[1]: 所有者: CN=www.bo.org, OU=www.bo.org, O=xinwei, L=xinwei, ST=bj, C=bj 发布者: CN=www.bo.org, OU=www.bo.org, O=xinwei, L=xinwei, ST=bj, C=bj 序列号: 53e1769 有效期为 Sun Feb 17 21:42:31 CST 2019 至 Sat May 18 21:42:31 CST 2019 证书指纹: MD5: D3:4B:91:FE:0D:08:77:D2:AC:8D:65:10:F1:26:30:2F SHA1: CB:43:4E:B5:03:5B:FC:60:FA:DC:BF:EC:02:E1:FA:C8:9C:53:D4:FE SHA256: 5D:44:89:D4:FF:1A:70:45:67:2D:3D:14:11:72:61:1D:D3:9A:EA:01:4B: 43:FD:38:F6:A9:38:B8:78:7D:53:3E 签名算法名称: SHA256withRSA 主体公共密钥算法: 2048 位 RSA 密钥 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: C6 AB A5 21 DC 68 97 79 91 5C D1 0D A3 3A C4 DA ...!.h.y.\...:.. 0010: 64 F7 73 3A d.s: ] ] * *

 导出密钥库条目证书

示例:将密钥库bo.keystore中别名为www.bo.org条目的相关信息以及公钥导出到一个数字证书文件bo.crt中

cmd命令:

keytool -exportcert -keystore d:\keystore\bo.keystore -alias www.bo.org -file d:\keystore\bo.crt 输入密钥库口令: 存储在文件 
  
    中的证书 
  

 运行结果:在操作系统的指定目录下生成了一个”bo.crt”的文件,注意该证书文件不包含私钥。

导入信任证书到密钥库

示例:将信任证书test.crt以别名”test”导入到密钥库bo.keystore中

cmd命令:

keytool -importcert -file D:\keystore\test.crt -alias test -keystore D:\keystore\bo.keystore 输入密钥库口令: 所有者: CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn 发布者: CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn 序列号: c3cd021 有效期为 Sun Feb 17 21:44:45 CST 2019 至 Sat May 18 21:44:45 CST 2019 证书指纹: MD5: 61:BF:F3:13:EE:CB:7E:41:9B:1C:CD:C9:AC:34:6F:62 SHA1: E5:C4:5A:22:4A:E2:39:2F:D1:8F:75:9F:4F:D5:94:20:EB:00:A9:A8 SHA256: F2:6C:35:7E:07:F1:F3:7E:13:8D:A3:13:3E:34:6E:D9:D4:BF:FA:53:29: 8F:84:71:27:DC:DB:0A:26:2F:F7:1A 签名算法名称: SHA256withRSA 主体公共密钥算法: 2048 位 RSA 密钥 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 52 32 69 80 EF C3 A3 7B FF A8 26 11 79 F5 65 1A R2i.......&.y.e. 0010: 98 56 37 D5 .V7. ] ] 是否信任此证书? [否]: y 证书已添加到密钥库中

导入test.crt证书后,查看密钥库bo.keystore信息,新增一个”test”条目:

keytool -list -v -keystore D:\keystore\bo.keystore 输入密钥库口令: 密钥库类型: JKS 密钥库提供方: SUN 您的密钥库包含 2 个条目 别名: www.bo.org 创建日期: 2019-2-17 条目类型: PrivateKeyEntry 证书链长度: 1 证书[1]: 所有者: CN=www.bo.org, OU=www.bo.org, O=xinwei, L=xinwei, ST=bj, C=bj 发布者: CN=www.bo.org, OU=www.bo.org, O=xinwei, L=xinwei, ST=bj, C=bj 序列号: 53e1769 有效期为 Sun Feb 17 21:42:31 CST 2019 至 Sat May 18 21:42:31 CST 2019 证书指纹: MD5: D3:4B:91:FE:0D:08:77:D2:AC:8D:65:10:F1:26:30:2F SHA1: CB:43:4E:B5:03:5B:FC:60:FA:DC:BF:EC:02:E1:FA:C8:9C:53:D4:FE SHA256: 5D:44:89:D4:FF:1A:70:45:67:2D:3D:14:11:72:61:1D:D3:9A:EA:01:4B: 43:FD:38:F6:A9:38:B8:78:7D:53:3E 签名算法名称: SHA256withRSA 主体公共密钥算法: 2048 位 RSA 密钥 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: C6 AB A5 21 DC 68 97 79 91 5C D1 0D A3 3A C4 DA ...!.h.y.\...:.. 0010: 64 F7 73 3A d.s: ] ] * * 别名: test 创建日期: 2019-2-17 条目类型: trustedCertEntry 所有者: CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn 发布者: CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn 序列号: c3cd021 有效期为 Sun Feb 17 21:44:45 CST 2019 至 Sat May 18 21:44:45 CST 2019 证书指纹: MD5: 61:BF:F3:13:EE:CB:7E:41:9B:1C:CD:C9:AC:34:6F:62 SHA1: E5:C4:5A:22:4A:E2:39:2F:D1:8F:75:9F:4F:D5:94:20:EB:00:A9:A8 SHA256: F2:6C:35:7E:07:F1:F3:7E:13:8D:A3:13:3E:34:6E:D9:D4:BF:FA:53:29: 8F:84:71:27:DC:DB:0A:26:2F:F7:1A 签名算法名称: SHA256withRSA 主体公共密钥算法: 2048 位 RSA 密钥 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 52 32 69 80 EF C3 A3 7B FF A8 26 11 79 F5 65 1A R2i.......&.y.e. 0010: 98 56 37 D5 .V7. ] ] * *

注:test.crt是由另一个密钥库test.keystore生成的证书,将其导入到密钥库bo.keystore时指定的条目别名不能与密钥库中已存在的条目别名重复(导入签发证书除外),一般与导出该证书的密钥库条目别名相同,此时的导入条目会以信任证书的形式保存,条目类型为 trustedCertEntry。

尝试将证书test.crt以别名”www.bo.org”导入到密钥库bo.keystore中,提示操作非法:

keytool -importcert -file D:\keystore\test.crt -alias www.bo.org -keystore D:\keystore\bo.keystore 输入密钥库口令: keytool 错误: java.lang.Exception: 回复中的公共密钥与密钥库不匹配

打印证书内容

示例:打印密钥库bo.keystore中别名为www.bo.org条目导出的证书bo.crt

cmd命令:

keytool -printcert -v -file d:\keystore\bo.crt 所有者: CN=www.bo.org, OU=www.bo.org, O=xinwei, L=xinwei, ST=bj, C=bj 发布者: CN=www.bo.org, OU=www.bo.org, O=xinwei, L=xinwei, ST=bj, C=bj 序列号: 53e1769 有效期为 Sun Feb 17 21:42:31 CST 2019 至 Sat May 18 21:42:31 CST 2019 证书指纹: MD5: D3:4B:91:FE:0D:08:77:D2:AC:8D:65:10:F1:26:30:2F SHA1: CB:43:4E:B5:03:5B:FC:60:FA:DC:BF:EC:02:E1:FA:C8:9C:53:D4:FE SHA256: 5D:44:89:D4:FF:1A:70:45:67:2D:3D:14:11:72:61:1D:D3:9A:EA:01:4B: 43:FD:38:F6:A9:38:B8:78:7D:53:3E 签名算法名称: SHA256withRSA 主体公共密钥算法: 2048 位 RSA 密钥 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: C6 AB A5 21 DC 68 97 79 91 5C D1 0D A3 3A C4 DA ...!.h.y.\...:.. 0010: 64 F7 73 3A d.s: ] ]

注:也可以使用 -sslserver ip:port 的参数,直接从网络上打印出某个 ssl server 提供的证书的内容 。

删除密钥库条目

示例:删除密钥库bo.keystore中别名为test的证书条目

cmd命令:

keytool -delete -keystore D:\keystore\bo.keystore -alias test 输入密钥库口令:

证书签发与导入

这个过程涉及到3个命令:

-certreq、-gencert、-importcert

1)机构A使用certreq命令生成一个证书签名请求文件CSR(certificate sign request)并将其发送给机构B;

2)机构B接收到这个请求后,使用gencert命令签发证书,会生成一个证书或者证书链;

3)机构A接收到响应,使用importcert命令将签发证书导入到keystore中;

示例:将密钥库test.keystore签名的证书导入到密钥库bo.keystore中

首先创建test.keystore密钥库

keytool -genkeypair -alias test -keyalg RSA -keystore d:\keystore\test.keystore -storetype pkcs12 输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什么? [Unknown]: test 您的组织单位名称是什么? [Unknown]: xinwei 您的组织名称是什么? [Unknown]: xinwei 您所在的城市或区域名称是什么? [Unknown]: bj 您所在的省/市/自治区名称是什么? [Unknown]: bj 该单位的双字母国家/地区代码是什么? [Unknown]: cn CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn是否正确? [否]: y 

生成证书签名请求文件CSR

keytool -certreq -alias www.bo.org -keystore d:\keystore\bo.keystore -file d:\keystore\cert.csr 输入密钥库口令:

解释:将条目别名为 www.bo.org 的公钥和一些个人信息从密钥库 bo.keystore 文件中导出,作为证书请求文件。

签发证书

keytool -gencert -infile d:\keystore\cert.csr -outfile d:\keystore\test_to_bo.crt -alias test -keystore d:\keystore\test.keystore 输入密钥库口令: 

解释:使用密钥库test.keystore中别名为 test 的条目私钥为 cert.csr 签发证书,并保存到 test_to_bo.crt 文件中。

 导入签发证书到密钥库

keytool -importcert -file D:\keystore\test_to_bo.crt -alias www.bo.org -keystore D:\keystore\bo.keystore 输入密钥库口令: keytool 错误: java.lang.Exception: 无法从回复中建立链

解释:将签发证书 test_to_bo.crt 更新到已存在别名 ww.bo.org 的密钥库 bo.keystore 文件中

命令行提示错误”无法从回复中建立链”,这是因为在更新被签发证书之前,一定要先将签发证书的机构的信任证书导入到密钥库文件,即将密钥库test.keystore的证书以其相应的别名导入到密钥库bo.keystore中。

导出test.keystore的信任证书:

keytool -exportcert -keystore d:\keystore\test.keystore -alias test -file d:\keystore\test.crt 输入密钥库口令: 存储在文件 
  
    中的证书 
  

将信任证书test.crt以其别名”test”导入到密钥库bo.keystore:

keytool -importcert -file D:\keystore\test.crt -alias test -keystore D:\keystore\bo.keystore 输入密钥库口令: 所有者: CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn 发布者: CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn 序列号: c3cd021 有效期为 Sun Feb 17 21:44:45 CST 2019 至 Sat May 18 21:44:45 CST 2019 证书指纹: MD5: 61:BF:F3:13:EE:CB:7E:41:9B:1C:CD:C9:AC:34:6F:62 SHA1: E5:C4:5A:22:4A:E2:39:2F:D1:8F:75:9F:4F:D5:94:20:EB:00:A9:A8 SHA256: F2:6C:35:7E:07:F1:F3:7E:13:8D:A3:13:3E:34:6E:D9:D4:BF:FA:53:29: 8F:84:71:27:DC:DB:0A:26:2F:F7:1A 签名算法名称: SHA256withRSA 主体公共密钥算法: 2048 位 RSA 密钥 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 52 32 69 80 EF C3 A3 7B FF A8 26 11 79 F5 65 1A R2i.......&.y.e. 0010: 98 56 37 D5 .V7. ] ] 是否信任此证书? [否]: y 证书已添加到密钥库中

将签发证书test_to_bo.crt以别名”www.bo.org”导入到密钥库bo.keystore:

keytool -importcert -file D:\keystore\test_to_bo.crt -alias www.bo.org -keystore D:\keystore\bo.keystore 输入密钥库口令: 证书回复已安装在密钥库中

此时,密钥库bo.keystore中别名为www.bo.org条目的自签名证书已被更新为由密钥库test.keystore签名的签发证书:

keytool -list -v -keystore D:\keystore\bo.keystore 输入密钥库口令: 密钥库类型: JKS 密钥库提供方: SUN 您的密钥库包含 2 个条目 别名: www.bo.org 创建日期: 2019-2-17 条目类型: PrivateKeyEntry 证书链长度: 2 证书[1]: 所有者: CN=www.bo.org, OU=www.bo.org, O=xinwei, L=xinwei, ST=bj, C=bj 发布者: CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn 序列号: 566b0d42 有效期为 Sun Feb 17 22:05:54 CST 2019 至 Sat May 18 22:05:54 CST 2019 证书指纹: MD5: 50:24:53:0D:9A:42:F7:5E:6E:C6:4D:27:21:B1:D3:4B SHA1: 28:47:47:87:E3:67:C1:88:85:57:A8:DF:1D:34:04:CC:C7:CC:EE:9C SHA256: E2:AC:94:A9:77:4B:5B:F1:DE:76:0E:DE:55:42:B4:12:8A:BD:D6:BA:0E: 9E:8B:3E:08:32:B5:A9:1A:80:13:42 签名算法名称: SHA256withRSA 主体公共密钥算法: 2048 位 RSA 密钥 版本: 3 扩展: #1: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 52 32 69 80 EF C3 A3 7B FF A8 26 11 79 F5 65 1A R2i.......&.y.e. 0010: 98 56 37 D5 .V7. ] ] #2: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: C6 AB A5 21 DC 68 97 79 91 5C D1 0D A3 3A C4 DA ...!.h.y.\...:.. 0010: 64 F7 73 3A d.s: ] ] 证书[2]: 所有者: CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn 发布者: CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn 序列号: c3cd021 有效期为 Sun Feb 17 21:44:45 CST 2019 至 Sat May 18 21:44:45 CST 2019 证书指纹: MD5: 61:BF:F3:13:EE:CB:7E:41:9B:1C:CD:C9:AC:34:6F:62 SHA1: E5:C4:5A:22:4A:E2:39:2F:D1:8F:75:9F:4F:D5:94:20:EB:00:A9:A8 SHA256: F2:6C:35:7E:07:F1:F3:7E:13:8D:A3:13:3E:34:6E:D9:D4:BF:FA:53:29: 8F:84:71:27:DC:DB:0A:26:2F:F7:1A 签名算法名称: SHA256withRSA 主体公共密钥算法: 2048 位 RSA 密钥 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 52 32 69 80 EF C3 A3 7B FF A8 26 11 79 F5 65 1A R2i.......&.y.e. 0010: 98 56 37 D5 .V7. ] ] * * 别名: test 创建日期: 2019-2-17 条目类型: trustedCertEntry 所有者: CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn 发布者: CN=test, OU=xinwei, O=xinwei, L=bj, ST=bj, C=cn 序列号: c3cd021 有效期为 Sun Feb 17 21:44:45 CST 2019 至 Sat May 18 21:44:45 CST 2019 证书指纹: MD5: 61:BF:F3:13:EE:CB:7E:41:9B:1C:CD:C9:AC:34:6F:62 SHA1: E5:C4:5A:22:4A:E2:39:2F:D1:8F:75:9F:4F:D5:94:20:EB:00:A9:A8 SHA256: F2:6C:35:7E:07:F1:F3:7E:13:8D:A3:13:3E:34:6E:D9:D4:BF:FA:53:29: 8F:84:71:27:DC:DB:0A:26:2F:F7:1A 签名算法名称: SHA256withRSA 主体公共密钥算法: 2048 位 RSA 密钥 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 52 32 69 80 EF C3 A3 7B FF A8 26 11 79 F5 65 1A R2i.......&.y.e. 0010: 98 56 37 D5 .V7. ] ] * *

对比最开始生成的密钥库bo.keystore的证书信息可发现,别名为”www.bo.org”条目的证书链已由单个bo.keystore自签名的证书变为2个证书,分别是test.keystore签名的bo.keystore证书、test.keystore的自签名证书。

 

参考资料

http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/keytool.html

http://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.html

Java安全套接字编程以及 keytool 使用最佳实践

Java制作证书的工具keytool用法总结

Java Security:keytool工具使用说明

用keytool创建秘钥库以及导入导出数字证书等操作

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204142.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午8:54
下一篇 2026年3月19日 下午8:54


相关推荐

  • BYTE 和 COleVariant 相互转换

    BYTE 和 COleVariant 相互转换#include     BOOL GetBinaryFromVariant(COleVariant & ovData, BYTE ** ppBuf, unsigned long * pcBufLen)  {    BOOL fRetVal = FALSE;      //Binary data is stored in the variant as an array of

    2022年7月18日
    18
  • 实战 FastCGI「建议收藏」

    实战 FastCGI「建议收藏」
    当网站日益走红,联机人数直线上升而心中暗自窃喜之时,突然客服中心涌来大批反应电话:『网站连不上去』、『按下去等好久画面才出来』、『一直出现ServerTooBusy…』...。看来又要把硬件升级了,但是再加更多的内存,更多CPU、换更贵的机器真的能解决问题吗?有没有比较省钱的方法呢?本文将介绍如何在阿帕契服务器上安装FastCGI的模块,如何设定及使用FastCGI网站应用程序,让你的网站程序在现有的架构上以全速执行。
    ————————

    2022年7月27日
    10
  • html css is图片,isbackground

    html css is图片,isbackgroundisbackground有何作用首先不是为了多线程而多线程,多线程会极大的带来额外的出错的几率。C#中第一个打开窗口的线程是主线程,也是处理UI的线程,最好保持这个线程通畅,即不要有阻塞操作,如Thread.Sleep(10);等这样是不好的。耗时的线程需要打开新的线程来操作。c#可以使用多少个Thread.IsBackground=true我现在有一个程序,有UDP/TCP/US…

    2022年10月16日
    3
  • LNK2001: 无法解析的外部符号的几种情况

    LNK2001: 无法解析的外部符号的几种情况errorLNK2001:无法解析的外部符号无法解析几种情况:1>MSVCRT.lib(MSVCR90.dll):errorLNK2005:_printf已经在libcurl.lib(pqueue.obj)中定义1>MSVCRT.lib(MSVCR90.dll):errorLNK2005:_fprintf已经在libcurl.lib(pem_lib.o…

    2022年6月28日
    38
  • 免费的java开发工具_Java那些最常用的免费开放工具,分享这15个!

    免费的java开发工具_Java那些最常用的免费开放工具,分享这15个!随着Java行业需求增加,Java工程师岗位薪资节节升高,很多小伙伴想要通过快速的方式掌握Java技能。对于初学Java的小伙伴来说了解一些免费的Java开发工具让我们工作、学习更顺畅,那么免费Java开发工具有哪些?针对这点我汇总了一些,可供参考。1、Java免费开发工具:JDK(Java开发工具包)如果你打算用Java开发一些小程序和应用程序,那么首先得给自己准备一个类似于JDK的工具,其中包…

    2022年7月8日
    29
  • 拼多多买手机可靠不_官网买手机可靠吗

    拼多多买手机可靠不_官网买手机可靠吗拼多多,经过短短几年的发展,现如今一跃成为国内排名前三的网店,但因为开店门槛较低,所以导致假冒伪劣商品层出不穷,前些年还被人们戏称为山寨品集中营,因此拼多多给人们留下的印象并不好,那么在拼多多买手机靠谱吗?笔者2019年曾在拼多多帮朋友买过一部iPhoneXSMax,过程如下:9月22号晚上,在拼多多某店铺下单(当时正好有百亿补贴活动)9月23号下午,显示手机已经出单,到了晚上的时候就能看到物流信息了,发的是顺丰9月24号中午,快递送达,取回家以后就进行了拆机,查验三码合一,全.

    2025年6月25日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号