日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SSL双向认证的实现

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SSL双向认证的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

?環境

系統:archlinux/centOS

nginx:nginx/1.12.2

瀏覽器:火狐firefox

?前提:1.安裝nginx。

   ? ? 2.安裝openssl。

生成證書

新建工作目錄

 首先建立一個工作目錄,這里以我的工作目錄為例。(/home/yinghui/ssl/demoCA-my/),然后執行如下命令。建立生成證書的路徑文件結構,這是由openssl的默認配置文件決定的。你可以修改配置。

mkdir demoCA-my cd demoCA-my touch ./{serial,index.txt} echo '01' > serial mkdir ./newcerts

配置 openssl.cnf

????拷貝配置文件到工作目錄。當然前綴路徑要換成你自己的。

cp /usr/local/ssl/openssl.cnf ./

 修改配置文件。編輯openssl.cnf中的一些選項。

  unique_subject? = no ? (這樣一個CA可以同時簽多張證書)

  countryName = optional(把這些參數的匹配規則改為可選)

  stateOrProvinceName = optional

  organizationName? = optional

  organizationalUnitName? = optional

效果:

??

修改dir配置:注意是CA_default 下面的dir

?

生成CA跟證書? ?

?現在我們來生成自己的CA跟證書

openssl req -days 365 -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

  生成會話會讓你填入一些參數,根據實際情況填寫。執行完會發現工作目錄下會有ca.crt? ca.key兩個文件。截圖如下:

????大概說明一下上面各項的意思:?

輸入項解釋
AU國籍cn
state or province州 省份beijing
Lcality Name城市bj
O name(簡寫)公司jinxi
O ?U name(簡寫)組織jinxi360
common name通用名網址或者你的名字
Email你的郵箱

結果多了兩個文件:

? ????

生成server端證書

  首先生成server端私鑰。執行后會要求輸入解析私鑰文件的密碼。生成server.key。

openssl genrsa -des3 -out server.key 1024

  

生成證書請求

????生成會話會提示輸入一些請求信息,成功后生成server.csr

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

  注意上圖中畫線的一行,這行輸入server端的域名(或者IP地址),這里是https://192.168.1.100 。否則簽發的服務端證書會被瀏覽器視為不是本站點的證書,最后兩項我這里直接回車。其他參考上面的解釋。

? ?????執行后多出一個文件server.csr

?

  現在用生成的CA給證書請求(server.csr)簽發證書(crt文件)。根據提示輸入相關密碼(之前設置好的)和兩個 y(yes)回車,成功后生成證書server.crt

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

 生成的服務端證書文件: 

????

????????到這里,我們已經可以做單項認證了,來試試。

驗證單向認證

????????????配置nginx:vi /usr/local/nginx/conf/nginx.conf修改配置如下圖(注意證書和CA的路徑是我的工程路徑):

server {listen 443;#server_name abc.jinxi360.com;ssl on; ssl_certificate /home/yinghui/ssl/demoCA-my/server.crt; #服務端證書ssl_certificate_key /home/yinghui/ssl/demoCA-my/server.key; #服務端私鑰ssl_client_certificate /home/yinghui/ssl/demoCA-my/ca.crt; #跟CA證書ssl_session_timeout 5m;ssl_verify_client on; #開戶客戶端證書驗證ssl_prefer_server_ciphers on;#add_header Strict-Transport-Security 'max-age=31536000';#access_log /var/log/nginx/adm_access.log;#error_log /var/log/nginx/adm_error.log;location / {root html;index index.html index.htm;} }

保存后驗證 nginx.conf配置文件:

  

啟動nginx

會要求輸入server端私鑰文件解析密碼,輸入生成時設置的密碼。

???在windows下打開firefox輸入https://192.168.1.100回車。

  這說明nginx已經向瀏覽器發送了自己的證書,但是這個證書不受信任。別急,現在我們把之前自己的CA導入瀏覽器。

  打開 選項->高級->查看證書->證書機構->導入。先擇CA后根據提示導入證書。成功后如下:

  再次輸入https://192.168.1.100回車。

 

  看見中間那行提示了嗎?中式英語翻譯過來就是-->沒有要求的ssl證書來發送。也就是說,client已經成功認證了server端的證書,但是我們配置nginx為雙向認證,所以nginx要求瀏覽器出示證書,而瀏覽器沒有證書。

  說明單項認證已經OK,現在為client生成證書。

生成client證書

  首先生成client端私鑰,執行后會要求輸入解析私鑰文件的密碼,根據個人喜好設置。生成client.key。

openssl genrsa -des3 -out client.key 1024

????

????生成證書請求。生成會話會提示輸入一些請求信息,成功后生成client.csr。

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

????? ? 上圖中畫線的是證書在瀏覽器中顯示的名字,這里使用域名地址作為證書的名稱,上面最后兩項我直接回車。

生成客戶端crt證書:  

現在用之前生成的CA給證書請求(client.csr)簽發證書。根據提示輸入相關密碼(之前設置好的)和y(yes),成功后生成證書client.crt

openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

生成p12證書:? ?

firefox要求客戶端的證書格式是p12格式,所以我們把client.crt轉化為client.p12格式

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

?  轉pem格式

cat ca.crt ca.key > ca.pem cat server.crt server.key > server.pem cat client.crt client.key > client.pem

????最后一步,把client.p12導入瀏覽器。

  打開 選項->高級->查看證書->您的證書->導入。根據提示導入,導入成功后如圖:

查看證書信息:

  輸入https://192.168.68.173:8080回車。

?

   OK!!!

go go go!

?

附:

? ? 最終目錄下的文件列表:

?

?

轉載于:https://my.oschina.net/iyinghui/blog/1832914

總結

以上是生活随笔為你收集整理的SSL双向认证的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。