1. 程式人生 > >SSL雙向認證(一)

SSL雙向認證(一)

2.
建立CA私鑰
openssl genrsa -out E:/Myca/ca-key.pem 1024

3.
建立證書請求
openssl req -new -out E:/Myca/ca-req.csr -key E:/Myca/ca-key.pem -config openssl.cnf
(C:\Program Files\OpenSSL-Win64\bin\cnf\openssl.cnf 沒有自己去找樣例的預設配置)

在YOUR name 處一定要填寫專案佈置伺服器所屬域名或ip地址

Country Name (2 letter code) [AU]:ch
State or Province Name (full name) [Some-State]:shanghai
Locality Name (eg, city) []:shanghai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:alibaba
Organizational Unit Name (eg, section) []:alibabasoft
Common Name (e.g. server FQDN or YOUR name) []:192.168.134.96
Email Address []:

[email protected]

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:alibaba

4.
自簽署證書
openssl x509 -req -in E:/Myca/ca-req.csr -out E:/Myca/ca-cert.pem -signkey E:/Myca/ca-key.pem -days 3650

Signature ok
subject=C = ch, ST = shanghai, L = shanghai, O = alibaba, OU = alibabasoft, CN =192.168.134.96,
emailAddress =

[email protected]
Getting Private key

5.
匯出ca證書(包含金鑰)
openssl pkcs12 -export -clcerts -in E:/Myca/ca-cert.pem -inkey E:/Myca/ca-key.pem -out E:/Myca/ca.p12
匯出ca證書(不含金鑰)
openssl pkcs12 -export -nokeys -clcerts -in E:/Myca/ca-cert.pem -inkey E:/Myca/ca-key.pem -out E:/Myca/ca.p12

C:\Users\jack>openssl pkcs12 -export -nokeys -clcerts -in E:/Myca/ca-cert.pem -in
key E:/Myca/ca-key.pem -out E:/Myca/ca.p12
Enter Export Password:
Verifying - Enter Export Password:

註冊服務端證書:

1.
建立服務端金鑰庫,別名:server,validity:有效期365天,金鑰:演算法RSA,storepass:金鑰庫密碼,keypass:別名條碼密碼。
keytool -genkey -alias server -validity 3650 -keyalg RSA -keysize 1024 -keypass 123456 -storepass 123456 -keystore E:/Myca/server/server.jks

在名字和姓氏處填寫專案佈置伺服器所屬域名或ip地址。

C:\Users\jack>keytool -genkey -alias server -validity 3650 -keyalg RSA -keysize 1
024 -keypass 123456 -storepass 123456 -keystore E:/Myca/server/server.jks
您的名字與姓氏是什麼?
192.168.134.96
您的組織單位名稱是什麼?
alibaba
您的組織名稱是什麼?
alibabasoft
您所在的城市或區域名稱是什麼?
shanghai
您所在的省/市/自治區名稱是什麼?
shanghai
該單位的雙字母國家/地區程式碼是什麼?
ch
CN=192.168.134.96, OU=alibaba, O=alibabasoft, L=shanghai, ST=shanghai, C=ch是否正確?
Y

2.
生成服務端證書
keytool -certreq -alias server -sigalg MD5withRSA -file E:/Myca/server/server.csr -keypass 123456 -keystore E:/Myca/server/server.jks -storepass 123456
(Keytool 在jdk bin目錄下)

3.
使用CA的金鑰生成服務端金鑰,使用CA簽證
openssl x509 -req -in E:/Myca/server/server.csr -out E:/Myca/server/server.pem -CA E:/Myca/ca-cert.pem -CAkey E:/Myca/ca-key.pem -days 3650 -set_serial 1

C:\Users\jack>openssl x509 -req -in E:/Myca/server/server.csr -out E:/Myca/server
/server.pem -CA E:/Myca/ca-cert.pem -CAkey E:/Myca/ca-key.pem -days 3650 -set_se
rial 1
Signature ok
subject=C = ch, ST = shanghai, L = shanghai, O = alibabasoft, OU = alibaba, CN = 192.168.134.96
Getting CA Private Key

4.
使金鑰庫信任證書
keytool -import -v -trustcacerts -keypass 123456 -storepass 123456 -alias root -file E:/Myca/ca-cert.pem -keystore E:/Myca/server/server.jks

C:\Users\jack>keytool -import -v -trustcacerts -keypass 123456 -storepass 123456
-alias root -file E:/Myca/ca-cert.pem -keystore E:/Myca/server/server.jks
所有者: [email protected], CN=192.168.134.96, OU=alibabasoft, O=alib
aba, L=shanghai, ST=shanghai, C=ch
釋出者: [email protected], CN=192.168.134.96, OU=alibabasoft, O=alib
aba, L=shanghai, ST=shanghai, C=ch
序列號: 8c14079cfc3c8c6d
有效期開始日期: Thu Aug 16 11:22:13 CST 2018, 截止日期: Sun Aug 13 11:22:13 CST
2028
證書指紋:
MD5: AE:FB:B9:F0:62:A1:2E:B4:99:FA:71:75:33:9E:51:5F
SHA1: 55:85:B9:8D:54:FA:B4:54:2A:03:83:13:86:11:DB:E8:6A:77:B3:68
SHA256: 6E:A3:7E:62:50:B4:C9:11:E6:6B:8C:40:15:66:CC:E2:EB:BF:7C:03:71:
FE:D6:A3:6B:91:3A:B0:D9:72:5C:64
簽名演算法名稱: SHA256withRSA
版本: 1
是否信任此證書? [否]: Y
證書已新增到金鑰庫中
[正在儲存E:/Myca/server/server.jks]

5.
將證書回覆安裝在金鑰庫中
keytool -import -v -trustcacerts -storepass 123456 -alias server -file E:/Myca/server/server.pem -keystore E:/Myca/server/server.jks

C:\Users\jack>keytool -import -v -trustcacerts -storepass 123456 -alias server -f
ile E:/Myca/server/server.pem -keystore E:/Myca/server/server.jks
證書回覆已安裝在金鑰庫中
[正在儲存E:/Myca/server/server.jks]

6.
生成服務端servertrust.jks信任庫
keytool -import -alias server-ca-trustcacerts -file E:/Myca/ca-cert.pem -keystore E:/Myca/server/servertrust.jks

C:\Users\jack>keytool -import -alias server-ca-trustcacerts -file E:/Myca/ca-cert
.pem -keystore E:/Myca/server/servertrust.jks
輸入金鑰庫口令:
再次輸入新口令:
所有者: [email protected], CN=192.168.134.96, OU=alibabasoft, O=alib
aba, L=shanghai, ST=shanghai, C=ch
釋出者: [email protected], CN=192.168.134.96, OU=alibabasoft, O=alib
aba, L=shanghai, ST=shanghai, C=ch
序列號: 8c14079cfc3c8c6d
有效期開始日期: Thu Aug 16 11:22:13 CST 2018, 截止日期: Sun Aug 13 11:22:13 CST
2028
證書指紋:
MD5: AE:FB:B9:F0:62:A1:2E:B4:99:FA:71:75:33:9E:51:5F
SHA1: 55:85:B9:8D:54:FA:B4:54:2A:03:83:13:86:11:DB:E8:6A:77:B3:68
SHA256: 6E:A3:7E:62:50:B4:C9:11:E6:6B:8C:40:15:66:CC:E2:EB:BF:7C:03:71:
FE:D6:A3:6B:91:3A:B0:D9:72:5C:64
簽名演算法名稱: SHA256withRSA
版本: 1
是否信任此證書? [否]: Y
證書已新增到金鑰庫中

註冊客戶端證書

1.
建立客戶端金鑰,指定使用者名稱,下列命令中的user將替換為頒發證書的使用者名稱
openssl genrsa -out E:/Myca/client/user-key.pem 1024

2.
openssl req -new -out E:/Myca/client/user-req.csr -key E:/Myca/client/user-key.pem

C:\Users\jack>openssl req -new -out E:/Myca/client/user-req.csr -key E:/Myca/client/user-key.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
you enter ‘.’, the field will be left blank.

Country Name (2 letter code) [AU]:ch
State or Province Name (full name) [Some-State]:shanghai
Locality Name (eg, city) []:shanghai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:alibaba
Organizational Unit Name (eg, section) []:alibabasoft
Common Name (e.g. server FQDN or YOUR name) []:192.168.134.96
Email Address []:[email protected]

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:unkown

3.
生成對應使用者名稱的客戶端證書,並使用CA簽證
openssl x509 -req -in E:/Myca/client/user-req.csr -out E:/Myca/client/user-cert.pem -signkey E:/Myca/client/user-key.pem -CA E:/Myca/ca-cert.pem -CAkey E:/Myca/ca-key.pem -CAcreateserial -days 3650

C:\Users\jack>openssl x509 -req -in E:/Myca/client/user-req.csr -out E:/Myca/clie
nt/user-cert.pem -signkey E:/Myca/client/user-key.pem -CA E:/Myca/ca-cert.pem -C
Akey E:/Myca/ca-key.pem -CAcreateserial -days 3650
Signature ok
subject=C = ch, ST = shanghai, L = shanghai, O = alibaba, OU = alibabasoft, CN =
192.168.134.96, emailAddress = [email protected]
Getting Private key
Getting CA Private Key

4.
將簽證之後的證書檔案user-cert.pem匯出為p12格式檔案(p12格式可以被瀏覽器識別並安裝到證書庫中)

C:\Users\jack>openssl pkcs12 -export -clcerts -in E:/Myca/client/user-cert.pem -inkey E:/Myca/client/user-key.pem -out E:/Myca/client/user.p12
Enter Export Password:
Verifying - Enter Export Password:

5.
將簽證之後的證書檔案user-cert.pem匯入至信任祕鑰庫中(這裡由於沒有去ca認證中心購買個人證書,所以只有匯入信任庫才可進行雙向ssl互動

E:\Program Files\java\bin>keytool -import -alias user -trustcacerts -file E:/Myca/client/user-cert.pem -keystore E:/Myca/server/servertrust.jks
輸入金鑰庫口令:
證書已新增到金鑰庫中

6.
E:\Program Files\java\bin>keytool -list -v -alias user -keystore E:/Myca/server/servertrust.jks -storepass 123456
別名: user
建立日期: 2018-8-20
條目型別: trustedCertEntry

所有者: [email protected], CN=192.168.134.96, OU=alibabasoft, O=alibaba
, L=shanghai, ST=shanghai, C=ch
釋出者: [email protected], CN=192.168.134.96, OU=alibabasoft, O=alib
aba, L=shanghai, ST=shanghai, C=ch
序列號: 967626e1c519a369
有效期開始日期: Thu Aug 16 18:05:15 CST 2018, 截止日期: Sun Aug 13 18:05:15 CST
2028
證書指紋:
MD5: DF:D6:AC:94:38:6F:FC:DC:6A:A6:6F:58:9C:6F:CE:44
SHA1: 43:53:7E:53:E3:8F:E9:9F:B0:ED:A0:ED:A4:02:0A:EE:2C:F9:0B:F5
SHA256: BF:3B:C4:CA:55:A5:0D:39:55:69:AA:99:DE:C0:B2:C2:D0:14:18:45:F5:
9F:D4:8D:05:D2:F9:33:A7:49:DC:4C
簽名演算法名稱: SHA256withRSA
版本: 1

相關推薦

SSL雙向認證()

2. 建立CA私鑰 openssl genrsa -out E:/Myca/ca-key.pem 1024 3. 建立證書請求 openssl req -new -out E:/Myca/ca-req.csr -key E:/Myca/ca-key

SSL/TLS 雙向認證() -- SSL/TLS工作原理

一: SSL/TLS介紹 什麼是SSL,什麼是TLS呢?官話說SSL是安全套接層(secure sockets layer),TLS是SSL的繼任者,叫傳輸層安全(transport layer security)。說白點,就是在明文的上層和TCP層之間加上

SSL-TLS 雙向認證() -- SSL-TLS工作原理

一: SSL/TLS介紹 什麼是SSL,什麼是TLS呢?官話說SSL是安全套接層(secure sockets layer),TLS是SSL的繼任者,叫傳輸層安全(transport layer security)。說白點,就是在明文的上層和TCP層之間加上一層加密,

利用mina框架進行ssl雙向認證連結

再上一篇中我已將建立好了證書,現在開始進行測試建立的證書有沒有用,先建立一個maven專案目錄結構如下 我們這裡是進行的雙向測試,如果想進行單項測試,也就是伺服器端不驗證客戶端的身份(關於ssl的原理可以自行百度瞭解)等會再說,改一個配置就行. 先引入pom檔案: <p

PKI學習之路(五)-----------------------SSL雙向認證日誌分析

根據上一篇的執行結果,我們根據它的日誌分析互動的過程 "C:\Program Files\Java\jdk1.8.0_161\bin\java.exe" "-javaagent:D:\IntelliJ IDEA 2018.1.5\lib\idea_rt.jar=52038:D:\IntelliJ

PKI學習之路(四)-----------------------SSL雙向認證

專案地址:https://github.com/gongxianshengjiadexiaohuihui/PKI/tree/master/ssl 上一篇 我們講了如何用java自帶的keytool工具生成數字證書,我們需要準備兩個證書,一個是server的一個是client的 &

SSL握手通訊詳解及linux下c/c++ SSL Socket(另附SSL雙向認證客戶端程式碼)

SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網路通訊提供安全及資料完整性的一種安全協議。TLS與SSL在傳輸層對網路連線進行加密。   安全證書既包含了用於加密資料的金鑰

使用Httpclient實現SSL雙向認證

1、生成伺服器端證書 Java程式碼 keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass pa

Android JSSE實現SSL雙向認證(阻塞模式及非阻塞模式)

      File pfxFile = new File(mCertPath, "ca.pfx");                try {            /*Android支援BKS PKCS12的keystore,不支援JKS,預設為BKS*/            //ksKeys = Ke

nginx配置將http請求轉發支援ssl雙向認證https請求的正向代理

一、引言 nginx 是否支援將http請求轉發為https支援ssl雙向認證,網上沒什麼用例可以參考,查詢各大開發運維社群了下有幾種說法 支援: 不支援: 不清楚家祭不忘告乃翁:

Openssl建立SSL雙向認證連線原始碼

 (作者:陳波,2011-11-16,轉載請註明 Form:http://blog.csdn.net/jinhill/article/details/6979200)  #include "stdio.h" #include "string.h" #include "o

SSL雙向認證以及證書的製作和使用-https+客戶端身份驗證

客戶端認證伺服器: 正規的做法是:到國際知名的證書頒發機構,如VeriSign申請一本伺服器證書,比如支付寶的首頁,點選小鎖的圖示,可以看到支付寶是通過VeriSign認證頒發的伺服器證書: 我們用的操作系統(windows, linux, unix ,android, ios等)都預置了很多信任的根證

nginx中配置ssl雙向認證詳解

nginx中配置ssl雙向認證詳解 需求說明:公司內部一些業務系統對安全性要求比較高,例如mis、bi等,這些業務系統只允許公司內部人員訪問,而且要求瀏覽器要安裝證書登入,對公司入職有需求的人員開通證書,流失的人員登出證書。 一、首先修改openssl配置的引數  ##沒安

OpenFire開啟SSL雙向認證

準備工作 1.1:安裝JDK,配置環境變數,保證keytool工具可用 1.2:進入:openfire安裝目錄/resources/security資料夾 準備伺服器證書 伺服器金鑰庫對應為keystore 2.1:改變keystore預設密碼 keytool-storep

(xampp)lampp 下配置https(ssl)自簽雙向認證以後 apache無法啟動解決方案

art blog xtra 場景 問題 .com 客戶端瀏覽器 php https 自簽CA一般是沒有應用場景的,因為需要客戶端瀏覽器導入證書才能訪問 但是在某些需要內部使用的場景下,確實是一個解決方案 但是在lampp配置了雙向認證以後發現 原來自帶的管理命令 lampp

mosquitto ---SSL/TLS 單向認證+雙向認證

生成證書 # * Redistributions in binary form must reproduce the above copyright #   notice, this list of conditions and the following disclaimer

Android 加密傳輸(SSL),雙向認證 筆記

工作需要使用到 Android  加密傳輸(SSL),雙向認證 ,因為未使用過,所以搜尋了總結了一下相關知識,並整理作為筆記 參考部落格 :Retrofit 2.0 詳解(二)載入https請求(轉)       &nbs

Android 加密傳輸(SSL),雙向認證 筆記

工作需要使用到 Android  加密傳輸(SSL),雙向認證 ,因為未使用過,所有搜尋了總結了一下相關知識,並整理作為筆記 搜尋的時候關於SSL+http 的解釋有很多,不做細說,本文值記錄如何實現,包括證書製作、myeclipse服務部署以及Android端程式

C# https雙向認證,"請求被中止: 未能建立 SSL/TLS 安全通道"解決辦法

最近的專案中用到了呼叫https的介面的功能,編寫出程式後在我自己的電腦上執行沒有問題,但是在同事的電腦上和服務上都沒有辦法正常執行,提示“請求被中止: 未能建立 SSL/TLS 安全通道”,最後在專案經理的幫助下和網上查找了大量的資料,以及做了大量的測試下終於解決了問題,所

SSL/TLS 單雙向認證程式碼示例

採用SSL/TLS形式的安全連結,能防止資料傳輸過程中被截獲修改等問題。 SSL演算法簡短說明:     對稱加密演算法:DES 3DES AES 客戶端和服務端使用同一個金鑰對訊息進行加密解密。     非對稱加密演算法:RSA, 生成公鑰和私鑰,採用公鑰加密,私鑰解密