1. 程式人生 > >在Java中使用openssl製作的雙向認證

在Java中使用openssl製作的雙向認證


一 建立根證書
1 生成根證書私鑰
openssl genrsa -des3 -out root.key 1024

密碼為:handwin1

2 生成根證書籤名請求檔案
openssl req -new -out root-req.csr -key root.key -keyform PEM

3 自籤根證書
openssl x509 -req -in root-req.csr -out root-cert.cer -signkey root.key -CAcreateserial -days 7300

4 匯出p12格式證書
openssl pkcs12 -export -clcerts -in root-cert.cer -inkey root.key -out root.p12



二 建立服務端證書
1.生成服務端key
openssl genrsa -des3 -out server-key.key 1024

2.生成服務端請求檔案

openssl req -new -out server-req.csr -key server-key.key

3.生成服務端證書(root證書,rootkey,客戶端key,客戶端請求檔案這4個生成客戶端證書)
openssl x509 -req -in server-req.csr -out server-cert.cer -signkey server-key.key -CA root-cert.cer -CAkey root.key -CAcreateserial -days 7300

4.生成服務端p12格式根證書
openssl pkcs12 -export -clcerts -in server-cert.cer -inkey server-key.key -out server.p12


三 建立客戶端證書
1.生成客戶端key
openssl genrsa -des3 -out client-key.key 1024


2.生成客戶端請求檔案

openssl req -new -out client-req.csr -key client-key.key

3.生成客戶端證書(root證書,rootkey,客戶端key,客戶端請求檔案這4個生成客戶端證書)
openssl x509 -req -in client-req.csr -out client-cert.cer -signkey client-key.key -CA root-cert.cer -CAkey root.key -CAcreateserial -days 7300

4.生成客戶端p12格式根證書

openssl pkcs12 -export -clcerts -in client-cert.cer -inkey client-key.key -out client.p12

四:Java專案使用

4.1   服務端使用

trustStore使用root.p12,keyStroe使用server.p12

同時設定:

        sslEngine.setUseClientMode(false);
        sslEngine.setNeedClientAuth(true);//啟動對客戶端證書的校驗

4.2 客戶端使用

trustStore使用root.p12,keyStore使用client.p12
        sslEngine.setUseClientMode(true);

說明: 根證書作為CA,用來驗證對方傳送的簽名是否正確。如果不對簽名進行驗證,則不需要根證書放到trustStore中.