雙向認證例項

2021-07-09 07:44:45 字數 2256 閱讀 6390

#coding=utf-8

'''created on 2023年1月5日

@author:

duqiong

'''企業1,伺服器,假設,銀行

import socket, ssl,pprint

importtime

#cacrtf="ca/ca.crt

cacrtf ="ca-cert.pem"#客戶端證書ca,服務端用來驗證,客戶端的client-cert.pem是有效的,是可信任的!所以ca-cert.pem應該是client-cert.pem簽發根證書的上游,也可以是根證書。,

crtf="ca/server.crt"#公鑰,也代表服務端的唯一認證

keyf="ca/server.key"#私鑰,#在ssl握手時伺服器將公鑰發給客戶端,客戶端用公鑰加密之後發給服務端,服務端可以通過私鑰解密

server_sc = socket.socket()

server_sc.bind(('', 10023))

server_sc.listen(5)

newsocket, addr = server_sc.accept()

sc = ssl.wrap_socket(newsocket,

server_side=true,#表示是服務端行為,必須引數

certfile=crtf,#自己的公鑰,必須引數

keyfile=keyf,#自己的私鑰,必須引數

cert_reqs=ssl.cert_required,#客戶端必須要帶自己的證書過來,即公鑰,如果單向認證,這個cert_reqs, ca_certs兩個引數沒有。

ca_certs=cacrtf)#並且用這個根證校驗客戶商上傳過來的證書是否可信任的

data = sc.read()

print data

print pprint.pformat(sc.getpeercert())

sc.write('back time: ' + str(time.time()))

sc.close()

server_sc.close()

#coding=utf-8

'''created on 2023年1月4日

@author:

duqiong

'''發起支付,客房端

import socket, ssl, pprint

importtime

cacrtf="ca/ca.crt"#服務端證書ca,或者root證書,或者load_defaultpath_certs  /etc/certs/*

crtf = "client-cert.pem"#客戶端的公鑰

keyf = "client-key.pem"#客戶端的私鑰

在ssl握手時將公鑰發給服務端,服務端用公鑰加密之後發給過來,通過私鑰解密,這些發生在tcp上層ssl/stl實現的

socket = socket.socket(socket.af_inet, socket.sock_stream)

ssl_socket = ssl.wrap_socket(socket, ca_certs=cacrtf,#可選,用這個校驗服務端的證書是否可信任的,如果單向認證,這個cert_reqs, ca_certs兩個引數沒有。

certfile=crtf,#可選,如服務端cert_reqs=ssl.cert_required,則這個為必須填

keyfile=keyf,#可選,如服務端cert_reqs=ssl.cert_required,則這個為必須填

cert_reqs=ssl.cert_required)#可選,是否校驗服務端的證書可信任。如果不校驗就用charles抓https包,否則被客戶端因為ssl_handshake失敗而關閉連線。

print ssl_socket.context.get_ca_certs(binary_form=false)#列印自己能識別的多個證書的資訊

ssl_socket.connect(('192.168.1.105', 10023))

print ssl_socket.cipher()#列印客戶端與服務端最終確定的加密組合

print repr(ssl_socket.getpeername())

print pprint.pformat(ssl_socket.getpeercert())#列印服務商的證書資訊

ssl_socket.write("time: %s\r\n" % time.time())

data = ssl_socket.read()

print data

ssl_socket.close()

TOMCAT SSL雙向認證 配置例項

ssl secure socket layer 安全套接字層 功能 保障在internet上資料傳輸之安全,利用資料加密 encryption 技術,確保資料在網路上之傳輸過程中不會被擷取及竊聽,防止篡改。如何讓我們的web應用程式應用ssl安全保障?經過幾天摸索,終於實現 tomcat ssl 雙...

Cookie based認證實現

引用 使用asp.net 4.x 中的時候一定都用過forms認證即formsauthentication做登入使用者的身份認證,formsauthentication的核心就是cookie,asp.net會將使用者名稱儲存在cookie中。但是它很難進行擴充套件,更無法與第三方認證整合,因此,在 ...

雙向認證 什麼是單向認證和雙向認證?

雙向認證 ssl 協議要求伺服器和使用者雙方都有證書。單向認證 ssl 協議不需要客戶擁有ca證書,具體的過程相對於上面的步驟,只需將伺服器端驗證客戶證書的過程去掉,以及在協商對稱密碼方案,對稱通話金鑰時,伺服器傳送給客戶的是沒有加過密的 這並不影響 ssl 過程的安全性 密碼方案。這樣,雙方具體的...