- version: 表示 PKCS#10 标准的版本号;
- subject : 表示服务器主体的可分辨名称DN , 最重要的是CN值 , 表示证书需要包含的域名 , 可以包含多个;
- subjectPKInfo: 服务器密钥对的公钥 , 可以是RSA公钥或ECDSA公钥 。服务器主体使用该密钥对的私钥对certificationRequestInfo进行数字签名最终生成CSR文件 。
- 服务器主体生成一对密钥对 , 如RSA密钥对;
- 生成CertificationRequestInfo结构体 , 主要包含域名、公钥;
- 使用私钥对CertificationRequestInfo进行数字签名得到签名值;
- 组合CertificationRequestInfo信息和签名得到最终的CSR文件 。
3.3.5 证书分类根据验证模式分类
- DV(Domain Validated)证书:最常见的一种证书类型 , CSR包含域名信息 , CA检验域名所有权 , 如果通过审核 , 申请者就有权申请该域名的证书 。校验方式有DNS TXT记录方式、服务器放置特殊文件方式 。
- OV(Organization Validated)证书:CA机构对申请者的身份进行严格的审核 , 确保申请者的身份是真实的 。申请时间比DV证书要长 。
- EV(Extended Validation)证书:对申请者进行更严格的审核 。
- 单域名证书
- 泛域名证书
- SAN(Subject Alternative Names)证书 , 可以把多个不同的注册域名合并到一张证书 。
- SAN泛域名证书 。
文章插图
- 服务器实体在配置HTTPS的时候 , 不只是配置服务器实体证书 , 还涉及其它证书;
- 证书链的理解:
- DigiCert信任了GeoTrust RSA CA 2018
- GeoTrust RSA CA 2018信任了*.csdn.net
- 服务器实体证书
- 中间证书
- 根证书:自签名证书 , 位于证书链中的最顶端 。
2. 信任链校验
- 浏览器连接至一个https网站
- 服务器发完整证书给浏览器 , 如fullchain.pem 。对X.509标准来说 , 服务器应该发送完整的证书链(不包含根证书) 。如果发送的证书不完整 , 客户端可以找到所有的证书链 , 但有的浏览器可能不会这样做 , 造成不兼容 。
通过服务器实体证书找到完整证书链的方法 , 从中解析CA密钥标识符 , 进而获取上一级中间证书文件 , 通过中间证书的CA密钥标识符继续向上找到根证书 。 - 校验证书链关系
浏览器要信任每张证书 , 必须确保每个证书(除了根证书)的签发者都是它的上一级证书的使用者(subject) 。如果不符合 , 证书校验就会失败 。
openssl version -a
文章插图
windows在HKEY_CURRENT_USER注册表管理根证书
Mozilla在NSS底层独立维护了可信任的根证书库 。
五、CRL 证书吊销列表CRL(Certificate Revocation List) , 是PKI技术的重要组成部分 。CRL是TLS/SSL协议的一部分 , X.509 V2 标准定义了CRL的语法和语义信息 , CRL结构类似于证书 , 也使用ASN.1 结构来解释其含义 。
六、OCSPCRL正逐步被OCSP替代(在线证书状态协议 , Online Certificate Status Protocol) , 定义在RF6960文档中 , 主要目的是为了替换CRL , 更好地核实证书的使用 。
七、证书格式1. DERASN.1是一种抽象的数据结构 , 描述了复杂的对象 。证书本质是一个文件 , 要通过一个规则把ASN.1转换为二进制文件 。在X.509证书中 , 使用的编码方式是 Distinguished Encoding Rules(DER) 。
推荐阅读
- 详解Java面向对象开发,给你不一样的体验
- 你在开发API时是如何设计签名验证的?
- 味道|曾开发可以舔的电视:日本研究人员推出增强咸味的筷子
- 程序员效率神器:shell命令蜕变,用颜色划出重点
- 十年架构师吐血整合Java开发必备宝典,凭借这份宝典定级腾讯T3-4
- 你如何理解敏捷开发?
- 服务器系统哪家强 Ubuntu Server与CentOS
- 微信小程序开发,多端框架全面测评
- 今日给大家推荐一个java开发神器-EasyCode
- linux服务器内存异常,究竟在哪消耗了2.5G?