keytool命令詳解 自簽名證書

keytool命令詳解


最近是又用到了自簽名證書相關的內容,這裏整理下keytool的使用

keytool簡介

Keytool 是一個Java 數據證書的管理工具 ,Keytool 將密鑰(key)和證書(certificates)存在一個稱爲keystore的文件中。
在keystore裏,包含兩種數據:

  1. 密鑰實體(Key entity)——密鑰(secret key)又或者是私鑰和配對公鑰(採用非對稱加密)

  2. 可信任的證書實體(trusted certificate entries)——只包含公鑰

keytool命令詳解

使用下面命令可查看功能

ketytool --help

主要功能如下

 -certreq            生成證書請求
 -changealias        更改條目的別名
 -delete             刪除條目
 -exportcert         導出證書
 -genkeypair         生成密鑰對
 -genseckey          生成密鑰
 -gencert            根據證書請求生成證書
 -importcert         導入證書或證書鏈
 -importpass         導入口令
 -importkeystore     從其他密鑰庫導入一個或所有條目
 -keypasswd          更改條目的密鑰口令
 -list               列出密鑰庫中的條目
 -printcert          打印證書內容
 -printcertreq       打印證書請求的內容
 -printcrl           打印 CRL文件的內容
 -storepasswd        更改密鑰庫的存儲口令

我們從兩條命令中來看一下命令參數

第一條命令:創建證書庫(keystore)幷包含公私鑰 並查看信息

keytool -genkeypair \
        -alias ddssingsong \
        -keyalg RSA \
        -keysize 2048 \
        -keypass 123456 \
        -sigalg SHA256withRSA \
        -dname "cn=www.ddssingsong.com,ou=xxx,o=xxx,l=Beijing,st=Beijing,c=CN" \
        -validity 3650 \
        -keystore ddssingsong.p12 \
        -storetype PKCS12 \
        -storepass 123456

這裏貼上可以複製粘貼的命令

keytool -genkeypair -alias ddssingsong -keyalg RSA -keysize 2048 -keypass 123456 -sigalg SHA256withRSA -dname "cn=ddssingsong,ou=xxx,o=xxx,l=Beijing,st=Beijing,c=CN" -validity 3650 -keystore ddssngong.p12 -storetype PKCS12 -storepass 123456
  • alias產生別名,每個keystore都關聯這一個獨一無二的alias

  • keyalg RSA 此處”RSA“爲密鑰的算法。可以選擇的密鑰算法有:RSA、DSA、EC。

  • keysize 2048 密鑰長度。keysize與keyalg默認對應關係:

    2048 (when using -genkeypair and -keyalg is “RSA”)
    1024 (when using -genkeypair and -keyalg is “DSA”)
    256 (when using -genkeypair and -keyalg is “EC”)
    
  • keypass 指定別名條目的密碼(私鑰的密碼)

  • sigalg 簽名算法

    • keyalg=RSA時,簽名算法有:MD5withRSA、SHA1withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA。
    • keyalg=DSA時,簽名算法有:SHA1withDSA、SHA256withDSA。
    • 此處需要注意:MD5和SHA1的簽名算法已經不安全。
  • dname 在此填寫證書信息

    CN=名字與姓氏/域名,OU=組織單位名稱,O=組織名稱,L=城市或區域名稱,ST=州或省份名稱,C=單位的兩字母國家代碼

  • validity 3650 此處”3650“爲證書有效期天數

  • keystore 創建出的密鑰生成路徑,默認在當前目錄創建證書庫

  • storetype 生成證書類型,可用的證書庫類型爲:JKS、PKCS12等。jdk9以前,默認爲JKS。自jdk9開始,默認爲PKCS12。

  • storepass 指定密鑰庫的密碼(獲取keystore信息所需的密碼),最好與keypass 一致。

查看生成的證書

keytool -list  -v -keystore ddssingsong.p12 -storepass 123456

打印如下

C:\Users\dds\Desktop\ca>keytool -list -v -keystore ddssingsong.p12 -storepass 123456
密鑰庫類型: PKCS12
密鑰庫提供方: SUN

您的密鑰庫包含 1 個條目

別名: ddssingsong
創建日期: 2019-9-11
條目類型: PrivateKeyEntry
證書鏈長度: 1
證書[1]:
所有者: CN=mydomain, OU=xxx, O=xxx, L=Beijing, ST=Beijing, C=CN
發佈者: CN=mydomain, OU=xxx, O=xxx, L=Beijing, ST=Beijing, C=CN
序列號: 291b04d1
有效期爲 Wed Sep 11 09:30:36 CST 2019 至 Sat Sep 08 09:30:36 CST 2029
證書指紋:
         MD5:  3D:75:33:93:1C:BF:07:78:68:8E:54:7B:30:1B:EB:79
         SHA1: 32:F2:6C:1A:F0:A8:9A:E9:92:A2:AF:7F:2D:35:FA:37:FD:28:7C:BD
         SHA256: 0E:1E:7D:2E:CB:57:72:BC:7D:FE:C8:F0:24:48:2A:31:69:B2:D2:F2:2E:BC:03:9A:D4:15:BD:15:BE:5F:5F:2D
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

擴展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 34 44 40 24 BA 6F 5D 7F   0A 45 BE C3 24 BD A7 C8  4D@$.o]..E..$...
0010: 9C 62 8C 9A                                        .b..

有時候需要查看base64的內容

keytool -list  -rfc -keystore ddssingsong.p12 -storepass 123456

打印如下

C:\Users\dds\Desktop\ca>keytool -list  -rfc -keystore ddssingsong.p12 -storepass 123456
密鑰庫類型: PKCS12
密鑰庫提供方: SUN

您的密鑰庫包含 1 個條目

別名: ddssingsong
創建日期: 2019-9-11
條目類型: PrivateKeyEntry
證書鏈長度: 1
證書[1]:
-----BEGIN CERTIFICATE-----
MIIDXzCCAkegAwIBAgIEKRsE0TANBgkqhkiG9w0BAQsFADBgMQswCQYDVQQGEwJD
TjEQMA4GA1UECBMHQmVpamluZzEQMA4GA1UEBxMHQmVpamluZzEMMAoGA1UEChMD
eHh4MQwwCgYDVQQLEwN4eHgxETAPBgNVBAMTCG15ZG9tYWluMB4XDTE5MDkxMTAx
MzAzNloXDTI5MDkwODAxMzAzNlowYDELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0Jl
aWppbmcxEDAOBgNVBAcTB0JlaWppbmcxDDAKBgNVBAoTA3h4eDEMMAoGA1UECxMD
eHh4MREwDwYDVQQDEwhteWRvbWFpbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBALSFrqyYNse3A/UMnKF6+G13YsrOEWJ3ZSRevMmNqgdqC9sNjtx07jw7
AQImxsfvaRLyPWgIt7iJxIU4USn0ARctv/ambzUPGk30bkq/Lst8PZmJGp6xRTdK
jYkk/jqxIA56ChqKV4yd5ZbRAAXCt/rJxlKNCfg7/929xf9+8Topty96gohm3rXP
sMkkmFHjlVUTUnNstmL8UjseS1K3Yomg1CrZ/CP1mYFrn2av0JHW11wd5Crbkzni
izubzakjw9aDGRIsu4h6r5Dk+MiTDAszmYE7p2yvqFJNrkxxURAnZJ4H4AwtA84l
KYB1QvESc9vzH35OOQpiJVH9Gob1EBUCAwEAAaMhMB8wHQYDVR0OBBYEFDREQCS6
b11/CkW+wyS9p8icYoyaMA0GCSqGSIb3DQEBCwUAA4IBAQBdIpzxtgrcYBoTEkh5
hGJWsa55CPFF0pAWeS0lVC6hE/jvS8ujZC3ReCVVLtl7B+qakQVI7B8sOR+l4cAz
ns01/oWBAmOTUbsEUOaxHedCkxNOTKM1BppCxWcc6jZTtvf9F4ROuCR47jUk+v3Q
FJfV7XtKQtupFeS5XmZv+3hVtFoxL5RZWG0XjjfOIoQ+WoPaWxByEAmK3xAGZxVm
MBgGtv5QwQSJG7baEYTG5pVYM7wdPRjEC1ARnyBuhe/KBeWdpCXfeAtEmccNORov
C2JAvDZGv8Dwam+sIZm0iTNOwKJOmwRbj58k41QH5D1/nCZrA1TRLwCOlpW/Ejns
OA1/
-----END CERTIFICATE-----

第二條命令:導出並打印證書信息

keytool -export \
		-alias ddssingsong \
		-keystore ddssngong.p12 \
		-file rootca.crt \
		-storepass 123456
  • file 輸出證書文件路徑

打印證書信息

keytool -printcert -file rootca.crt
windows可直接雙擊查看

打印如下

C:\Users\dds\Desktop\ca> keytool -printcert -file rootca.crt
所有者: CN=mydomain, OU=xxx, O=xxx, L=Beijing, ST=Beijing, C=CN
發佈者: CN=mydomain, OU=xxx, O=xxx, L=Beijing, ST=Beijing, C=CN
序列號: 291b04d1
有效期爲 Wed Sep 11 09:30:36 CST 2019 至 Sat Sep 08 09:30:36 CST 2029
證書指紋:
         MD5:  3D:75:33:93:1C:BF:07:78:68:8E:54:7B:30:1B:EB:79
         SHA1: 32:F2:6C:1A:F0:A8:9A:E9:92:A2:AF:7F:2D:35:FA:37:FD:28:7C:BD
         SHA256: 0E:1E:7D:2E:CB:57:72:BC:7D:FE:C8:F0:24:48:2A:31:69:B2:D2:F2:2E:BC:03:9A:D4:15:BD:15:BE:5F:5F:2D
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

擴展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 34 44 40 24 BA 6F 5D 7F   0A 45 BE C3 24 BD A7 C8  4D@$.o]..E..$...
0010: 9C 62 8C 9A                                        .b..
]
]

其他命令

jks轉pkcs12

keytool -importkeystore \
		-srckeystore keystore.jks \
		-srcstoretype JKS \
		-deststoretype PKCS12 \
		-destkeystore keystore.p12

生成證書籤名請求(CSR)

keytool -certreq -keyalg RSA \
        -alias ddssingsong \
        -keystore keystore.p12 \
        -storetype PKCS12 \
        -storepass 123456 \
        -file certreq.csr

查看生成的CSR證書請求

keytool -printcertreq -file certreq.csr

使用CA根證書對證書請求進行簽名

導入證書到證書庫

keytool -importcert -alias server -file server.crt -keystore server.p12 -storepass 123456

更改密碼

keytool -storepasswd -new new_storepass -keystore keystore.p12
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章