[英]Converting a PEM file to a .JKS Key Store and Trust Store files
服務器端的PEM文件,打開后格式如下:
-----BEGIN CERTIFICATE-----
somestuff1234
-----END CERTIFICATE-----
我正在嘗試將其轉換為獲取兩個 JKS 文件(一個信任庫和密鑰庫),我可以使用我的 java 應用程序通過 SSL 調用服務器。
任何人都可以幫助輕松分解如何使用 openssl 然后使用 java 密鑰庫來執行此操作嗎? 我嘗試按照以下說明進行操作: https://docs.oracle.com/cd/E35976_01/server.740/es_admin/src/tadm_ssl_convert_pem_to_jks.html
但由於某種原因,我無法成功導入密鑰庫,因為它是空的。 PS 在按照這些說明進行操作時,我從 der 創建了 PKSC12,但沒有輸入私鑰,因為沒有提供私鑰。
我是否需要使用我自己也需要創建的私鑰,但不確定是否需要它,因為我只獲得了證書? 我被告知中間證書是在 TLS 握手中發送的。
感謝您對此的任何幫助。
嘗試使用調試模式和有關 SSL 服務器的特定信任庫運行 java 代碼,如下所述: How to configure trustStore for javax.net.ssl.trustStore on windows?
如果該 PEM 文件中唯一的內容就是您發布的內容:
-----BEGIN CERTIFICATE-----
somestuff1234
-----END CERTIFICATE-----
您將無法創建適合用作接受連接的 TLS 服務器的完整密鑰庫。
為此,您需要與證書相對應的私鑰。
我是否需要使用我自己也需要創建的私鑰,但不確定是否需要它,因為我只獲得了證書?
否 - 連同其識別數據,您的證書中有一個公鑰。 整個證書由您的 CA 以加密方式簽名 - 這就是“信任”轉移到您的證書的方式。 您證書中的公鑰源自特定的私鑰。
為什么它不起作用? 因為使用證書中的公鑰加密的數據只能使用派生公鑰的私鑰解密。
您的證書只有在與正確的私鑰配對時才有效。
但:
我從 der 創建了 PKSC12,但沒有輸入私鑰,因為沒有提供私鑰。
您必須擁有私鑰和證書才能運行 TLS 服務器。*
編輯:
出於同樣的原因,您必須將正確的私鑰與您的證書配對,才能在連接到 TLS 服務器時將其用作客戶端證書。
此外,TLS 證書是公開的——如果您只需要它來證明您的身份,那么將其公之於眾會使它毫無用處。 您擁有適當的私鑰就可以證明該證書是您的證書,而不是我的或其他任何人的。
在您為您擁有的證書找到正確的私鑰之前,您的 TLS 服務器或與 TLS 服務器的客戶端連接將無法工作。 如果您或您的組織丟失了該私鑰,則必須通過從該新私鑰創建新證書的過程創建一個新的私鑰和 go。
因為沒有正確的私鑰,你現在擁有的證書就毫無用處。
* - 技術上不正確。 TLS 標准確實支持不需要任何證書或私鑰的“匿名”密碼套件。 但幾乎沒有應用程序支持匿名密碼套件。 例如,OpenSSL 如果您自己從源代碼編譯它,則僅支持匿名密碼套件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.