追逐繁星的孩子

お帰りなさい

首页 标签 归档 分类 关于
Let's Encrypt
日期 2018-07-25   |    标签 HTTPS   |    评论

Let's Encrypt赛高!!!来一起给网站配上https吧!!!

1. 环境

centos6.9 | nginx1.12 | django1.8

2. 生成免费CA证书

经尝试centos6.9无法通过yum源安装certbot,即无法

yum install certbot

故采用certbot-auto操作(certbot-auto操作完全相同与certbot)

wget https://dl.eff.org/certbot-auto

chmod +x certbot-auto

./certbot-auto certonly --webroot -w /my/site/path -d yasina.me -d www.yasina.me

注意:其中的/my/site/path表示我们网站根目录,由于我使用的是django,故把此/my/site/path的值指定为与/static/相同的目录,同时需要在nginx中添加location。这是因为certbot会访问该路径以证明你的确具有网站操作权

location /.well-known {

root /my/site/path/static;

}

3. 配置nginx

由于我之前nginx没有编译ssl模块,因此需要编译ssl模块以支持https。

./configure --prefix=/opt/nginx/ --with-http_ssl_module

因为我之前的nginx是编译安装在/opt/nginx下的,所以现在编译ssl模块的时候也同样这样指定路径。如果之前没有指定prefix,那边这边也无需指定。

make

注意make即可,别make install,objs目录下会生成编译完后的nginx执行文件,替换之前的文件即可

cp objs/nginx /opt/nginx/sbin/nginx

接下来修改nginx.conf

listen 443;

ssl on;

ssl_certificate /etc/letsencrypt/live/yasina.me/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/yasina.me/privkey.pem;

同时将80端口重定向到443

server {

listen 80;

server_name yasina.me www.yasina.me;

rewrite ^(.*)$ https://${server_name}$1 permanent;

}

启动nginx即可!

4. 定时更新

由于证书的有效期是90天,故需定时更新

15 2 * */2 * /opt/certbot/certbot-auto renew --post-hook "/opt/nginx/sbin/nginx -s reload"

crontab update-ca

5. 碰到的问题

提示certbot.plugins.disco:No installation (PluginEntryPoint#nginx),建两条软链即可。具体见链接 https://github.com/certbot/certbot/issues/4937