Let’s Encrypt 免费申请泛域名 SSL 证书教程

Posted by 撒得一地 on 2018年11月12日 in Linux教程

很早以前就开始使用 Let's Encrypt 免费 ssl 证书,虽然每隔 90 天就要重新申请验证,不过由于其免费而且网上提供了定时任务脚本,每隔90天可以自动续约实现永久使用,所以也是非常方便。很早以前使用的是 dns 验证的方法,有几个子域名,就填写几个子域名,然后通过验证dns进行申请。这样方法比较麻烦, 以后如果重新添加了新的子域名还得重新进行申请验证,比较麻烦。

好在今年三月份 Let's Encrypt 就推出了泛域名证书,不过由于太懒,一直没有去申请,最近重新注册了一个新域名,便用这个域名申请下 Let's Encrypt 的泛域名证书,这里简单的记录下步骤。

该方法使用的是  https://github.com/Neilpang/acme.sh  的脚本。

安装acme.sh

以下命令请在Linux系统执行,root和普通用户均可安装。

#安装
curl  https://get.acme.sh | sh
#让alias生效
source ~/.bashrc

安装acme.sh,安装成功后提示界面

设置DNS API

不同域名服务商设置 DNS API 不一样,我的域名在 name.com 服务商上,name.com获取 api 的操作如下:

登录后台:https://www.name.com/account/settings/api

同意协议

同意协议后,输入 Token Name ,然后生成 Token 即可:

输入token name,生成token

获取你的 namecom用户名(是用户名,不是 Token Name) 和 Token ,然后运行如下命令:

	export Namecom_Username="testuser"

	export Namecom_Token="xxxxxxxxxxxxxxxxxxxx"

接着运行如下命令:

	acme.sh --issue --dns dns_namecom -d example.com -d www.example.com

注意:其中的 example.com 改为你自己的域名。因为我们要申请泛域名,所以 www 改为 * 即可,比如我的如下:

acme.sh –issue –dns dns_namecom -d 9xxx89.xyz -d *.9xxx89.xyz

输入token验证信息

进行dns api 验证,申请泛域名证书

如果你是阿里云、腾讯云、或者其他域名服务商,更多的 DNS API 设置方法参考这篇文章:

https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

上面的文章列举了 53 个常见域名服务商设置 DNS API 的方法,请根据你的域名服务商详细对照着修改,虽然是英文,不过细心查看,操作起来非常容易。

复制证书

然后复制证书,默认生成的证书都放在安装目录下: ~/.acme.sh/,但是官方文档不建议直接使用该目录下的证书,因为这里面的文件都内部使用,而且可能会引起目录结构的变化。正确的使用方法是使用 –installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 如下:

acme.sh  –installcert  -d  <domain>.com   \
–key-file   /etc/nginx/ssl/<domain>.key \
–fullchain-file /etc/nginx/ssl/fullchain.cer \
–reloadcmd  "service nginx force-reload"

比如我的:

acme.sh  –installcert  -d  9xxx89.xyz  \
–key-file   /usr/local/nginx/ssl/ 9xxx89.xyz.key \
–fullchain-file /usr/local/nginx/ssl/fullchain.cer \
–reloadcmd  "service nginx force-reload"

注意,上面的命令 service nginx force-reload 是强制重启 nginx 的操作,可能会报错,报错直接略过,你直接手动修改 nginx 的配置文件,然后重新启动 nginx 即可。

然后修改nginx配置文件,这里附上一份参考,nginx默认的 https 配置,只修改了  ssl_certificate 和  ssl_certificate_key,你可以根据你自己的实际情况重新编辑修改 :

server {
        listen       443 ssl;
        server_name  localhost;

        ssl_certificate      /usr/local/nginx/ssl/fullchain.cer;
        ssl_certificate_key /usr/local/nginx/ssl/978789.xyz.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

参考文章:

https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E

本文地址:https://coderschool.cn/2904.html,转载请注明。

上一篇:

下一篇:已是最新文章

相关推荐

网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.