iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
Modern Web

與WordPress的邂逅,像極了愛情!系列 第 16

如何申請網域與實作SSL(下)

  • 分享至 

  • xImage
  •  

《本篇文章同步發表在我瘋官方粉絲團&我瘋官方網站

大綱

  • 資安安全性
  • http、https、SSL 與 Domain Name
  • 實作 SSL 連線

實作 SSL 連線

Step1 域名購買
相關域名供應商有許多,有興趣的朋友可以再自行 Google 一下,這邊我們是透過 GoDaddy 購買域名,名稱為 www.wowfuncode.com,買了域名後很快能做相關設定,主要設定是要讓域名與 IP 做個對應而已。

Step2 SSL 憑證申請
申請憑證的簽發單位有許多,費用也不一,這邊我們是使用免費的 Let’s Encrypt - Free SSL/TLS Certificates 進行申請。

首先連進去 GCP VM,透過 GCP 提供的 SSH 方法快速連入

安裝 Lego Client

進入 tmp 資料夾並且下載 lego 安裝檔

終端機輸入

cd /tmp
curl -Ls <https://api.github.com/repos/xenolf/lego/releases/latest> | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i -

接著進行安裝,lego_vX.Y.Z 代表你所裝的版本

tar xf lego_vX.Y.Z_linux_amd64.tar.gz
sudo mkdir -p /opt/bitnami/letsencrypt
sudo mv lego /opt/bitnami/letsencrypt/lego

停止 nginx 才向 Let’s Encrypt 申請憑證,並重啟服務

sudo /opt/bitnami/letsencrypt/lego —tls —email="wowfuncode@gmail.com"  —domains="www.wowfuncode.com" —path="/opt/bitnami/letsencrypt" run
sudo /opt/bitnami/ctlscript.sh start nginx
sudo /opt/bitnami/ctlscript.sh restart nginx

生成的憑證存放位置

  • /opt/bitnami/letsencrypt/certificates
  • 裡面包含了四個檔案,檔名都是你的第一個 domain name

  • 兩個最重要的檔案一定要妥善保管,是 SSL 連線主要依據,也要避免上傳雲端
    • crt 檔案就是 public key
    • domain.com.key 就是 private key

Step3 Nginx Server 參數設定

將預設的憑證位置指到新的憑證

Bitnami 服務會有個預設的 SSL 憑證路徑:

/opt/bitnami/nginx/conf/server.crt
/opt/bitnami/nginx/conf/server.key

目前是假憑證,最方便的做法是將此兩個檔案直接指向正確憑證

sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt.old
sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.key /opt/bitnami/nginx/conf/bitnami/certs/server.key.old
sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.csr /opt/bitnami/nginx/conf/bitnami/certs/server.csr.old
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/nginx/conf/bitnami/certs/server.key
sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt
sudo chown root:root /opt/bitnami/nginx/conf/bitnami/certs/server*
sudo chmod 600 /opt/bitnami/nginx/conf/bitnami/certs/server*

大致上的流程是:

  • mv 指令將舊的 SSL 憑證檔案改名,以 .old 做結尾
  • ln -sf 指令建立兩個鏈結 (link) 從預設的位置指向 Lego 生成的位置
  • chown root:root 指令設定憑證相關檔案的權限,只有 root user 可以存取

其他服務例如 apache 可以參考官網

打開 SSL 設定

指令開啟 nginx-vhosts.conf 檔案

vim  /opt/bitnami/nginx/conf/bitnami/bitnami.conf

ssl 開關(on)打開,並且設定 crt、key 路徑

ssl on;
ssl_certificate  "/opt/bitnami/nginx/conf/server.crt";
ssl_certificate_key  "/opt/bitnami/nginx/conf/server.key";

強制轉向到 https

指令開啟 nginx-vhosts.conf 檔案

vim  /opt/bitnami/apps/wordpress/conf/nginx-vhosts.conf

Server 內加入語法,使其網頁能

server {
  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} !^(localhost|127.0.0.1)
  RewriteCond %{REQUEST_URI} !^/\\.well-known
  RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]
}

以上就是整個 SSL 的實作,那麼下次見囉~

《精采文章同步發表》
1.我瘋FB粉絲專頁:https://www.facebook.com/我瘋程式工作室wowfuncode-102683961458110/
2.我瘋官網:https://www.wowfuncode.com/category/blog/


上一篇
如何申請網域與實作SSL(上)
下一篇
自動化 openSSL 排程
系列文
與WordPress的邂逅,像極了愛情!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言