Nginx泛域名添加https免费SSL证书Let's Encrypt(certbot)安装使用步骤

本文介绍如何在 nginx 服务器上使用免费的 Let’s Encrypt 凭证,提供 HTTPS 的安全加密网页。

本教程的安装环境是:

阿里云Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-105-generic x86_64)

STEP 1

Certbot官方网站下载 certbot-auto 指令,並设定其执行权限:

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

certbot-auto 要放在哪裡都可以,建議一開始就找一個適合的地方放好,例如建立一個 /opt/letsencrypt 目錄,把 certbot-auto 放在這裡:

mkdir /opt/letsencrypt
mv certbot-auto /opt/letsencrypt/

STEP 2

執行 certbot-auto,讓它自動安裝所有相依套件:

/opt/letsencrypt/certbot-auto

在执行安装certbot-auto过程中,阿里云服务器会提示下列错误:

OSError: Command /opt/eff.org/certbot/venv/bin/python2.7 - setuptools pkg_resources pip wheel failed with error code 2

错误的原因是certbot-auto使用python2.7,但调用了python3的virtualenv,由于系统安装了多个版本的python的virtualenv,那么怎么删除呢?

解决方法:

apt-get purge python-virtualenv python3-virtualenv virtualenv

pip install virtualenv

然后在执行安装 certbot-auto,终于安装成功!!!

STEP 3

执行certbot-auto生成泛域名证书

sudo ./certbot-auto certonly \
--server https://acme-v02.api.letsencrypt.org/directory \
 --manual --preferred-challenges dns -d *.qzcool.com

执行后会要求验证DNS TXT,提示信息如下:

lease deploy a DNS TXT record under the name
_acme-challenge.qzcool.com with the following value:

QcvPzuizmydLs1AmJF-J9eWOfOW7T89i******

Before continuing, verify the record is deployed.

泛域名解析需要验证DNS TXT,需要到域名提供商里面设置,子域名设置为_acme-challenge,记录类型选TXT记录,把QcvPzuizmydLs1AmJF-J9eWOfOW7T89i******填在记录值那一栏,
配置后可以执行下面命令,看是否正确返回。

dig _acme-challenge.qzcool.com txt

DNS TXT 配置完后,按回车继续执行。

 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/qzcool.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/qzcool.com/privkey.pem
   Your cert will expire on 2018-12-19. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again. To non-interactively renew *all* of your certificates, run
   "certbot-auto renew"

然后获取证书成功,记住证书生成的目录,需要到Nginx里面配置

 /etc/letsencrypt/live/qzcool.com/fullchain.pem
  /etc/letsencrypt/live/qzcool.com/privkey.pem

补充一下花生壳的坑

当时为了能内网映射公网,把域名转到花生壳网站,结果遇到了一系列的坑,原来免费的东西,在这里各种要钱,下面列举下:
泛域名解析10元/年
可添加无限子域名 20元/年
TXT记录 10元/年
CNAME记录设置 10元/年
URL跳转设置 10元/年
奉劝大家不要用花生壳的域名服务器,太坑了,使用内网映射服务可以使用免费的frp,我的另外一篇文章frp使用教程可以参考。

STEP 4

如果你是第一次使用nginx,可以用certbot帮你自动生成主域名nginx配置,然后在修改相关证书配置。
访问https://certbot.eff.org/,选择你使用的软件和系统,在这里我们选择nginx和Ubuntu 16.04.

安装相关软件

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-nginx 

生成证书

$ sudo certbot --nginx

根据提示输入要添加https的域名,最后提示生成成功,访问你的域名,发现能使用https访问。

使用

nginx -t

查看nginx的配置目录,我服务器上的配置目录/etc/nginx/nginx.conf,修改配置文件:

vim /etc/nginx/sites-enabled/default 

记得把try_files $uri $uri/ =404;这个注释掉,否则访问会出错,暂时没查这个是什么问题,修改配置如下。

# /etc/nginx/sites-enabled/default 
server_name *.qzcool.com; # managed by Certbot 
location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404. 
                proxy_pass http://172.17.0.1:8080;
                proxy_set_header    Host            $host:80;
                proxy_set_header    X-Real-IP       $remote_addr;
                proxy_set_header    X-Forwarded-For           $proxy_add_x_forwarded_for;
                proxy_hide_header   X-Powered-By; 
    #  try_files $uri $uri/ =404;
        } 
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/dhbmw.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/dhbmw.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot 
}

server {
        listen 80 ;
        server_name www.qzcool.com;
        rewrite ^(.*)$ https://$host$1 permanent;
}

nginx从新加载配置文件

 nginx -s reload 

证书定时更新

Let’s Encrypt 的憑證使用期限只有三個月,在憑證到期前的一個月可以使用 certbot-auto 來更新憑證,在實際更新之前我們可以加入 --dry-run 參數,先進行測試:

/opt/letsencrypt/certbot-auto renew --dry-run

若測試沒問題,就可以使用正式指令來更新:

/opt/letsencrypt/certbot-auto renew --quiet --no-self-upgrade

而為了方便起見,可以將這個更新指令寫在 /opt/letsencrypt/renew.sh 指令稿中:

#!/bin/sh
/opt/letsencrypt/certbot-auto renew --quiet --no-self-upgrade --post-hook "service nginx reload"

這裡我又加上一個 --post-hook 的設定,讓憑證更新完後,可以自動重新載入 nginx 伺服器的設定,讓憑證生效。

接著把這個 /opt/letsencrypt/renew.sh 指令稿寫進 crontab 中,
键入crontab -e 编辑crontab服务文件

# m h  dom mon dow   command
30 2 * * 0 /opt/letsencrypt/renew.sh

官方的建議是這個指令可以一天執行兩次,讓伺服器的憑證隨時保持在最新的狀態,這裡我是設定讓伺服器每週日凌晨兩點半進行憑證的檢查與更新,Certbot 只有在憑證到期前一個月才會進行更新,如果憑證尚未到期,就不會更新。

crontab相关命令:

查看该用户下的crontab服务是否创建成功, 用crontab -l命令
启动crontab服务 sudo service crond start
查看服务是否已经运行用 ps -ax | grep cron

413 Request Entity Too Large报错处理

打开nginx主配置文件nginx.conf,一般在
vim /etc/nginx/nginx.conf
这个位置,找到http{}段并修改以下内容:

client_max_body_size 2m;

当中的2m修改成你需要的允许文件大小。

参考:
1.NGINX 使用 Let’s Encrypt 免費 SSL 憑證設定 HTTPS 安全加密網頁教學

2.Certbot nginx下配置SSL

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容