背景
网站没有“不报错”的证书,蓝瘦;自签名证书出问题,香菇……正好从去年初开始网上出现很多免费证书资源,就研究了一下。
证书类型
域名型(DV)SSL证书:信任等级一般,只需验证网站的安全性便可以颁发证书保护网站。
企业型(OV)SSL证书:信任等级强,需要验证企业的身份,审核严格,安全性更高。
增强型(EV)SSL证书:信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最高,同时可以激活“绿色网址栏”。
证书报错的主要原因:
1、不受信任的颁发机构;
2、时间
3、主机名不匹配
4、用途不匹配?个人证书?企业证书?web证书?
证书解决思路
- 自签名证书,例如 ASA 产生自签名证书,要求每个客户把都这个证书放到受信任的证书颁发机构列表。(无法校验,不易操作)
- 企业级证书,使用企业自建的证书服务器为网络设备或者服务器签发证书。(企业范围内访问不会报错)
- 互联网的 PKI 颁发机构,颁发的证书。(靠谱,通常费用昂贵)
折中解决办法:向国内的一些二级代理申请免费证书资源,例如腾讯云、阿里云、又拍云、七牛云等。
免费的域名型(DV)证书,一般为单域名证书(例如 “shiyl.com” 和 “www.shiyl.com” 各自需要一个证书),且需要证明网站/域名的所有权(最常见的是验证添加一条 TXT 解析记录)。
免费 DV 证书的申请方式不在这里赘述,阿里云和腾讯云都有教程。
相关概念
- CA (Certificate Authority,证书颁发机构)
引用赛门铁克给出的定义:一个可信任的第三方组织或公司,它颁发用于创建数字签名和公钥-私钥对的数字证书。CA 在此过程中的作用是,保证授予唯一证书的实体实际上与它所声称的一致。这意味着 CA 通常需要与申请实体达成协议,以确认其所声称的身份。CA 是数据安全和电子商务的重要组成部分,因为它们保证交换信息的双方与它们所声称的完全一致。
有关CA的特性:
仅仅只有一个受信任的介绍者(证书颁发机构)
CA签署每一个人的公钥
每个人都有CA的公钥
- PKI (Public Key Infrastructure,公钥基础设施)
PKI 是通过使用公钥技术和数字证书来提供系统信息安全服务,并负责验证数字证书持有者身份的一种体系。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。PKI保证了通信数据的私密性、完整性、不可否认性和源认证性。
PKI 的本质是把非对称密钥管理标准化,其主要功能是绑定证书持有者的身份和相关的密钥对(通过为公钥及相关的用户身份信息签发数字证书),为用户提供方便的证书申请、证书作废、证书获取、证书状态查询的途径,并利用数字证书及相关的各种服务(证书发布,黑名单发布,时间戳服务等)实现通信中各实体的身份认证、完整性、抗抵赖性和保密性。
- 证书结构
最简单的证书包含一个公钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效期,颁发者(证书授权中心)的名称,该证书的序列号等信息,证书的结构遵循X.509 v3版本的规范。如下图:
证书的各字段解释:
版本:即使用X.509的版本,目前普遍使用的是v3版本(0x2)。
序列号:颁发者分配给证书的一个正整数,同一颁发者颁发的证书序列号各不相同,可用与颁发者名称一起作为证书唯一标识。
签名算法:颁发者颁发证书使用的签名算法。
颁发者:颁发该证书的设备名称,必须与颁发者证书中的主体名一致。通常为CA服务器的名称。
有效期:包含有效的起、止日期,不在有效期范围的证书为无效证书。
主体名:证书拥有者的名称,如果与颁发者相同则说明该证书是一个自签名证书。
公钥信息:用户对外公开的公钥以及公钥算法信息。
扩展信息:通常包含了证书的用法、CRL的发布地址等可选字段。
签名:颁发者用私钥对证书信息的签名。
CA 颁发证书流程
- 每个实体都要获取 CA 的公钥(认证 CA 的过程)
- 每个实体都要提交自己的公钥给 CA(注册到 PKI )
- 这个初始步骤,必须手动认证或者通过一个可信任的传输网络来执行
- CA 使用自己的私钥 为提交的公钥 做数字签名
- 被数字签了名的公钥(身份证书)再返回给实体
- 实体现在就可以通过非信任的网络来彼此交换被 CA 签了名的公钥了
- 收到的公钥都是被CA的公钥所确认的,CA 的公钥在每个实体本地必须是有效的
- 每个实体都要获取 CA 的公钥(认证 CA 的过程)
- 数字证书验证的过程
数字证书包含个人信息,公钥,证书有效期,认证机构的数字签名(参考证书结构)
数字证书验证的过程,仅仅只是解决“公钥持有者身份”的问题
当用户需要进行对应的 RSA 操作时,就需要交互自己的证书
例如:
用户B获取到了用户A的证书,包含个人信息,公钥,CA做的数字签名
B会使用证书服务器的公钥,解密数字签名,得到明文的摘要
再将A的个人信息和公钥做哈希,得到另外一个摘要
对比两个摘要,相等,则证书验证通过(同时可确认A的公钥是真实的)
本文由 SHIYL 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Apr 17, 2020 at 10:45 am
阿里云免费证书下载后有两个文件。一个是扩展名为.pem的文件,一个是扩展名为.key的文件。.pem文件中已经包含服务器证书和CA中间证书,第一段为服务器证书,第二段为CA中间证书。.key文件是证书私钥。.pem 转 .crt,可以通过如下方式转化:
openssl x509 -outform der -in shiyl.com.pem -out shiyl.com.crt
使用第三方 pem 文件登陆服务器(这里这个 pem 文件一般是一个私钥):
chmod 600 KeyPair-2d8f.pem
ssh-keygen -e -f KeyPair-2d8f.pem > KeyPair-2d8f.pem.pub (私钥转公钥)