猴子的記憶庫

因為常常忘記之前的安装和配置過程,所以建立本記憶庫

0%

Nginx安装配置HTTPS及更新SSL證書

Nginx安装配置HTTPS及更新SSL證書

最近在做Progressive Web App (PWA)的應用,發現Service Workers 只可以在https上承載。只好配置HTTPS,SSL用Let’sEncrypt免費證書。

1.首先是找到DNS服務商的API

可到 dnsapi · acmesh-official/acme.sh Wiki (github.com) 中查詢

例如是name.com服務商的是用這樣

setup_SSL1.png

先到 https://www.name.com/account/settings/api 找API的Username和Token,之後在終端輸入下方命令,namecom的API是有2個PRODUCTION和DEVELOPMENT/TEST ENVIRONMENT,記得是PRODUCTION,之後要加伺服器的IP加入WHITELISTED IPS。

1
2
export Namecom_Username="testuser"
export Namecom_Token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

配置HTTPS命令

如果網站本身用LNMP架構,所以要加上SSL只要用命令

lnmp dnsssl namecom

注意命令中的namecom是指DNS服務商,看Github中--dns dns_namecom有些可能是簡稱如cloudxns是cx等等…

如果不是就要安裝 ACME Shell script

安裝會要求輸入網站,網站目錄,是否啟用指定功能等等

更新SSL證書

因為Let’sEncrypt免費證書只有3個月效期,如果要更新SSL證書,可以用下方命令更新證書

"/usr/local/acme.sh"/acme.sh --cron --home "/usr/local/acme.sh"

也可以加入crontab 例行性工作排程來完全自動化更新證書

2.強制將 HTTP重定向HTTPS

如果是用LNMP架構上SSL,HTTPS的設定檔會自然生成
如果是單一網域設定檔會在/usr/local/nginx/conf/nginx.conf

如果是多重網域(Virtual Host),設定檔會在/usr/local/nginx/conf/vhost/

只要在設定檔中的80 port server 加上 return 301 https://$server_name$request_uri; 就可以

1
2
3
4
5
server {
listen 80;#http
server_name www.XXXX.com;
return 301 https://$server_name$request_uri;#加上這行
}