ZeroSSL免费SSL证书申请与使用-支持自动续期和免费泛域名SSL证书

自从letsencrypt免费SSL证书推出来后,个人站长建站上线Https真的变得很轻松了,letsencrypt免费SSL证书时长是三个月,但是可以一直免费续期。除了传统的手动给letsencrypt免费SSL证书续期外,letsencrypt已经整合到了大多数的空间主机面板,可直接在后台一键自动生成SSL。

今天要分享了另一个免费SSL证书:ZeroSSL,这是一家不同于letsencrypt的SSL商家。ZeroSSL本身是一家提供SSL证书的公司,但是从2016年开始提供免费的SSL证书,有效期也是90天,可以免费续期。相对于letsencrypt免费SSL证书,ZeroSSL免费SSL证书主要有两个优势。

一个是ZeroSSL免费SSL证书不限制申请频率,不存在像申请letsencrypt免费SSL证书在规定时间内的次数限制,二是ZeroSSL免费SSL证书有Web面板,在面板里你可以看到自己申请到了的所有ZeroSSL免费SSL证书,能看到有效期,也可以直接下载SSL文件,管理起来会更方便一些。

利用acme.sh申请ZeroSSL免费SSL证书-支持自动续期和免费泛域名SSL证书

这篇文章就来分享一下ZeroSSL免费SSL证书的申请与安装教程,更多的免费SSL证书可以查看专题:免费SSL证书收集整理汇总

  1. 八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗
  2. 简单三步给网站申请安装letsencrypt免费SSL证书-acme.sh自动续期
  3. 启用HSTS并加入HSTS Preload List让网站Https访问更加安全-附删除HSTS方法

一、在线申请ZeroSSL证书

网站:

  1. https://zerossl.com

ZeroSSL提供了在线申请ZeroSSL免费SSL证书的方式,你可以直接到官网注册账号,然后填写你的域名,完成域名验证后就可以签发SSL证书了。

ZeroSSL免费SSL证书在线申请

二、集成已有面板申请

如果你在使用宝塔面板OneinstackLNMP一键安装包等建站面板或者脚本,可以直接在面板中快速申请ZeroSSL证书。

ZeroSSL免费SSL证书面板申请

注意:这些面板实际也是集成了acme.sh,老版本的acme.sh默认的CA是letsencrypt,如果你现发颁发出来的SSL证书是letsencrypt,你可以通过以下方式切换ZeroSSL。

acme.sh --set-default-ca  --server zerossl

三、acme.sh申请ZeroSSL

网站:

  1. https://github.com/acmesh-official/acme.sh

在线申请ZeroSSL证书虽然方便,但是不能自动续期,而有些面板或者脚本并没有集成acme.sh,这里我们可以自己安装acme.sh来申请ZeroSSL免费SSL证书。首先是在VPS主机上安装acme.sh脚本:

curl  https://get.acme.sh | sh -s email=freehao123@gmail.com

脚本自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书. 安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/

3.1 Web验证

如果你的VPS主机上已经安装了Nginx或者Apache,可以用域名正常访问的话,可以选择使用Web验证的方式(注意替换你的网站的根目录):

acme.sh  --issue  -d wzfou.com -d www.wzfou.com  --webroot  /home/wwwroot/wzfou.com

#或者 acme.sh  --issue  -d xxx.wzfou.com  --webroot  /home/wwwroot/xxx.wzfou.me
ZeroSSL免费SSL证书路径

如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口, 完成验证:

acme.sh  --issue -d wzfou.com   --standalone

3.2 DNS验证

如果Web验证不成功的话,可以使用DNS验证的方式。有两种方式:

一种是手动添加DNS记录。这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

acme.sh  --issue  --dns   -d mydomain.com \
 --yes-I-know-dns-manual-mode-enough-go-ahead-please

然后, acme.sh 会生成相应的解析记录显示出来, 你只需要在你的域名管理面板中添加这条 txt 记录即可。等待解析完成之后, 重新生成证书(注意第二次这里用的是 --renew):

acme.sh  --renew   -d mydomain.com \
  --yes-I-know-dns-manual-mode-enough-go-ahead-please

另一种是DNS API自动添加 txt 记录完成验证。这种方式除了达到了DNS验证域名的所有优点外,还是完全自动的,支持自动续期。acme.sh目前已经支持市面上绝大多数的DNS服务商了,只要DNS商提供了API就可以使用。

以CloudFlare为例,先到CloudFlare官网找到你的API。CloudFlare提供了两种API:一种是全局API,这个API权限非常大,直接就拥有账户的所有权限。执行以下命令可以将API导入到acme.sh。

ZeroSSL免费SSL证书令牌

导入命令如下:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="freehao123@gmail.com"

另一种是专门的API,即你可以创建限制权限的API,例如仅用于修改编辑DNS的API,这样的API安全性会相对高一些。

ZeroSSL免费SSL证书创建DNS令牌
ZeroSSL免费SSL证书设置权限
ZeroSSL免费SSL证书查看

CloudFlare专门的API导入命令如下:

export CF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Account_ID="xxxxxxxxxxxxx"

最后,就是使用CloudFlare DNS验证的方式来完成ZeroSSL免费SSL证书的签发了。

acme.sh --issue --dns dns_cf -d wzfou.com -d www.wzfou.com

以DNSPOD.cn为例,先找到DNSPOD.cn的API。

ZeroSSL免费SSL证书DNSPOD

然后使用以下命令将DNSPOD.cn的API导入到acme.sh。

export DP_Id="1234"

export DP_Key="sADDsdasdgdsf"

最后使用DNSPOD.cn的DNS验证方式完成ZeroSSL免费SSL证书的签发。

acme.sh   --issue   --dns dns_dp   -d wzfou.com  -d www.wzfou.com

导入的DNS API存放在~/.acme.sh/account.conf  下次再次签发SSL证书时就不需要再次导入了。

ZeroSSL免费SSL证书查看账户

更多的DNS API的使用方法请查看官网:https://github.com/acmesh-official/acme.sh/wiki/dnsapi

四、acme.sh安装ZeroSSL

acme.sh默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化。

正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:

Apache example:
acme.sh --install-cert -d wzfou.com \
--cert-file      /path/to/certfile/in/apache/cert.pem  \
--key-file       /path/to/keyfile/in/apache/key.pem  \
--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
--reloadcmd     "service apache2 force-reload"

Nginx example:
acme.sh --install-cert -d wzfou.com \
--key-file       /path/to/keyfile/in/nginx/key.pem  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd     "service nginx force-reload"

注意上面的SSL证书的路径请替换你原来的SSL证书路径。

ZeroSSL免费SSL证书查看证书路径

如果原来没有SSL证书,那你在使用acme.sh安装SSL证书的命令中的路径与你的Nginx或者Apache配置文件中的SSL证书路径保持一致。演示如下:

server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name _;
        index index.html index.htm index.php;
        root  /home/wwwroot/default;
		
        ssl_certificate /usr/local/nginx/conf/ssl/ipssl/wzfouip.crt;
        ssl_certificate_key /usr/local/nginx/conf/ssl/ipssl/wzfouip.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
        ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;

        access_log  /home/wwwlogs/access.log;
    }

有关事项说明:

1.这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload

2.Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/<domain>.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。

3.--install-cert命令可以携带很多参数, 来指定目标文件. 并且可以指定 reloadcmd, 当证书更新以后, reloadcmd会被自动调用,让服务器生效.

4.值得注意的是, 这里指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用.

现在打开你的域名,就可以看到ZeroSSL免费SSL证书签发成功了。

ZeroSSL免费SSL证书

五、相关问题

5.1 切换letsencrypt

如果你觉得ZeroSSL免费SSL证书不好用,你可以随时用以下命令切换letsencrypt。

acme.sh --set-default-ca --server letsencrypt

或者你只是临时想指定某一个域名的SSL证书使用letsencrypt,可以使用以下命令签发SSL证书。

acme.sh --issue -d example.com --dns dns_cf --server letsencrypt

5.2 签发泛域名SSL

ZeroSSL免费SSL证书支持签发泛域名SSL证书,首先要选择使用DNS验证方式,然后使用以下命令就可以签发ZeroSSL免费泛域名SSL证书了。

acme.sh --dns dns_dp --issue -d wzfou.com -d *.wzfou.com

5.3 在线管理SSL

ZeroSSL免费SSL证书可以通过ZeroSSL查看并管理。

ZeroSSL免费SSL证书在线管理

如果你想将你所有的ZeroSSL SSL证书关联起来,请执行以下命令(请替换你在ZeroSSL注册的邮箱地址):

acme.sh  --register-account  -m freehao123@gmail.com --server zerossl

文章出自:挖站否 https://wzfou.com/zerossl-ssl/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。


分享到:
Avatar for Qi
关于站长(Qi),2008年开始混迹于免费资源圈中,有幸结识了不少的草根站长。之后自己摸爬滚打潜心学习Web服务器、VPS、域名等,兴趣广泛,杂而不精,但愿将自己经验与心得分享出来与大家共勉。
已有 9 条评论
  1. Avatar for ivkeji ivkeji

    能白嫖,我可不困啦

    6月10日 23:44 回复
  2. Avatar for maplefz maplefz

    cdn用的cf,我就直接用cf的证书了,直接申请了10年

    6月9日 10:11 回复
    • Avatar for Qi Qi

      CF的证书免费的?

      6月9日 10:34 回复
      • Avatar for maplefz maplefz

        在“SSL/TLS”——客户端证书一栏里

        6月9日 10:41 回复
      • Avatar for maplefz maplefz

        证书https://ttfou.com/image/ecWK

        6月9日 10:42 回复
        • Avatar for Qi Qi

          哦,不是免费10年吧?

          6月9日 14:22 回复
    • Avatar for Cosima Cosima

      现在CF签发的证书变成letsencrypt,只有3个月,但会自动续期

      6月10日 20:07 回复
  3. Avatar for 贵妃位 贵妃位

    这一家确实很强,又多了一个SSL证书的选择了。

    6月9日 09:45 回复
  4. Avatar for no no

    letsencrypt打开了免费SSL证书的新大门

    6月9日 09:18 回复

Login

Welcome! Login in to your account

Remember meLost your password?

Don't have account. Register

Lost Password

Register