1.概念web
數字證書算法
HTTPS請求時,Server發給瀏覽器的認證數據,用私鑰簽名,而且告訴瀏覽器公鑰,利用公鑰解密簽名,確認Server身份。瀏覽器
證書還會指明相應的CA,CA能確認證書是否真的是CA頒發的。安全
能夠用PEM、等編碼服務器
SSL/TLSsocket
SSL是上世紀由Netscape設計的web安全協議,並得到了普遍應用,SSLv2.0, v3.0,目前主要是v3工具
TLS是ITEF將SSL協議標準化了,TLSv1.0,v1.1,v1.2。web安全
其實TLSv1.0跟SSLv3.0差別很小,幾乎同樣。編碼
openSSL: 一個開源的實現了SSL/TLS協議的庫,包括3部份內容。加密
a. SSL_xxx帶頭的API,支持SSL/TLS協議
其中SSL* 這個結構最重要,調用openSSL API都會拿這個handle
最後相似socket同樣提供 SSL_read(SSL* buf,bufsize), SSL_write(SSL* buf,bufsize)
b. X509_xxx, AES_xxx, RSA_xxx MD5_xxx等API, 支持業界通用的證書認證、加解密等功能。
c. 提供一些二進制工具,用來生成證書、簽名、加解密等功能。
2.數字證書認證流程
2.1跟服務器TCP鏈接
2.2服務器傳送證書給瀏覽器
a. signedCertificate
版本、序列號(CA據次肯定證書)、簽名的算法
頒發者(CA)的可識別名稱: countryName, stateName, localityName,
OrganizationUnit, OrganizationName, commonName(有效的 DNS 名稱)
有效期、
證書名稱: OrganizationUnit, OrganizationName, commonName
證書的算法及公鑰
擴展
b. algorithmId: 證書的簽名算法
c. encryptedData: 證書籤名值,CA對證書籤名後的值,結合CA的私鑰,使用algorithmID對應的算法生成。
2.3瀏覽器如何驗證
瀏覽器根據證書的CA的公鑰,對證書籤名部分解密,解密成功則證書是CA頒發的。
3.使用代理時,如何處理證書認證
代理能夠有不少種,http代理,socket代理等。
socket的代理,能夠代理就不須要處理證書了,僅僅做爲一個bridge。
4.補充
openSSH: 是 SSH (Secure SHell) 協議的免費開源實現。SSH協議族能夠用來進行遠程控制,用來加密遠程控件和文件傳輸過程當中的數據。