【網絡】給你的網站加個密吧(HTTPS 配置)

前言

SSL 證書是數字證書的一種,遵照 SSL 協議,具備服務器身份驗證和數據傳輸加密的功能。這裏主要採用了免費的 let's enscript 來在服務器上進行配置。nginx

1. 使用 acme.sh 來安裝並生成證書

1.1 安裝 acme.sh

acme.sh 會安裝到 ~/.acme.sh 目錄下git

curl https://get.acme.sh | sh
複製代碼

1.2 生成證書

注意此處會佔用 80 端口(有時候自動失敗,手動更新的時候尤爲注意 nginx 佔用 80),若是有其餘進程佔用了 80 端口要關閉,例如 nginx。 這裏使用了 standalone 模式,此外還有 nginx apache 模式等,詳情請看 github.com/Neilpang/ac…github

~/.acme.sh/acme.sh --issue --standalone -d example.com -d www.example.com -d test.example.com (-k ec-256 能夠選,-k 表示密鑰長度)
複製代碼

1.3 更新證書

let's enscript 的有效期只有 90 天,到期須要更新證書。acme.sh 腳本 60 天會自動更新一次,固然也能夠手動更新 手動更新shell

~/.acme.sh/acme.sh --renew -d example.com -d www.example.com -d test.example.com --force --ecc
複製代碼

1.4 安裝證書和祕鑰

多個域名只須要配置第一個就能夠了,此處安裝到 /etc/nginx/ssl/ 路徑下(最好很差修改,手動更新的時候比較麻煩)apache

~/.acme.sh/acme.sh --install-cert --ecc -d example.com \
--key-file      /etc/nginx/ssl/example.com.key  \
--fullchain-file /etc/nginx/ssl/example.com.crt
複製代碼

2. nginx 配置

server {
  listen  443 ssl;
  ssl on;
  ssl_certificate      /etc/nginx/ssl/wangshukeji.crt;
  ssl_certificate_key  /etc/nginx/ssl/wangshukeji.key;
  ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers          HIGH:!aNULL:!MD5;
  server_name          example.com;
}
# 配置 302 轉發
server {
  listen  80;
  server_name  example.com;
  return 302 https://example.com$request_uri;
}
複製代碼

3. 通配符域名

// 阿里雲控制檯 accsess key 打開獲得下面的值
export Ali_Key="key"
export Ali_Secret="secret"
acme.sh --issue --dns dns_ali -d example.com -d '*.example.com'

// Namesilo
export Namesilo_Key="xxxxxxxxxxxxxxxxxxxxxxxx"
acme.sh --issue --dns dns_namesilo --dnssleep 900 -d example.com -d '*.example.com'

acme.sh --renew -d example.com -d '*.example.com'
複製代碼

中間會等待120s,生成的證書在 /root/.acme.sh/example.com/ 目錄下,而後配置 fullchain.cer 和 example.com.key 便可。json

效果圖
相關文章
相關標籤/搜索