利用acme.sh的DNS手动模式免费添加SSL证书,解决自签名证书造成的“你的连接不是私密连接”问题

参考链接:https://github.com/Neilpang/acme.sh/wiki/dns-manual-mode
                  https://yq.aliyun.com/articles/674835    

要解决的问题: 使用自签名SSL证书会造成在用浏览器访问时会提示“你的连接不是私密连接”,因此要另外选择一种免费申请SSL证书的方法

利用acme.sh的DNS手动模式免费添加SSL证书,解决自签名证书造成的“你的连接不是私密连接”问题_第1张图片


方案:利用acme.sh脚本的DNS手动模式来免费添加SSL证书(下载脚本、生成TXT记录并添加到域名控制面板、生成证书、安装证书到Nginx的SSL目录下、Nginx添加SSL路径)


前提:不需要公网IP,但需要购买一个域名,购买域名的话有多家域名解析商可以供选择(DNSPod、Cloudflare、Godaddy等),购买好域名后就可以把内网IP绑定上了


准备工作:   

先添加域名解析,本篇以DNSPod来提供域名解析:

在“域名注册”中购买好域名后,在“域名解析”中添加新购买的域名,添加后点击进入该域名中

利用acme.sh的DNS手动模式免费添加SSL证书,解决自签名证书造成的“你的连接不是私密连接”问题_第2张图片

 

在“记录管理”中,添加A记录,设置“主机记录”(即域名前缀)为www,“记录值”设置为内网web服务器的IP,TXT记录要等到后面执行完acme脚本生成TXT记录的主机记录和TXT记录值后,再添加该记录。添加完A记录后要等一会时间才会生效,只有生效后再执行acme.sh脚本才会生成TXT记录

利用acme.sh的DNS手动模式免费添加SSL证书,解决自签名证书造成的“你的连接不是私密连接”问题_第3张图片

 

1. 下载安装acme.sh

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

安装acme.sh后自动在~/.bashrc下添加别名,而且会自动添加定时任务用于更新证书。

#~/.acme.sh目录下的初始默认的文件一共有7个,执行acme脚本后会在该目录下新增目录,如果安装证书的过程出现问题,则删除掉新增的目录,然后再出现安装证书
-rw-r--r-- 1 root root     96 7月   9 17:34 account.conf
-rwxr-xr-x 1 root root 189233 7月   9 17:34 acme.sh
-rw-r--r-- 1 root root     78 7月   9 17:34 acme.sh.csh
-rw-r--r-- 1 root root     78 7月   9 17:34 acme.sh.env
drwxr-xr-x 2 root root   4096 7月   9 17:34 deploy
drwxr-xr-x 2 root root   4096 7月   9 17:34 dnsapi
drwxr-xr-x 2 root root    122 7月   9 17:34 notify

 

2. 生成TXT记录的主机记录和TXT记录值

acme.sh --issue  -d www.kakuxin.cn --dns \    #注意:要先购买好域名,然后在域名控制面板上添加A记录并等待一会时间后(添加A记录后并不会马上生效),再执行acme.sh才能成功生成TXT记录
 --yes-I-know-dns-manual-mode-enough-go-ahead-please

[2019年 07月 11日 星期四 15:49:52 CST] Create account key ok.
[2019年 07月 11日 星期四 15:49:52 CST] Registering account
[2019年 07月 11日 星期四 15:50:42 CST] Registered
[2019年 07月 11日 星期四 15:50:42 CST] ACCOUNT_THUMBPRINT='U7kyz1IBaa9mQ4hl6FI34ZEi9fEgRyUjpKAB5WTe1MI'
[2019年 07月 11日 星期四 15:50:42 CST] Creating domain key
[2019年 07月 11日 星期四 15:50:42 CST] The domain key is here: /root/.acme.sh/www.kakuxin.cn/www.kakuxin.cn.key
[2019年 07月 11日 星期四 15:50:42 CST] Multi domain='DNS:www.kakuxin.cn'
[2019年 07月 11日 星期四 15:50:42 CST] Getting domain auth token for each domain
[2019年 07月 11日 星期四 15:50:46 CST] Getting webroot for domain='www.kakuxin.cn'
[2019年 07月 11日 星期四 15:50:46 CST] Add the following TXT record:
[2019年 07月 11日 星期四 15:50:46 CST] Domain: '_acme-challenge.www.kakuxin.cn'
[2019年 07月 11日 星期四 15:50:46 CST] TXT value: '4nuX6qyoE3_yV4*********'
[2019年 07月 11日 星期四 15:50:46 CST] Please be aware that you prepend _acme-challenge. before your domain
[2019年 07月 11日 星期四 15:50:46 CST] so the resulting subdomain will be: _acme-challenge.www.kakuxin.cn
[2019年 07月 11日 星期四 15:50:46 CST] Please add the TXT records to the domains, and re-run with --renew.
[2019年 07月 11日 星期四 15:50:46 CST] Please add '--debug' or '--log' to check more details.
[2019年 07月 11日 星期四 15:50:46 CST] See: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh


3. 域名控制面板添加TXT记录

成功生成记录值后,到域名控制面板中对应的域名中,创建TXT记录并添加主机记录和TXT记录值这两项

主机记录:_acme-challenge.www

记录值:4nuX6qyoE3_yV4********

利用acme.sh的DNS手动模式免费添加SSL证书,解决自签名证书造成的“你的连接不是私密连接”问题_第4张图片


4. 生成证书

acme.sh --renew  -d www.kakuxin.cn \     #使脚本根据TXT记录生成证书并存放到了~/.acme.sh目录下
  --yes-I-know-dns-manual-mode-enough-go-ahead-please


  

5. 验证解析是否生效

dig -t txt _acme-challenge.kakuxin.cn @8.8.8.8        #若生效,则返回的应答会显示为1 “ANSWER: 1”

 #若系统没有安装dig命令,则执行以下步骤:
 第1步:

yum provides *bin/dig


 第2步:

yum -y install bind-utils-9.9.4-74.el7_6.1.x86_64  #安装最下边的update源


6. 安装证书

acme.sh  --installcert  -d  kakuxin.cn   \                #安装SSL证书到Nginx的SSL证书目录下,并强制重启Nginx,不然无法加载证书
        --key-file   /etc/nginx/cert/www.kakuxin.cn.key \
        --fullchain-file /etc/nginx/cert/fullchain.cer \
        --reloadcmd  "service nginx force-reload"


7. 修改Nginx的SSL证书路径

vim /etc/nginx/conf.d/nextcloud.conf                        #到Nginx的配置文件中修改SSL证书的路径
    server {
        listen 443 ssl;
        server_name www.kakuxin.cn;

        ssl_certificate /etc/nginx/cert/fullchain.cer;
        ssl_certificate_key /etc/nginx/cert/www.kakuxin.cn.key;
        
nginx -t                     #检查Nginx的语法
systemctl restart nginx      #重启Nginx

 

8. 浏览器验证

利用acme.sh的DNS手动模式免费添加SSL证书,解决自签名证书造成的“你的连接不是私密连接”问题_第5张图片

你可能感兴趣的:(建站,acme.sh,SSL证书,https,域名解析,免费申请SSL证书)