计算机系统学习之(8):认证 (Certificate)

本文详细介绍了数字证书的原理、目的和不同等级,包括域名验证、机构验证和扩展验证。同时,讨论了SSL证书在验证网站身份过程中的作用,以及证书撤销和OCSP在线证书状态协议。此外,还提到了证书透明性对于防止恶意证书发放的重要性。最后,简单概述了SSL/TLS握手协议在确保网络安全通信中的角色。
摘要由CSDN通过智能技术生成

数字证书

  • 数字证书由权威机构发型,人们可以在互联网上用来识别对方的身份
  • 证书遵循国际标准 ITUTX.509,主要包括下面的内容:
    • 版本信息
    • 序列号,每个证书都有唯一的序列号
    • 使用的签名算法
    • 签发机构(命名规则一般采用 X.500格式)
    • 有效期
    • 证书所有人的名称
    • 证书所有人的公钥 public key
    • 证书发行者的签名
      在这里插入图片描述

证书的目的

  • 证明某个 public key 确实是某个人所有的
  • 证书本身是有第三方签署的(Cetificate Signature)

证书等级

在这里插入图片描述

  • 最高级别的证书有一个 root private key 和一个 root public key,它通过根私钥对自己的根证书进行签名(root CA’s signature);验证根证书的签名只能用根公钥,这种情况叫做自签名(self sign)
    在这里插入图片描述
  • 中介证书是被根证书签名的证书,是被根证书的私钥进行签名的,因此要验证中介证书也需要使用根公钥
  • 终端实体证书是有中介证书签发的;使用中介证书对终端实体进行认证的目的是为了减少根证书签名的负担,相当于使用一个中介来代替根实行认证的权利

SSL 证书类型

域名验证(Domain validation)

  • 最常使用的验证方式

  • 验证请求者是否对网站的域名有一定的控制权

  • 例如如果登录一个网站,网站需要你提供一些私人的信息,那么这个时候我们就需要通过查看当前让我们提供身份信息的服务器是否拥有这个网站的控制权,以免是其他身份不明者冒充的
    在这里插入图片描述

  • 在这个例子中,客户端是右边,提供服务的网站在左边

  • 首先右边先要求左边的网站执行第一个操作 Put… 这个行为是为了证明当前的网络服务器对这个域名是有操作和控制权的

  • 第二步是让网站对一个随机数进行签名,以证明网站具有私钥,证明网站拥有私钥以此证明自己的验证网站身份

问题
  • 域名验证并没有将 domain 和一个现实世界的实体建立联系,因此还是有可能被欺骗
    在这里插入图片描述
    在这里插入图片描述
    • 假设现在左边的机构是有问题的,然后右边要让左边完成上述的两个动作,然后左边的问题机构将第一个验证控制权的问题发给真正的经过授权的机构,然后将正确机构返回的结果直接返回给右边,那么右边不能发觉左边问题机构是有问题的
    • 对于私钥签名的问题,左边只需要确实用自己假的私钥进行签名,然后把公钥发送给右边,右边的用户也完全察觉不到问题

机构验证(Organization validation)

  • 验证这个网站是不是一个合法的网站

扩展验证(Extended validation)

  • 核实法人实体、管辖权和授权官员的存在(例如,实际地址、电话#)

证书撤销(certificate revocation)

  • 当发现错误的签发问题,那么要撤回签发的证书
  • 当一个机构的私钥泄露,那么也要撤回签发的证书

证书吊销列表

  • 权威机构会将所有需要吊销证书的域名维护在一个 list 中,
  • 每次用户访问某个网站的时候都去查这个完整的 list,看看当前的网站是否出现在这个 list 中,如果出现,那就不访问了
  • 这种方式速度较慢,但是可以保证 privacy

OCSP:Online Certificate Status Protocol(在线证书状态协议)

  • 用户 / browser 直接询问 CA 某个证书是否已经被吊销,
  • 这种方式快,但是容易存在隐私问题

证书透明性

在这里插入图片描述
在这里插入图片描述

  • 将所有签发过的证书全部公开出来
  • 检测:
    • 错误认证的证书
    • 恶意发放的证书

SSL / TLS

  • Internet 传输层 安全通信协议
  • 支持所有流行的web浏览器、web服务器、internet商务网站
  • 在 HTTP 的基础上实现了 TLS 协议 -> HTTPS

Handshake 协议

在这里插入图片描述

  • 使用 公钥加密 在客户端和服务器之间 建立多个共享密钥
  • 客户机和服务器之间的初始协商,确定其在TLS中后续交互的参数
  • 具体流程如下:
  • 客户端向服务器发送自己使用的协议版本、加密算法等
    在这里插入图片描述
  • 服务器根据客户端的各种版本决定最终使用哪种协议版本以及加密算法进行通信
    在这里插入图片描述
  • 服务器发送包含其公钥或其Diffie-Hellman公钥gy的公钥证书(取决于所选的加密套件)
  • 这个步骤是验证证书的阶段
    在这里插入图片描述
  • client 通过 server 提供的公钥对自己的私钥进行加密,并把加密的私钥发送给 server
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
微信开发使用的cert,里面微信支付API共四份(证书pkcs12格式、证书pem格式、证书密钥pem格式、CA证书),为接口中强制要求时需携带的证书文件。 证书属于敏感信息,请妥善保管不要泄露和被他人复制。 不同开发语言下的证书格式不同,以下为说明指引: 证书pkcs12格式(apiclient_cert.p12) 包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份 部分安全性要求较高的API需要使用该证书来确认您的调用身份 windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户ID(如:10010000) 证书pem格式(apiclient_cert.pem) 从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制 部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供 您也可以使用openssl命令来自己导出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem 证书密钥pem格式(apiclient_key.pem) 从apiclient_cert.p12中导出密钥部分的文件,为pem格式 部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供 您也可以使用openssl命令来自己导出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem CA证书(rootca.pem) 微信支付api服务器上也部署了证明微信支付身份的服务器证书,您在使用api进行调用时也需要验证所调用服务器及域名的真实性 该文件为签署微信支付证书的权威机构的根证书,可以用来验证微信支付服务器证书的真实性 某些环境和工具已经内置了若干权威机构的根证书,无需引用该证书也可以正常进行验证,这里提供给您在未内置所必须根证书的环境中载入使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值