专栏首页Think & DifferentLet's Encrypt免费泛域名SSL证书申请及自动续签
原创

Let's Encrypt免费泛域名SSL证书申请及自动续签

Let's Encrypt: https://letsencrypt.org , 是一个免费的、自动化的、开放的证书颁发机构。截至2018年9月,它的全球SSL证书市场份额已超过50%,得到主流浏览器和厂商的认可与支持。

Let's Encrypt证书提供免费的申请,但没有高额的安全保险,不具备点对点的技术支持,而且申请过程比较复杂,适合具有一定的专业知识的个人站长申请。并且每次申请到的SSL证书有效期只有90天,但是可以通过脚本实现提前自动续约达到自动化永久免费使用的目的。

在2018年5月,Let's Encrypt发布了免费泛域名通配符SSL证书:https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579 ,在HTTPS全面普及的当下,越来越多的开发者选择了Let's Encrypt证书。

想要实现免费泛域名SSL证书申请及其自动续签,需要以下材料:

  • 一枚域名
  • 一台服务器(用以执行申请与自动续签脚本,且Web服务运行在此服务器上)

本文将以 *.qq.com 为例进行泛域名证书申请演示

一、证书申请

Let's Encrypt官方提供了一系列的申请方法文档,但流程比较复杂,为了简化申请流程,我们可以在Github上找到这个仓库:https://github.com/Neilpang/acme.sh

acme.sh 的具体使用说明见:https://github.com/Neilpang/acme.sh/wiki/说明

接下来,我们就利用 acme.sh 对证书进行申请。

1、安装 acme.sh

进入服务器,执行命令:

$ curl  https://get.acme.sh | sh

普通用户和root用户都可以安装使用,安装脚本其实是进行了如下操作:1)会把 acme.sh 安装到你所执行命令用户的用户目录下: ~/.acme.sh/2)会创建 bash alias,方便你的使用:alias > acme.sh=~/.acme.sh/acme.sh3)会自动为你创建 cronjob 脚本,每天零点自动检测所有的证书,如果某证书快过期需要更新,则会自动更新该证书。

安装过程不会污染已有的系统任何功能和文件,所有后续的修改都将限制在安装目录中:~/.acme.sh/

2、验证域名并生成证书

acme.sh 实现了 acme 协议支持的所有验证协议,通常一般有几种方式验证域名:HTTP文件验证DNS验证 等,具体验证方式可查阅脚本github文档

方式1、HTTP文件验证:

$ acme.sh --issue -d qq.com -d *.qq.com -w /home/webroot

注意:对于通配符证书需要加 -d 域名 -d *.域名 两个参数-w 即webroot,为该 域名 通过http所访问到的本地目录上面这段过程将会在 /home/webroot 创建一个 .well-known 的文件夹,同时 Let’s Encrypt 将会通过你要注册的域名去访问那个文件来确定权限,它可能会去访问 http://qq.com/.well-known/ 这个路径,验证成功会自动清理。

方式2、DNS-API验证:‌ ‌通过DNS服务器提供 keysecret 实现自动验证,详情‌ ‌https://github.com/Neilpang/acme.sh/tree/master/dnsapi‌ ‌例如,在腾讯云解析的域名,请前往 https://www.dnspod.cn/console/user/security 控制台中申请子账号 API Token 并执行命令:

$ export DP_Id="6*ID*0"
$ export DP_Key="aa445e***TOKEN***5fe26e"
$ acme.sh --issue -d qq.com -d *.qq.com --dns dns_dp

注意:对于通配符证书需要加 -d 域名 -d *.域名 两个参数DP_Id DP_Key 将会保存在 ~/.acme.sh/account.conf

执行上述命令后,证书文件将会自动申请被存放在 ~/.acme.sh/ 对应的域名文件夹中,如:~/.acme.sh/qq.com 。后续 acme.sh 将会自动更新该文件夹内的证书。

3、部署nginx

参考:https://github.com/Neilpang/acme.sh/wiki/说明

1) 拷贝证书

$ acme.sh --install-cert -d qq.com \
--key-file       /etc/nginx/ssl/qq.com.key \
--fullchain-file /etc/nginx/ssl/qq.com.cer \
--reloadcmd      'service nginx force-reload'

注意:通过该命令可将 ~/.acme.sh/qq.com 内的证书copy到指定位置/etc/nginx 为nginx服务器实际的地址(可修改为自己服务器对应的地址)service nginx force-reload 为nginx重启命令(可修改为自己服务器对应的命令),force-reload 会重载证书后续 acme.sh 签发了新证书后就自动完成该拷贝过程

2) 配置nginx

Nginx-Conf‌ ‌vim /etc/nginx/conf.d/qq.com.conf

# http(80) -> https(443/ssl)
server {
    listen 80;
    server_name qq.com;
    rewrite ^(.*)$ https://$host$request_uri;
}
# qq.com
server {
    listen 443;
    server_name qq.com;
    include ssl/qq.com.ssl.conf;

    location / {
        # todo
    }
}

SSL-Conf‌ ‌vim /etc/nginx/ssl/qq.com.ssl.conf

ssl on;
ssl_certificate ssl/qq.com.cer;
ssl_certificate_key ssl/qq.com.key;

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • Let’s Encrypt 泛域名证书免费申请

    用户1202364
  • 使用Caddy申请免费的Let’s Encrypt泛域名SSL证书

    说明:之前看到有人问了下Caddy怎么申请Let’s Encrypt泛域名SSL证书,就翻了下官方文档了解下,发现比用Nginx申请的过程简单很多,这里就发下方...

    子润先生
  • Let’s Encrypt免费ssl证书申请

    Let’s Encrypt是一个免费并且开源的CA,且已经获得Mozilla、微软等主要浏览器厂商的根授信。它极大低降低DV证书的入门门槛,进而推进全网的HTT...

    爱游博客
  • 腾讯云DNSPod域名API申请Let’s Encrypt泛域名免费SSL证书教程

    Let’s Encrypt是目前使用最为广泛的免费SSL证书,蜗牛789使用的就是此款免费SSL证书,早在2017年7月份起Let’s Encrypt官方就发布...

    墨渊
  • 腾讯云DNSPod域名API申请Let’s Encrypt泛域名免费SSL证书教程

    Let’s Encrypt是目前使用最为广泛的免费SSL证书,蜗牛789使用的就是此款免费SSL证书,早在2017年7月份起Let’s Encrypt官方就发布...

    墨渊
  • Let’s Encrypt通配符SSL证书免费申请

    禹都一只猫olei
  • 腾讯云 DNSPod 域名 API 申请 Let’s Encrypt 泛域名 SSL 证书过程记录

    目前使用量最大的免费 SSL 证书就是 Let’s Encrypt 了,在 2018 年 3 月份 Let’s Encrypt 官方发布上线泛域名免费 SSL ...

    魏艾斯博客www.vpsss.net
  • 腾讯云 DNSPod 域名 API 申请 Let’s Encrypt 泛域名 SSL 证书过程记录

    魏艾斯博客www.vpsss.net
  • 补充记录腾讯云 DNSPod 域名 API 申请 Let’s Encrypt 泛域名 SSL 证书需要注意的几点

    魏艾斯博客www.vpsss.net
  • 补充记录腾讯云 DNSPod 域名 API 申请 Let’s Encrypt 泛域名 SSL 证书需要注意的几点

    刚写完了腾讯云 DNSPod 域名 API 申请 Let’s Encrypt 泛域名 SSL 证书这篇教程,感觉中间有几点是新手需要注意的,申请 SSL 泛域名...

    魏艾斯博客www.vpsss.net
  • 使用Certify来自动申请并配置Let’s Encrypt免费SSL证书到IIS8

    越来越多的网站在启用HTTPS,也就是SSL加密通讯连接访问。特别是去年开始BAT在国内的推广和应用要求。要知道部署发布一个苹果iOS企业应用,下载服务器就必须...

    崔文远TroyCui
  • 使用 Certbot 为你的域名申请免费的 Let’s Encrypt Https 证书

    Centos7 安装 Certbot 会遇到各种各样的坑,网上搜到的都是需要更改系统的 Python 环境,如部分标准库退到旧的版本,不能忍,还是用虚拟环境来解...

    Hsinyan
  • 网站免费SSL证书收集分享(by苏晨)

    宝塔/腾讯云/阿里云都是基于免费版TrustAsia DV SSL CA - G5证书的,因CA提供方检测到滥用行为,目前个人申请免费SSL最多申请20张。 网...

    苏晨
  • LNMP 1.4 正式版安装测试记录及自动生成 Let’s Encrypt 免费证书

    魏艾斯博客www.vpsss.net
  • 快速签发Let's Encrypt证书指南

    本文仅记录给自己的网站添加“小绿锁”的动手操作过程,不涉及HTTPS工作原理等内容的讲解,感兴趣的同学可以参考篇尾的文章自行了解。

    Esofar
  • Let's Encrypt 配置 HTTPS 免费泛域名证书

    想要使用 HTTPS ,你必须先拥有权威 CA(证书签发机构)签发的证书(对于自签名的证书,浏览器是不认账的)。Let's Encrypt 就是一家权威的 CA...

    凌虚
  • acme.sh-实现自动化部署SSL证书

    我一直使用的都是Let's Encrypt免费的证书,昨天看到群里的大佬发出了一个测试的证书申请的脚本命令,我才接触到acme.sh,于是我查阅了很多大佬的博文...

    樱次元
  • 给hexo申请证书并设置https

    ​ 前面可以说是完成了整个项目的迁移及重新部署,重新设置自动化以及初始化一些操作,现在已经可以正常的进行使用了,但是因为在做webhooks时使用的是bash命...

    caoayu

扫码关注腾讯云开发者

领取腾讯云代金券