Go to My Blog
Go to Lin's Blog

数字证书认证这点事, SSL/TLS,OpenSSL

1.概念

数字证书

   HTTPS请求时,Server发给浏览器的认证数据,用私钥签名,并且告诉浏览器公钥,利用公钥解密签名,确认Server身份。

   证书还会指明相应的CA,CA能确认证书是否真的是CA颁发的。

    可以用PEM、等编码

SSL/TLS

   SSL是上世纪由Netscape设计的web安全协议,并获得了广泛应用,SSLv2.0, v3.0,目前主要是v3

   TLS是ITEF将SSL协议标准化了,TLSv1.0,v1.1,v1.2。

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

FreeBSD: 是一种自由类Unix操作系统

posted @ 2014-05-25 15:37  一ke小小草  阅读(917)  评论(0编辑  收藏  举报