近两年互联网安全越来越多的进入到人们的视线。Google,Mozilla 等大厂也一直在持续推进 https ,目前来看,成效显著。

今天记录一下使用免费 开源的证书机构 Let’s Encrypt 配合 certbot 完成基于 nginx 的 https 配置。

Let’s Encrypt

准备工作

  1. 需要有一个正式的域名,并且正常添加了对域名的解析。
  2. 需要有基础的 nginx 知识。web服务器不一定是 nginx ,其他的很多都支持,本文以 nginx 为例,具体可以参考 certbot 官网

nginx 的操作

  1. blogs.zeed-w-beez.com 这个域名为例。
  2. /etc/nginx/cond.d/ 目录下创建一个新文件 blogs.zeed-w-beez.com.conf 内容如下。
server {
server_name blogs.zeed-w-beez.com; ### 这里替换为自己的域名。
root /usr/share/nginx/html; ### 这里是程序的目录。

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}

}

安装 certbot: 一个 Agent 用来自动生成证书

  1. 根据certbot官网提示选择Web服务器和操作系统。
    选择Web服务器和操作系统
# 这个是 centos7+nginx 的安装文档:https://certbot.eff.org/lets-encrypt/centosrhel7-nginx

# 1. Enable the optional channel
sudo yum -y install yum-utils
sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional

# 2. Install Certbot
sudo yum install certbot python2-certbot-nginx

# 3.1 自动扫描并导入证书。很据提示填写一些必要信息即可。
sudo certbot --nginx

# 3.2 也可以只生成证书,不自动导入nginx
sudo certbot certonly --nginx

# 4. 手动重新生成证书
sudo certbot renew

# 5. 添加定时任务
sudo echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null

默认证书有效期三个月。配置了定时任务之后,会自动续期