Nginx学习笔记之SSL证书的公信力是如何保证的?

声明:图片来自  github:https://github.com/russelltao/geektime-nginx 

SSL证书的公信力是如何保证的?

  • PKI公钥基础设施 

    • CA为CA机构,站点的维护者就是证书的订阅人,必须去申请一个证书,就需要去登记,我是谁,我输入什么组织,我想做什么?
    • 到了登记机构,再通过CSR发给CA,CA通过以后,会生成一对公钥和私钥,公钥会CA证书里保存着,证书订阅人拿到公钥和私钥以后,就会把它部署到自己的web服务器,如Nginx。
    • 当浏览器通过如下图第一步访问我们的http站点的时候,它会去请求我们的证书,而Nginx这样的web服务器会把我们的公钥证书发给浏览器,而浏览器需要去验证我们的证书是不是合法的和有效的。
    • 如果使用大部分SSL,CA颁发证书,一般是一年有效期。这个有效期是如何体现的呢?
      • CA中心会把过期的证书放到CRL服务器,这个服务器会把所有的过期证书形成一条链条,所以它的性能非常的差,所以它又推出了OCSP程序,OCSP可以就一个证书去查询它是否过期。但OCSP程序性能还不是很高,所以往往比如我们的Nginx,会有一个OCSP的开关,打开开关以后,Nginx会主动去OCSP程序去查询,这样大量的客户端就可以通过Nginx获取到证书是否有效

  • 证书类型

    • 域名验证(domain validated,DV)证书
      • 这个证书只会去验证域名的归属是否正确,比如我们申请证书的时候,只要你的域名指向的是你正在申请证书的那台服务器,你就可以成功地申请到证书,如果你使用其他CA机构颁发的证书,可能会去验证你注册的那个邮箱是否正确
    • 组织验证(organization validated,OV)证书
      • 我们在申请证书的时候,会去验证我们填写的机构,企业名称是否是正确的,所以OV证书的申请往往需要几天的时间,不像DVz证书基本上实时就可以获取到了,而OV证书的价格也往往高于DV证书,DV证书很多都是免费的
    • 扩展验证(extended validation,EV)证书
      • 比OV证书验证更加严格,所以大部分的浏览器符EV证书的显示非常的友好,它会把我们申请证书时,所填写的机构名称在浏览器的地址的最左侧显示出来
  • 获取到证书后,是如何生效的?浏览器从安全角度上,对DV,OV,EV效果都是一样的,唯一验证的就是它的证书链。

证书链   

  • 对于上图中的站点www.xxx,它的上一级签发机构(二级证书机构),Encrypyion.......CA -G1,再上一级是DigiCert....... Root CA,这是根证书。
  • 目前所有的站点主证书都是三个证书构成的:
    • 根证书
    • 二级证书
    • 主证书。
  • 根正书验证是非常谨慎的,像windows,安卓等系统每一年以上才会去更新一次他的根证书库,对于一个新的根证书,CA机构是很难快速的加入到操作系统或者浏览器认可的证书库中,大部分浏览器使用的是操作系统的证书库,像Firefox会维护自己的根证书库,所以浏览器在验证我们的证书是否有效时
  • 除了验证有没有过期以外,最主要验证根证书是不是有效的,是不是被根证书库所认可的。
  • Nginx在向浏览器发送证书时需要发送两个证书,也不是三个证书,因为根证书是被操作系统或者浏览器内置的,我们不要发送,比如从上面的抓包库中可以看到,当Nginx向浏览器发送证书时,会首先发送我们站点的主证书,接下来会发送二级证书,浏览器会自动去验证二级证书的签发机构,根证书是不是有效的。
  •  浏览器和服务器通信时,怎样确认对方是否是信赖的人,归根结底,是去验证给这个站点颁发的根证书的发行者是不是有效的

猜你喜欢

转载自blog.csdn.net/baidu_41388533/article/details/106854132
今日推荐