[英]How to create keystore and truststore using self-signed certificate?
我們有JAVA服務器和客戶端使用SSL通過網絡進行通信。 服務器和客戶端使用證書相互進行身份驗證。 服務器和客戶端使用的密鑰庫類型是JKS。 服務器和客戶端的密鑰庫和信任庫文件名是:server.keystore,server.truststore,client.keystore和client.truststore。
我使用自簽名證書進行測試。
問題:
Q1。 我想知道為什么我需要在步驟6中將服務器和客戶端自己的證書添加到各自的信任庫中。
Q2。 我可以減少數量步驟來實現同樣的目標嗎? 如果是,那怎么樣?
1.生成私有RSA密鑰
openssl genrsa -out diagserverCA.key 2048
2.創建x509證書
openssl req -x509 -new -nodes -key diagserverCA.key -sha256 -days 1024 -out diagserverCA.pem
3.從私鑰和公共證書創建PKCS12密鑰庫。
openssl pkcs12 -export -name server-cert -in diagserverCA.pem -inkey diagserverCA.key -out serverkeystore.p12
4.將PKCS12密鑰庫轉換為JKS密鑰庫
keytool -importkeystore -destkeystore server.keystore -srckeystore serverkeystore.p12 -srcstoretype pkcs12 -alias server-cert
5.將客戶端證書導入服務器的信任庫。
keytool -import -alias client-cert -file diagclientCA.pem -keystore server.truststore
6.將服務器的證書導入服務器的信任庫。
keytool -import -alias server-cert -file diagserverCA.pem -keystore server.truststore
1.生成私鑰
openssl genrsa -out diagclientCA.key 2048
2.創建x509證書
openssl req -x509 -new -nodes -key diagclientCA.key -sha256 -days 1024 -out diagclientCA.pem
3.從私鑰和公共證書創建PKCS12密鑰庫。
openssl pkcs12 -export -name client-cert -in diagclientCA.pem -inkey diagclientCA.key -out clientkeystore.p12
4.將PKCS12密鑰庫轉換為JKS密鑰庫
keytool -importkeystore -destkeystore client.keystore -srckeystore clientkeystore.p12 -srcstoretype pkcs12 -alias client-cert
5.將服務器的證書導入客戶端的信任庫。
keytool -import -alias server-cert -file diagserverCA.pem -keystore client.truststore
6.將客戶端證書導入客戶端的信任存儲區。
keytool -import -alias client-cert -file diagclientCA.pem -keystore client.truststore
Q1。 我想知道為什么我需要在步驟6中將服務器和客戶端自己的證書添加到各自的信任庫中。
你沒有。 您將服務器和客戶端證書添加到彼此的信任庫中。 服務器和客戶端不需要信任他們自己的證書,但他們確實需要相互信任。
Q2。 我可以減少數量步驟來實現同樣的目標嗎? 如果是,那怎么樣?
你可以使用keytool
完成整個事情。 大量記錄的例子。 您根本不需要使用openssl
。
批判:
您可以在JDK文檔的JSSE參考指南中找到正確的操作說明。 每個約三個步驟。 但它真正表明的是,自簽名證書真的不值得他們印刷的紙張。 獲取CA簽名證書。 更多的價值和更容易部署(沒有出口步驟)。
你在哪里得到這個垃圾?
Q1。 我想知道為什么我需要在步驟6中將服務器和客戶端自己的證書添加到各自的信任庫中。
A1。 如果您沒有使用通用證書頒發機構來簽署您的客戶端和服務器證書......將每個證書添加到信任存儲區是唯一的方法。 但是......即使在測試環境中,您也可以創建自己的證書頒發機構,並使用它來簽署您創建的客戶端和服務器證書。 然后,您的信任存儲區只需要包含證書頒發機構的公鑰。
Q2。 我可以減少數量步驟來實現同樣的目標嗎? 如果是,那怎么樣?
A2。 是的,使用通用證書簽署您的客戶端和服務器證書。
在退房的腳本這篇文章 ,了解如何創建自己的CA,並用它進行注冊服務器和客戶端證書一步一步的。 它還創建了您的信任存儲......
希望這可以幫助。
最好的,Ace
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.