一, 自签证书和非自签证书的区别
1.1, 证书的信任链
从 2017 年开始意味着浏览器迁移 HTTPS 的重要开始, 因为 Chrome 56 版本讲 HTTP 标记为非安全的网站. 证书是用于 SSL 安全通信信道鉴权, 它可以防止中间人攻击. 证书有一条信任链, 证书的真实安全身份由签发者提供保证, 这一个信任关系常见的有 2~4 级, 根证书的机构就是那些知名机构, 这些知名机构被安装于世界上几乎所有主流的浏览器. 一个证书通过工具查看到证书的拥有者和签发者.
图一, 证书的信任链
openssl 的 x509 工具提供了查看所有者 (subject) 和颁发者 (issuer) 的方法.
- > openssl x509 -subject -issuer -noout -in root-ca.crt
- subject=C = CN, ST = guangdong, L = shenzhen, O = Shenzhen Tencent Computer Systems Company Limited, CN = nc.qzone.qq.com
- issuer=C = BE, O = GlobalSign nv-sa, CN = GlobalSign Organization Validation CA - SHA256 - G2
1.2, 自签发和机构签发证书
机构签发的证书 subject 和 issuer 项目名字不一样, 而自签的证书 subject 和 issuer 是同一个项目. 比如下面就是一个自签发的证书.
- subject=C = cn, ST = gd, L = sz, O = tencent, OU = apd, CN = www.mariolu.com
- issuer=C = cn, ST = gd, L = sz, O = tencent, OU = apd, CN = www.mariolu.com
自签发的证书是没有被信任. 机构证书的签发者都是公认的知名 CA 机构. 知名 CA 机构会被主流客户端和服务器所认可. 所以自签发的证书在 https 通信中会被浏览器识别并向访问者发出安全警告.
1.3, 证书的签发机构
目前公认的知名 CA 机构有(RapidSSL,Symantec(VeriSign),GeoTrust,Thawte,Cornodo,Sectigo 等)(https://www.sslrenewals.com/ssl-brands.aspx). 每家 CA 机构提供不同安全等级的证书和价格服务.
图二, 知名的 CA 签发机构
证书鉴权分为三种安全类型等级:
域名鉴权 (最低等级): 这种级别的证书也称为 DV(Domian Validation) 证书. 只验证证书的注册网站域名, 可 10 分钟快速颁发, 能起到加密传输的作用, 但无法向用户证明网站的真实身份. 也只是证明了该域名是正确的, 无法证明网站的真实注册身份, 所以有可能被钓鱼网站 利用. 免费签发证书都是这个类型的, 只是提供了对数据的加密, 但是对提供证书的个人和机构的身份不做验证
组织鉴权: OV(Organization Validation)证书, OV SSL, 对申请者做严格的身份审核验证, 提供可信身份证明. 证书上显示了公司的真实注册身份. 安全性更高. OV 申请是收费的~
扩展鉴权(最高等级):EV(Extended Validation), 最安全, 最严格 超安 EV SSL 证书遵循全球统一的严格身份验证标准, 在地址栏可以显示公司名字. 一般用于金融支付电商行业等强调网站安全, 或者强调企业可信形象的网站, 涉及交易支付, 客户隐私信息和账号密码的传输, 申请费用也是最贵的.
1.4, 证书的选择
多域名证书, 一个证书覆盖多个具体域名的证书.
泛域名证书: 所有的二级三级 (n 级) 子域名网站, 可以通配的证书. 但是这里通配符只能是一个级别的证书. 比如 *.qq.com 可以匹配 aa.qq.com 而不能匹配 b.aa.qq.com.. 这里的通配符是无限个数的子域名证书, 所以如果新的域名要接入 https, 显然是最方便的. 但是泛域名证书不能做到 EV 级别安全的
CA 机构的选择: 除了以上的区别, 剩下的只有算法的区别. 不同的产商提供不同的算法. 安全等级高, 性能快, 价格便宜是最优的选择. 一般来说: RapidSSL 的产品快速, 价格适中. GeoTrust 提供的证书比较适用于商业化网站. 小型网站, 在所有厂家中平衡性高的是 Symantec.Comodo 像是这几家的混合体.
1.5, 免费和收费证书的区别
收费的和免费的签发证书有什么区别呢? 有以下三个主要区别
证书类型: 免费的只有 DV 安全级别的证书
有效期: 免费的一般只有 1~3 月的有效期. 而收费的有 1~2 年.
当然收费的 CA 机构有一整套售后服务支持体系. 收费机构的更有保证.
二, 怎么申请免费的非自签证书
这里以签发一本 ECC 证书为例介绍如何生成自签名证书, 如何生成免费的非自签证书.
2.1, 自签证书
利用 openssl 自带工具生成 ECC 证书:
- openssl ecparam -genkey -name prime256v1 -out key.pem // 生成 ECC key
- openssl req -new -sha256 -key key.pem -out csr.csr // 生成 CSR 证书签名请求
- openssl req -x509 -sha256 -days 365 -key key.pem -in csr.csr -out certificate.pem// 生成证书
- openssl req -in csr.csr -text -noout | grep -i "Signature.*SHA256" && echo "All is well" || echo "This certificate will stop working in 2017! You must update OpenSSL to generate a widely-compatible certificate"
需要注意的是: 如果遇到生成 pem 使用 openssl 格式报 RAND file 不存在, 需要在 openssl.cnf(我的路径 / usr/local/openssl_1.1.1/ssl/openssl.cnf)的 RANDFILE = /data/mariolu/ecc/randfile. 这个 randfile 使用 urandom 设备生成. 命令 dd if=/dev/urandom of=randfile bs=256 count=1
2.2, 生成免费的非自签证书
这里以网上比较流行的免费 CA 机构签发者 Let's Encrypt(https://letsencrypt.org/getting-started/)为例生成非自签发 ECC 证书, 通过该网站的连接 https://certbot.eff.org/ 找到 cerbot 这个 shell 工具, 用这个工具生成 ECC 证书.
生成步骤:
这两个生成私钥和 csr 请求, 和自签证书生成的前两个步骤一样:
- openssl ecparam -genkey -name secp384r1 | openssl ec -out elsenow-ecc.key
- openssl req -new -sha256 -key elsenow-ecc.key -nodes -out elsenow-ecc.csr -outform pem
和自签不一样的是, csr 文件通过 cerbot 提供的工具端进一步生成证书. 这里注意的是提供的注册域名必须是真实的, 可以解析到 ip 的域名.
sh -x ./certbot-auto --cb-auto-has-root --le-auto-phase2 certonly --csr /data/mariolu/elsenow-ecc.csr --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
执行完成后, 会生成三个文件 0000_cert.pem(业务证书部分),0000_chain.pem(CA 证书部分),0001_chain.pem(业务证书部分 + CA 证书部分).
原创声明, 本文系作者授权云 + 社区发表, 未经许可, 不得转载.
如有侵权, 请联系 yunjia_community@tencent.com 删除.
发表于 1 天前
网络安全费用中心网站
来源: https://www.qcloud.com/developer/article/1411029