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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CA双向认证

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

一、雙向認證

CA認證有單向認證和雙向認證,在我們日常網頁瀏覽中,我們接觸到的大多數是單向認證,而在一些銀行系統等對安全性要求比較高的系統,會采用雙向認證。

單向認證只是客戶端(瀏覽器)認證服務端(例如tomcat等), 雙向認證指的是服務端和客戶端之間相互都要認證(在瀏覽器體現為需要安裝進證書)。

https的雙向認證大概過程(摘自http://blog.chinaunix.net/uid-26335251-id-3508651.html):

1 瀏覽器發送一個連接請求給安全服務器。
2 服務器將自己的證書,以及同證書相關的信息發送給客戶瀏覽器。
3 瀏覽器檢查服務器送過來的證書是否是由自己信賴的 CA 中心所簽發的。如果是,就繼續執行協議;如果不是,客戶瀏覽器就給客戶一個警告消息:警告客戶這個證書不是可以信賴的,詢問客戶是否需要繼續。
4 接著客戶瀏覽器比較證書里的消息,與服務器剛剛發送的相關消息是否一致,如果是一致的,客戶瀏覽器認可這個服務器的合法身份。
5 服務器要求客戶發送客戶自己的證書。收到后,服務器驗證客戶的證書,如果沒有通過驗證,拒絕連接;如果通過驗證,服務器獲得用戶的公鑰。
6 客戶瀏覽器告訴服務器自己所能夠支持的通訊對稱密碼方案。
7 服務器從客戶發送過來的密碼方案中,選擇一種加密程度最高的密碼方案,用客戶的公鑰加過密后通知瀏覽器。
8 瀏覽器針對這個密碼方案,選擇一個通話密鑰,接著用服務器的公鑰加過密后發送給服務器。
9 服務器接收到瀏覽器送過來的消息,用自己的私鑰解密,獲得通話密鑰。
10 服務器、瀏覽器接下來的通訊都是用對稱密碼方案,對稱密鑰是加過密的。

二、搭建CA證書頒發中心

1 創建rsaCA目錄

mkdir rsaCA

mkdir -p ./rsaCA/{private,newcerts} && \

??? touch ./rsaCA/index.txt && \

??? touch ./rsaCA/serial && \

echo 01 > ./rsaCA/serial

touch rsaCA/index.txt.attr

把openssl.cnf放到rsaCA目錄下

2 生成ca私鑰

openssl genrsa -out ./rsaCA/private/cakey.pem 2048

3 生成證書請求

?? openssl req -new -days 3650 -key ./rsaCA/private/cakey.pem -out careq.pem -config ./rsaCA/openssl.cnf

?

4 根據CA私鑰生成CA的自簽名證書

openssl ca -selfsign -in careq.pem -out ./rsaCA/cacert.pem -extensions v3_ca -config ./rsaCA/openssl.cnf

?

三、生成客戶端證書

1 客戶端私鑰生成證書簽名請求( cacsr.cer為請求證書,client_crt.cer為簽名證書)

??? 生成RSA私鑰

openssl genrsa -out client.pem 2048

??? 生成證書請求

?? openssl req -new -days 3650 -key client.pem ?-out client_csr.pem ?-config ./rsaCA/openssl.cnf

2.使用CA的私鑰和證書對用戶證書簽名(openssl.cnf為gmssl/ssl目錄下的配置文件)

openssl ca -in client_csr.pem ?-out client_cert.cer ?-extensions v3_ca -config ./rsaCA/openssl.cnf

?

四、生成服務端證書(這里使用的是tomcat)

1 生成服務器證書

使用keytool為Tomcat生成證書,假定目標機器的域名是localhost或者“192.168.1.1”,keystore文件為tomcat.keystore,口令為“logiscn”,使用如下命令生成:

keytool -genkey -v -alias tomcat -keyalg RSA -keystore tomcat.keystore -dname "CN=192.168.1.1,OU=logiscn,O=logis,L=beijing,ST=beijing,C=CN" -validity 3650 -storepass logiscn -keypass logiscn

2 將CA機構自簽名證書導入tomcat中

keytool -import -alias ca -v -file ./rsaCA/cacert.pem -keystore /root/rsa/tomcat.keystore -storepass logiscn

3 將客戶端證書導入tomcat中

keytool -import -alias tianli -v -file /root/CA/test/client_crt.cer -keystoretomcat.keystore -storepass logiscn

4?配置Tomcat服務器
打開Tomcat根目錄下的/conf/server.xml,找到如下配置段,修改如下:
打開注釋
? ?<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
? ? ? ? maxThreads="150" scheme="https" secure="true"
? ? ? ? clientAuth="true" sslProtocol="TLS"
? ? ? ? keystoreFile="/root/rsa/tomcat.keystore" keystorePass="logiscn"
? ? ? ? truststoreFile="/root/rsa/tomcat.keystore" truststorePass="logiscn" />

其中,clientAuth指定是否需要驗證客戶端證書,如果該設置為“false”,則為單向SSL驗證,SSL配置可到此結束。如果clientAuth設置為“true”,表示強制雙向SSL驗證,必須驗證客戶端證書。如果clientAuth設置為“want”,則表示可以驗證客戶端證書,但如果客戶端沒有有效證書,也不強制驗證。

5 重啟tomcat

?

五、實現類似銀行U盾的操作

以前用過網銀的朋友們可能知道,在我們登錄網銀的時候是需要插入一個U盾的,其實他也是一個雙向認證的原理。在這里,我們可以借助第三方工具u-key來實現。

可以購買市面上現成的u-key,將上述做成的客戶端證書導入u-key中,在設置u-key的密碼,這樣就可以實現客戶想要訪問服務器,必須擁有u-key以及登錄密碼才可訪問的功能了。

?

附:

openssl一些用法

顯示證書信息。

cacert.pem為已加簽后的證書文件

opensslx509 -text -noout -in cacert.pem

顯示申請加簽的證書信息

cacsr.pem為申請加簽的文件

openssl req -in cacsr.pem -noout -text

顯示公私鑰信息

cakey.pem為私鑰文件

openssl pkey -pubout -in cakey.pem -noout-text

由私鑰文件導致公鑰命令

cakey.pem為私鑰文件,public.pem為生成的公鑰文件

openssl pkey -pubout -in cakey.pem -out public.pem

顯示公鑰文件的公鑰信息

public.pem為公鑰文件

openssl pkey -pubin -in public.pem -noout -text

提取用戶證書:

openssl pkcs12 -in test.p12 -clcerts -nokeys -out cert.pem ?//pem格式

openssl pkcs12 -in test.p12 -clcerts -nokeys -out cert.crt ?//crt格式

如果需要攜帶秘鑰,則去掉 -nokeys

openssl pkcs12 -in test.p12 -clcerts? -out cert.pem? //pem格式

openssl pkcs12 -in test.p12 -clcerts? -out cert.crt? //crt格式

提取私鑰:

openssl pkcs12 -in test.p12 -nocerts -out key.pem

將證書、私鑰轉換為p12格式:

gmssl pkcs12 -export -clcerts -in client_cert.cer –inkey client.pem -out

?

一關于keytool的一些指令

https://spdx4046.iteye.com/blog/1554577

openssl指令部分說明:

https://zhuanlan.zhihu.com/p/26646377

openssl配置文件說明:

https://www.cnblogs.com/f-ck-need-u/p/6091027.html

?

總結

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

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