天天看點

為蘋果ATS和微信小程式搭建 Nginx + HTTPS 服務Delta RPMs disabled because /usr/bin/applydeltarpm not installed增加任務,每月1号淩晨5點30分更新一次證書,并自動重載 nginx 配置

昨天測試開發微信小程式,才發現微信也要求用https加密資料,想來是由于之前蘋果的ats稽核政策的緣故吧,微信想在蘋果上開放小程式必然也隻能要求開發者必須使用https了,于是在伺服器上測試安裝nginx+https服務。

安裝 https 最麻煩的問題應該就是獲驗證書了,證書感覺種類也挺複雜的,有好幾種,單域、泛域、多域。。。還有個種标準亂七八糟的感覺,而且收費很高,還是每年買的。

現在各個雲服務商也都有提供各種基礎功能的免費證書,但似乎很多隻對單域免費,這裡的單域是指每個二級域名都算是一個域名,每個二級域名都需要單獨配置證書。

我使用的是免費的 let's encrypt 證書,支援蘋果ats标準。

<a href="https://letsencrypt.org/">https://letsencrypt.org/</a> let's encrypt 項目旨在讓每個網站都能使用 https 加密,該項目獲得了 mozilla、思科、akamai、identrust 和 eff 等組織的支援, 由 linux 基金會托管

我用的是阿裡雲的伺服器,作業系統版本:centos7.0

提醒:在一切開始前,需要先注意看看伺服器剩餘記憶體,我一開始用的是最低配的測試伺服器,剩餘可用記憶體隻有70mb左右,結果伺服器直接挂了,是以最好先騰出個300mb記憶體再來。 另外,就是伺服器必須綁定域名且是外網可以直接通路的才行,若是内網或虛拟機上是不行的,因為證書安裝時需要通過域名通路資料的,否則不能生成證書。

ssl labs 最終配置測試結果,

為蘋果ATS和微信小程式搭建 Nginx + HTTPS 服務Delta RPMs disabled because /usr/bin/applydeltarpm not installed增加任務,每月1号淩晨5點30分更新一次證書,并自動重載 nginx 配置

好了,下面上配置流程:

我第一次安裝時使用的 openssl 還是系統預設安裝版本 1.0.1e,安裝完後在 ssl labs 測試安全性居然是個 f 等級,于是更新到1.1.0c 之後變成了a,不過後來看了很多文章後,發現大家推薦使用的是 1.0.2j 版本,據說是因為 1.1 官方支援是到 2018年,而且很多軟體還不能相容,1.0.2 是支援到2019年的。至于實際用哪個看你的其他需求了。。。
為蘋果ATS和微信小程式搭建 Nginx + HTTPS 服務Delta RPMs disabled because /usr/bin/applydeltarpm not installed增加任務,每月1号淩晨5點30分更新一次證書,并自動重載 nginx 配置
證書安裝時會在網站根目錄下自動生成 .well-known 目錄,必須讓外網能夠通路該目錄下的檔案才行,否則會認證失敗。 對于 nginx 的版本,我測試時使用過的最低版本是 nginx1.8.1,建議使用目前最新的穩定版 nginx1.10.2

如果之前 nginx.conf 中存在類似下面的規則

需要增加下面配置:注意,因為後面證書還需要自動續期,是以這個配置後面還是需要用到的,不能删除。

1, 需要先安裝 epel

<code>yum install epel-release</code>

2, 先修改為使用國内的 pip 源

<code>`</code>mkdir ~/.pip

cat &gt; ~/.pip/pip.conf &lt;[global]

[install]

trusted-host=pypi.doubanio.com

eof

mkdir /usr/local/certbot

cd /usr/local/certbot

chmod +x ./certbot-auto

./certbot-auto -n

yum provides '*/applydeltarpm'

yum install deltarpm

./certbot-auto certonly --email [email protected] --agree-tos --webroot -w /home/wwwroot/yourwebsite -d www.yourdomain.com

./certbot-auto certonly --email [email protected] --agree-tos --webroot -w /home/wwwroot/yourwebsite -d www.yourdomain.com -d m.yourdomain.com

./certbot-auto certonly --email [email protected] --agree-tos --webroot -w /home/wwwroot/yourwebsite -d www.yourdomain.com -d m.yourdomain.com -w /home/wwwroot/myanotherwebsite -d www.aotherdomain.com -d www.aotherdomain.com

ll /etc/letsencrypt/live/

vi nginx.conf

server {

}

nginx -t

nginx -s reload

vi /etc/sysconfig/iptables

-a input -p tcp -m state --state new -m tcp --dport 443 -j accept

crontab -e

30 05 01 /usr/local/certbot/certbot-auto renew --renew-hook "/etc/init.d/nginx reload"

add_header strict-transport-security "max-age=63072000; includesubdomains; preload";

mkdir -p /usr/local/nginx/conf/vhost/ssl

openssl dhparam -out /usr/local/nginx/conf/vhost/ssl/dhparams.pem 2048

ssl_dhparam /usr/local/nginx/conf/vhost/ssl/dhparams.pem;

繼續閱讀