简记 SSL 证书

in 运维 with 2 comments

背景

网站没有“不报错”的证书,蓝瘦;自签名证书出问题,香菇……正好从去年初开始网上出现很多免费证书资源,就研究了一下。

证书类型

域名型(DV)SSL证书:信任等级一般,只需验证网站的安全性便可以颁发证书保护网站。
企业型(OV)SSL证书:信任等级强,需要验证企业的身份,审核严格,安全性更高。
增强型(EV)SSL证书:信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最高,同时可以激活“绿色网址栏”。

证书报错的主要原因:
1、不受信任的颁发机构;
2、时间
3、主机名不匹配
4、用途不匹配?个人证书?企业证书?web证书?

证书解决思路

折中解决办法:向国内的一些二级代理申请免费证书资源,例如腾讯云、阿里云、又拍云、七牛云等。
免费的域名型(DV)证书,一般为单域名证书(例如 “shiyl.com” 和 “www.shiyl.com” 各自需要一个证书),且需要证明网站/域名的所有权(最常见的是验证添加一条 TXT 解析记录)。

免费 DV 证书的申请方式不在这里赘述,阿里云和腾讯云都有教程。


相关概念

引用赛门铁克给出的定义:一个可信任的第三方组织或公司,它颁发用于创建数字签名和公钥-私钥对的数字证书。CA 在此过程中的作用是,保证授予唯一证书的实体实际上与它所声称的一致。这意味着 CA 通常需要与申请实体达成协议,以确认其所声称的身份。CA 是数据安全和电子商务的重要组成部分,因为它们保证交换信息的双方与它们所声称的完全一致。

有关CA的特性:

仅仅只有一个受信任的介绍者(证书颁发机构)
CA签署每一个人的公钥
每个人都有CA的公钥

PKI 是通过使用公钥技术和数字证书来提供系统信息安全服务,并负责验证数字证书持有者身份的一种体系。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。PKI保证了通信数据的私密性、完整性、不可否认性和源认证性。
PKI 的本质是把非对称密钥管理标准化,其主要功能是绑定证书持有者的身份和相关的密钥对(通过为公钥及相关的用户身份信息签发数字证书),为用户提供方便的证书申请、证书作废、证书获取、证书状态查询的途径,并利用数字证书及相关的各种服务(证书发布,黑名单发布,时间戳服务等)实现通信中各实体的身份认证、完整性、抗抵赖性和保密性。

最简单的证书包含一个公钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效期,颁发者(证书授权中心)的名称,该证书的序列号等信息,证书的结构遵循X.509 v3版本的规范。如下图:
证书结构.jpg

证书的各字段解释:

版本:即使用X.509的版本,目前普遍使用的是v3版本(0x2)。
序列号:颁发者分配给证书的一个正整数,同一颁发者颁发的证书序列号各不相同,可用与颁发者名称一起作为证书唯一标识。
签名算法:颁发者颁发证书使用的签名算法。
颁发者:颁发该证书的设备名称,必须与颁发者证书中的主体名一致。通常为CA服务器的名称。
有效期:包含有效的起、止日期,不在有效期范围的证书为无效证书。
主体名:证书拥有者的名称,如果与颁发者相同则说明该证书是一个自签名证书。
公钥信息:用户对外公开的公钥以及公钥算法信息。
扩展信息:通常包含了证书的用法、CRL的发布地址等可选字段。
签名:颁发者用私钥对证书信息的签名。


数字证书包含个人信息,公钥,证书有效期,认证机构的数字签名(参考证书结构)
数字证书验证的过程,仅仅只是解决“公钥持有者身份”的问题
当用户需要进行对应的 RSA 操作时,就需要交互自己的证书

例如:
用户B获取到了用户A的证书,包含个人信息,公钥,CA做的数字签名
B会使用证书服务器的公钥,解密数字签名,得到明文的摘要
再将A的个人信息和公钥做哈希,得到另外一个摘要
对比两个摘要,相等,则证书验证通过(同时可确认A的公钥是真实的)

Comments are closed.
  1. 阿里云免费证书下载后有两个文件。一个是扩展名为.pem的文件,一个是扩展名为.key的文件。.pem文件中已经包含服务器证书和CA中间证书,第一段为服务器证书,第二段为CA中间证书。.key文件是证书私钥。.pem 转 .crt,可以通过如下方式转化:
    openssl x509 -outform der -in shiyl.com.pem -out shiyl.com.crt

    Reply
  2. 使用第三方 pem 文件登陆服务器(这里这个 pem 文件一般是一个私钥):
    chmod 600 KeyPair-2d8f.pem
    ssh-keygen -e -f KeyPair-2d8f.pem > KeyPair-2d8f.pem.pub (私钥转公钥)

    Reply