zoukankan      html  css  js  c++  java
  • 数字证书认证这点事, 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操作系统

  • 相关阅读:
    CF359B Permutation
    CF859C Pie Rules
    Contest 156
    Contest 155
    Range Module
    python-环境
    Git 使用
    Contest 154
    生命是一种长期而持续的累积过程
    Contest 153
  • 原文地址:https://www.cnblogs.com/zzSoftware/p/3751246.html
Copyright © 2011-2022 走看看