#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 過程的安全性 密碼方案。這樣,雙方具體的...