本文目录:
- 1、Let’s Encrypt介绍
- 2、如何使用Let’s Encrypt永久免费SSL证书
- 3、Let’sEncrypt快速颁发及自动续签泛域名证书实践指南
- 4、Let’s Encrypt 证书申请及配置
- 5、如何获得Let’s Encrypt证书
Let’s Encrypt介绍
【现状】Let’s Encrypt 是一家免费、开放、自动化的证书颁发机构(CA),为公众的利益而运行。它是一项由 Internet Security Research Group(ISRG) 提供的服务。我们以尽可能对用户友好的方式免费提供为网站启用 HTTPS(SSL/TLS)所需的数字证书。这是因为我们想要创建一个更安全,更尊重隐私的 Web 环境。
【为什么要做】任何拥有域名的人都可以使用 Let’s Encrypt 免费获取受信的证书,
CA是Certificate Authority的缩写,也叫“证书授权中心”,就是负责管理和签发证书的第三方机构。
借用网上一位同学的例子:假如你供职于X公司,老板让你去拜访A公司老总谈点业务,此时你直接去可能前台MM给你挡住了,因为没人认识你,那怎么办?你发现C公司跟A公司业务往来密切,你对C公司也熟悉,你就去找C公司的老板给你写了封介绍信并且盖上C公司章,然后你拿着介绍信去A公司,把介绍信给前台MM一看,前台MM一看C公司的章就信任你了,就让你去拜访了。证书就是介绍信,通过盖章的方式来解决信任问题。
简而言之: 发信人对内容进行hash 计算,得到内容摘要(digest)– 发信人对摘要使用私钥加密,生成”数字签名”(signature) – 内容附上数字签名,一起发送。
身份验证过程:
内容 :含有公钥,及公钥拥有者的身份。
作用 :1. 证明证书中的公钥 就是信件发送者的的公钥 ; 2. 用通过认证的公钥解密内容
特点:1. 第三方权威机构颁发;2. 具有有效期
数字证书使用 :
由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名后形成的一个数字文件,生成”数字证书”(Digital Certificate);
A 在发送信件给B的时候,同时附上签名和证书;
B 用CA的公钥解开数字证书,就可以拿到A 的真实公钥了,然后就能证明”数字签名”的是否属A。
前文说到,用数字签名的方式 发送信件也是有一定风险的。比如 公钥被替换,无法知晓公钥的来源或公钥对应的私钥的持有者身份 。于是,数字证书便有了它的作用。
Let’s Encrypt 是一个证书颁发机构(CA)。要从 Let’s Encrypt 获取您网站域名的证书,您必须证明您对域名的实际控制权。您可以在您的 Web 主机上运行使用 ACME 协议 的软件来获取 Let’s Encrypt 证书。
RAS一种非对称加密算法,公钥(PK)加密,私钥(SK)解密,虽然SK是由PK决定的,但是大数分解计算量太大,无法穷举破解,所以被认可。但是随着量子计算的产生,对其安全性将构成威胁, RAS百科
在说明证书制作过程前,先说明制作证书时,用到的几类文件的作用
.key 文件:私钥
.csr 文件:证书签名请求文件,含有公钥信息,certificate signing request的缩
.crt 文件:用.csr 生成的证书文件,certificate的缩写,这就是数字证书
生成自签名根证书。就是模仿证书权威机构的作用,给用户提供一个权威机构的根证书。在真实场景中,根证书是CA认证中心给自己颁发的证书,是信任链的起始点。任何安装CA根证书的服务器都意味着对这个CA认证中心是信任的。是信任链的起始点。任何安装CA根证书的服务器都意味着对这个CA认证中心是信任的。
生成CA 的私钥 openssl genrsa -out ca.key 2048
生成CA 证书请求文件 openssl req -new -key ca.key -out ca.csr
生成CA证书 openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
如何使用Let’s Encrypt永久免费SSL证书
直接去申请就可以了。这里需要注意的是免费SSL证书并不是适合所有的网站,和付费SSL证书还是有很大区别的,具体区别如下:
1、验证类型
免费SSL证书只有域名验证性型(DV SSL证书),而付费SSL证书有域名验证型(DV SSL证书)、企业验证型(OV SSL证书)、组织验证型(EV SSL证书)。
2、使用限制
免费SSL证书在使用时还有诸多限制,比如:免费SSL证书只能绑定单个域名、不支持通配符域名、多域名等。此时相关服务也会大打折扣,大多数免费的SSL证书都由用户自行安装,无法提供后期服务和技术支持,在遇到SSL证书安装问题时,也无法得到解决。
而提供付费SSL证书的商家,一般会提供申请购买到安装的一系列访问,后续出现问题,还找提供商寻求解决。
3、使用时间
免费SSL证书有效期过短,每三个月或者一个月就要更新一次,到期后还要自己申请,很多用户很容易就会忘记续期。
而付费SSL证书的使用年限一般是2年,不用时时刻刻担心证书过期的问题。
4、选择多样性
目前提供免费SSL证书的Lets Encrypt、Comodo等,而付费SSL证书选择性就大得多,Comodo、GeoTrust、Symantec、RapidSSL等知名CA机构。
总的来说,免费的SSL证书,适用于个人博客,作为一个临时的解决方案。企业或流量较高的个人网站还是选择付费的SSL证书比较好。
Let’sEncrypt快速颁发及自动续签泛域名证书实践指南
[TOC]
描述: Let’s Encrypt 是免费、开放和自动化的证书颁发机构由Linux基金会( Linux Foundation )进行日常管理维护,它为1.8亿个网站提供TLS证书的非盈利性证书颁发机构, 通过它我们可以免费申请网站证书,并您的网站上启用 HTTPS (SSL/TLS) 提供支持。
前置需求:
参考来源
Let’s Encrypt 网站:
ACME 协议客户端:
acme.sh WIKI:
certbot Github:
原文地址:
描述: 此处我们采用 acmesh-official 提供的 acme.sh 项目来快速搭建证书自动颁发、续签证书,其使用简单、强大且非常易于使用,它纯粹用 Shell(Unix shell)语言编写的 ACME 协议客户端,安装方式主要有 二进制文件 或者是 acme.sh💕码头工人 ( )。
温馨提示: 签发的证书有效期为60天,我们可以设置cron 作业以检查和更新证书,通常证书将每60天自动更新一次。
快速安装:
安装参考地址:
至此,您现在可以发布证书了。
Q: 什么是通配符证书?
A: 在没有出现通配符证书之前,Let’s Encrypt 支持两种单域名证书、SAN证书。
申请通配符证书流程
步骤 01.如果您的 DNS 提供商支持 API 访问,我们可以使用该 API 自动颁发证书,目前 acme.sh 支持大多数 dns 提供者( ),如果您的 dns 提供商不支持任何 api 访问,您只能手动添加 txt 记录。
步骤 02.此处我已经将 weiyigeek.top域名DNS解析商设置为 Cloudflare (免费),其DNS提供上支持API访问, 在使用 acme.sh 实现自动签发证书前,我们需要再Cloudflare网站上获取用于访问 Cloudflare API 的密钥,首先 点击我的个人资料 – API 令牌 。
步骤 03.设置 acme.sh 用于访问 Cloudflare 的 dnsapi 的相关环境变量。
步骤 04.执行如下命令,可以实现自动颁发通配符ECDSA格式证书,Let’s Encrypt 支持颁发 EC 格式证书,
步骤 05.利用openssl查看颁发的CA及其证书。
步骤 06.使用签发的证书,ingress为指定主机名称设置tls, 然后通过浏览器访问 站点,验证tls配置是否正常。
步骤 07.于此同时我们还可,修改 Nginx 配置文件启用 ssl,记得修改完成后需要重启下 Nginx。
温馨提示: Nginx 的配置 ssl_certificate 和 ssl_trusted_certificate 使用 fullchain.cer ,而非 domain.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误
步骤 08.创建 cron 作业以检查和更新证书,添加force参数60天后强制更新。
Q: 将默认 CA 更改为 ZeroSSL?
A: 通常情况下 acme.sh 使用letsencrypt作为默认CA, 当前可以将默认CA更改为 ZeroSSL( ),但实际上并不建议这样做,因为,Let’s Encrypt 可以颁发 EC 证书,而 ZeroSSL.com 则不支持颁发。
Q: 如何颁发包含多个域的单个证书,每个域使用不同的验证方法 多域、SAN模式、Hybrid模式 。
Q: 如何生成pkcs12(pfx) 格式证书?
Q: 如何从从现有 CSR 颁发证书?
Q: 如何进行证书签发通知?
A: acme.sh 可以在 cronjob 中发送通知, 通知可以是电子邮件或任何其他支持的方式,例如请求 webhook 等, 参考地址:
Q: acme.sh 除了支持Cloudflare还支持那些DNSAPI供应商
描述: acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成。
安装部署RSA、ECC双证书(使用DNSPod API)
书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注,转个发】(人间五大情),这将对我的肯定,谢谢支持!(๑′ᴗ‵๑) ❤
Let’s Encrypt 证书申请及配置
Let’s Encrypt —— 是一个由非营利性组织 互联网安全研究小组 (ISRG)提供的免费、自动化和开放的证书颁发机构(CA),简单的说,就是为网站提供免费的 SSL/TLS 证书。
Let’s Encrypt 生成证书的 工具 很多, certbot 是官方推荐的签发工具,也可以通过在线服务申请,例如:
在线一站式服务管理方便,但可能需要绑定业务,个人用户还是推荐通过工具生成证书。
这里推荐 acme.sh ,它不仅有详细的 中文文档 ,操作更为方便,还支持 Docker 。
以 root 用户为例
安装过程:
自动更新: acme.sh –upgrade –auto-upgrade
手动更新: acme.sh –upgrade
关闭更新: acme.sh –upgrade –auto-upgrade 0
验证域名所有权验证方式:HTTP 和 DNS
acme.sh 会自动生成验证文件,并放到站点的根目录,然后自动完成验证,最后自动删除文件。
Nginx:自动从配置中获取站点的根目录
注:根据中国大陆工信部的规定,所有托管在中国大陆服务器上的网站均需要备案。
—— 站点如未备案,80 端口处于禁用状态,acme.sh 无法使用 HTTP 验证域名所有权。
优势:不需要服务器与公网 ip,只要配置 DNS 解析即可。
不足:必须配置 Automatic DNS API 才可以自动续签。
根据域名服务商,选择对应的 DNS API 。
阿里云: 控制台
创建 Accesskey
DNSPod: 控制台 (注:非腾讯云控制台)
创建 API Token
Wildcard 证书,目前只支持 DNS-01 验证方式。
生成的证书都在 home 目录下: ~/.acme.sh/
使用 –install-cert 命令
重启 Nginx 服务:
定时任务会自动更新
强制续签证书: acme.sh –renew -d mydomain.com –force
如何获得Let’s Encrypt证书
第一、安装Let’s Encrypt前的准备工作
根据官方的要求,我们在VPS、服务器上部署Let’s EncryptSSL证书之前,需要系统支持Python2.7以上版本以及支持GIT工具。这个需要根据我们不同的系统版本进行安装和升级,因为有些服务商提供的版本兼容是完善的,尤其是debian环境兼容性比CentOS好一些。
比如CentOS 6 64位环境不支持GIT,我们还可以参考”Linux CentOS 6 64位系统安装Git工具环境教程”和”9步骤升级CentOS5系统Python版本到2.7″进行安装和升级。最为 简单的就是Debian环境不支持,可以运行”apt-get -y install git”直接安装支持,如果是CentOS直接运行”yum -y install git-core”支持。这个具体遇到问题在讨论和搜索解决方案,因为每个环境、商家发行版都可能不同。在这篇文章中,老左采用的是debian 7 环境。
第二、快速获取Let’s EncryptSSL证书
在之前的博文中老左也分享过几篇关于SSL部署的过程,我自己也搞的晕乎晕乎的,获取证书和布局还是比较复杂的,Let’s Encrypt肯定是考虑到推广HTTPS的普及型会让用户简单的获取和部署SSL证书,所以可以采用下面简单的一键部署获取证书。
然后执行上面的脚本,我们需要根据自己的实际站点情况将域名更换成自己需要部署的。
看到这个界面,直接Agree回车。
然后看到这个界面表示部署成功。目前根据大家的反馈以及老左的测试,如果域名是用的国内DNS,包括第三那方DNSPOD等,都可能获取不到域名信息。
这里我们可以看到有”The server could not connect to the client to verify the domain”的错误提示信息,包括也有其他提示错误,”The server experienced an internal error :: Error creating new registration”我们在邮局的时候不要用国内邮局。可以登录360进行查询了解更多的相关知识,也可以做
【let’sencrypt】的内容来源于互联网,如引用不当,请联系我们修改。