https相比http多了什么

HTTP(HyperText Transfer Protocol 超文本传输协议):是一种用于分布式、协作式和超媒体信息系统的应用层协议,是一个客户端(用户)和服务端(网站)之间请求和应答的标准,通常使用TCP协议,HTTP是万维网的数据通信的基础。

HTTPS(HyperText Transfer Protocol Secure 超文本传输安全协议):常称为HTTP over TLSHTTP over SSLHTTP Secure)HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。

SSL与TLS区别

  • SSL(Secure Sockets Layers 安全套接层)
  • TLS(Transport Layer Security 安全传输层)

SSL和TLS是一种能够在服务器,machines和通过网络运行的应用程序(列如,客户端连接到web服务器)之间提供身份认证和数据加密的加密协议。SSL是TLS的前世。多年来,新版本的发布用来解决漏洞,提供更强大支持,更安全的密码套件和算法。

TLS只不过是SSL的一个最新的版本

参考

为什么购买的证书名字叫SSL证书

实际上应该称为适用于SSL(或TLS)加密的证书,目前来说称为TLS证书更为合适,SSL只是习惯性的叫法并且一直沿用下来(如OpenSSL),所以在理解上会导致一些歧义。

多出来的S到底工作在OSI网络模型的哪一层

SSL协议实现为HTTP协议的透明包装。就OSI模型而言,它有点像灰色区域。作用于应用层(七层)和运输层(四层)之间,但通常在应用层中实现。所以对于这个问题,OSI模型只是一种概念模型,并没能很好的表达SSL的位置。

参考

证书的本质是什么

证书的本质为**权威机构(CA供应商)目标机构(申请证书的企业)按照不同等级的要求进行核验后所颁发的用于给目标机构客户(网站用户)**进行核查的一种证明。
所以在这种角色关系中,CA的权威性至关重要,如果CA存在被入侵或私自签发证书的情况,那会直接被各系统/浏览器将其根拉入黑名单。

浏览器如何验证https证书合法性

  1. 客户端发送信息,带上支持的SSL或者TLS版本(不同浏览器支持程度不同)。
  2. 服务器返回确认使用的加密通信协议版本以及加密随机数和CA证书。
  3. 浏览器验证证书(存在双向验证和单项验证) -> OCSP或者CRL 结合自带truststore。
  4. 检查CA证书的根证书颁发机构是否受浏览器信任。
  5. 检查CA证书中的证书吊销列表,检查证书是否被吊销。
  6. 检查CA证书是否在有效期内。
  7. 检查部署CA证书的网站域名与证书颁发的域名是否一致。
  8. 浏览器核对该网站是否存在于欺诈网站数据库中。

本地内置跟证书与OCSP

系统或浏览器中都会内置部分权威CA的根证书,但是同时又有OCSP(在线证书状态检查协议Online Certificate Status Protocol)或CRL(撤销证书列表Certificate Revocation Lists)这种技术的存在,这两者在验证证书有效性上的功能是否重复,OCSP存在的意义是啥

首先要说明的是,一张被签发的证书完全可以在离线状态下依赖内置根证书验证有效性,但是如果证书签发后被吊销,则需要OCSP或者CRL即证书吊销列表进行核验

OCSP是服务于客户端场景的,通过OCSP,浏览器可以在线向CA证书颁发机构查询证书的有效性,从而在证书泄漏等问题发生后,及时有效的保护客户端浏览的安全

如何验证中间证书

每一张证书都是由上级CA证书签发的,上级CA证书可能还有上级,最后会找到根证书。根证书即自签证书,自己签自己。
当你验证一张证书是否是由上级CA证书签发的时候,你必须有这张上级CA证书。通常这张证书会内置在浏览器或者是操作系统中,有些场景下应用系统也会保留。

中间证书缺失问题

由于系统只内置了根证书及部分中间证书,如果当前要验证的证书恰恰是由非内置的中间证书所签发,如何验证证书的合法性?

如 在Godaddy在证书购买页面中,提到在较旧版本浏览器或服务器可能需要的中间证书,所以在部署证书时,为何更好的兼容性,需要将中间证书拼接到自己的证书中。