簡體   English   中英

私鑰,公鑰和證書的關系,以及從密鑰庫訪問特定證書的最佳方法

[英]private key, public key and certificates relationship and best way to access specific certificate from keystore

我在下面的keytool命令中使用了:

keytool -genkey -alias <alias name> -keypass <keypassword> -keystore <keystore file name with location> -keyalg "RSA" -sigalg SHA1WITHRSA

然后,我使用以下命令查看了密鑰庫的內容:

keytool -list -v -keystore <keystore file name with location>

它顯示以下內容:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: keyalias
Creation date: Nov 23, 2017
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=XXXXX, OU=SDG, O=XXXXX, L=XXXXX, ST=XX, C=IN
Issuer: CN=XXXXX, OU=SDG, O=XXXXX, L=XXXXX, ST=XX, C=IN
Serial number: 6c6ec57a
Valid from: Thu Nov 23 14:30:35 IST 2017 until: Wed Feb 21 14:30:35 IST 2018
Certificate fingerprints:
MD5:  85:08:01:27:BF:CA:88:17:88:11:9D:E4:DF:DC:70:AD
SHA1: 6D:14:08:BD:F6:4E:51:C2:A0:58:46:89:CC:85:06:BC:26:DA:23:4E
SHA256: D6:94:A8:31:2F:5D:29:FA:29:5F:8C:5D:24:D0:8E:47:D4:17:4C:B8:8A:
D8:A2:37:3F:18:24:5A:06:C1:E4:CB
Signature algorithm name: SHA1withRSA
Version: 3

Extensions:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
    KeyIdentifier [
        0000: 50 AD ED B0 1D 3D 12 AE   D4 C0 C7 EE 9F EE 43 11  P....=........C.
        0010: F4 71 02 93                                        .q..
    ]
]

*******************************************
*******************************************

如我所見,密鑰庫中只有一個條目。 希望獲得以下答案:

  1. 公鑰在哪里?

  2. 我也可以看到證書,而我沒有創建證書。 如果我需要使用Java代碼訪問此證書,那么是否需要使用密鑰別名或可以設置任何單獨的別名來訪問此證書?

如果有人可以解釋如何在密鑰存儲區中鏈接私鑰,公共密鑰和證書,以及如何從密鑰存儲區訪問特定的證書(假設密鑰存儲區具有多個證書),則將有很大的幫助。

keytool -genkey -alias

好的,您剛剛創建了一個KeyPair。

keytool命令使用自簽名證書創建密鑰對。 確實,在同一個別名中,您有一個PrivateKey和X509證書(PublicKey +一些屬性)

公鑰在哪里?

在這種情況下,公鑰被包裝在證書中。

如果我需要使用Java代碼訪問此證書,那么是否需要使用密鑰別名或可以設置任何單獨的別名來訪問此證書?

以下代碼從密鑰對中還原證書和公鑰

KeyStore.PrivateKeyEntry privKeyEntry = (KeyStore.PrivateKeyEntry)keystore.getEntry(KEYSTORE_ALIAS, new KeyStore.PasswordProtection(KEYSTORE_KEY_PASSWORD.toCharArray()));

PublicKey pubKey = privKeyEntry.getCertificate().getPublicKey();

如果有人可以解釋密鑰存儲區中私鑰,公鑰和證書的鏈接方式,那將是非常有幫助的

顯然您已經發現了:)

只是回答自己的問題,也可能對其他人有幫助。

私鑰包含一系列數字。 這些數字中的兩個構成“公鑰”,其他兩個則屬於“私鑰”。 “公共密鑰”位也嵌入在證書中。 要檢查證書中的公共密鑰是否與私鑰的公共部分匹配,您需要查看證書和密鑰並比較數字。

要從私鑰訪問證書,您需要使用私鑰別名,該別名在列出密鑰庫的內容時可以在公共位置找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM