- 前言
- 第一步,安装并配置nginx
- 第二步,安装certbot
- 第三步,配置自动续期
前言
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。—– [百度百科]
https被苹果推荐使用,而小程序强制要求使用,但是购买一个https证书最便宜一年也要2000RMB一个域名,真心感觉贵,当然对于大公司而言只是小意思,小公司还是要变通一下,能省则省,通过百度了解到Let’s Encrypt,可以非常方便的安装证书,配置nginx,以及自动续期,关键是 完全免费 哦!
第一步,安装并配置nginx
- 安装nginx
1 |
$ yum -y install nginx |
- 修改配置文件
1 |
$ vim /etc/nginx/nginx.conf |
- 简单配置一个域名的反向代理(配置文件中一定不要有中文,否则第二步的最后一步会失败)
1 2 3 4 5 6 7 |
<span class="hljs-keyword">server</span> { listen <span class="hljs-number">80</span>; server_name abc.example.com location / { proxy_pass http:<span class="hljs-comment">//127.0.0.1:8080/;</span> } } |
第二步,安装certbot
- 下载pip
1 |
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py |
- 安装pip
1 |
$ python get-pip.py |
- 安装certbot
1 |
$ pip install certbot |
- 安装certbot的nginx插件
1 |
$ pip install certbot-nginx |
- 自动配置nginx输入以下命令后,会进行一些交互,具体的忘记了,大概是首先要求录入邮箱,然后是是否同意许可,再然后选择要添加证书的域名等,自己好好看看提示,不难理解
1 |
$ certbot -nginx |
第三步,配置自动续期
- 创建自动续期服务
1 |
$ <span class="hljs-built_in">sudo</span> vi /usr/lib/systemd/system/certbot.service |
- 复制并黏贴以下内容,保存
1 2 3 4 5 6 |
<span class="hljs-title">[Unit]</span> <span class="hljs-setting">Description=<span class="hljs-value">Let's Encrypt renewal</span></span> <span class="hljs-title">[Service]</span> <span class="hljs-setting">Type=<span class="hljs-value">oneshot</span></span> <span class="hljs-setting">ExecStart=<span class="hljs-value">/usr/bin/certbot renew --quiet</span></span> |
- 创建定时器
1 |
$ <span class="hljs-built_in">sudo</span> vi /usr/lib/systemd/system/certbot.timer |
- 复制并黏贴一下内容,保存(官方推荐一天两次执行,以确保证书可用,这里选择0/12点)
1 2 3 4 5 6 7 8 9 10 |
<span class="hljs-title">[Unit]</span> <span class="hljs-setting">Description=<span class="hljs-value">Twice daily renewal of Let's Encrypt's certificates</span></span> <span class="hljs-title">[Timer]</span> <span class="hljs-setting">OnCalendar=<span class="hljs-value"><span class="hljs-number">0</span>/<span class="hljs-number">12</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span></span></span> <span class="hljs-setting">RandomizedDelaySec=<span class="hljs-value"><span class="hljs-number">1</span>h</span></span> <span class="hljs-setting">Persistent=<span class="hljs-value"><span class="hljs-keyword">true</span></span></span> <span class="hljs-title">[Install]</span> <span class="hljs-setting">WantedBy=<span class="hljs-value">timers.target</span></span> |
- 激活定时器
1 |
$ <span class="hljs-built_in">sudo</span> systemctl enable certbot.timer |
- 启动定时
1 |
$ <span class="hljs-built_in">sudo</span> systemctl start certbot.timer |