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协议族能够用来进行远程控制,用来加密远程控件和文件传输过程当中的数据。