我有一個證書和我從不同地方收到的PrivateKey。只給出這兩個抽象對象,我可以驗證證書是否與給定的PrivateKey相關聯,還是證書?Java驗證證書與密鑰關聯
我明白如果這些是RSA密鑰,我可以將它們轉換爲RsaPublicKey/RsaPrivateKey並驗證指數和模數是否匹配,但如果它們是ECDSA?其他類型呢?
我最終希望將密鑰存儲到證書作爲證書鏈的密鑰庫中,如果我試圖從另一個密鑰中加載帶有證書的密鑰,我期望這會引發異常或導致某種錯誤。但這似乎並不重要?
我有一個證書和我從不同地方收到的PrivateKey。只給出這兩個抽象對象,我可以驗證證書是否與給定的PrivateKey相關聯,還是證書?Java驗證證書與密鑰關聯
我明白如果這些是RSA密鑰,我可以將它們轉換爲RsaPublicKey/RsaPrivateKey並驗證指數和模數是否匹配,但如果它們是ECDSA?其他類型呢?
我最終希望將密鑰存儲到證書作爲證書鏈的密鑰庫中,如果我試圖從另一個密鑰中加載帶有證書的密鑰,我期望這會引發異常或導致某種錯誤。但這似乎並不重要?
首先,可以肯定的是,您可以使用您的私鑰簽署隨機數據塊並使用公鑰進行驗證。公鑰是證書的一部分。它適用於所有簽名算法。
私鑰結構包含匹配的公鑰也是很常見的。你應該檢查它 - 搜索一個匹配的鍵將會更容易。
您不應該有的私鑰。它是私人的。所有你需要的是他們的公鑰密鑰,然後你通過Certificate.verify(PublicKey key)驗證證書。
無論誰給你的私鑰只是嚴重COMPROMISED他們的安全。他們需要創建一個新的私鑰,簽名證書等,並部署它,並停止使用先前的密鑰。他們還需要保留新私鑰的私密性。
我認爲這對我們很有用。我不一定知道我手上有哪些關鍵類型,但我可以嘗試一下RSA簽名驗證,然後是ECDSA。如果兩者都有效,我會認爲它們是有效的一對。 – kenen