# Nginx 使用 openSSL 裝憑證大全 (ubuntu) ###### tags: `Nginx` `openSSL` ### 憑證與私鑰 首先需要**兩**個檔案:憑證與私鑰(沒有的話叫IT生給你) 這兩個檔案是純文字檔也沒關係 反正副檔名手動改一下 憑證.crt 私鑰.key 名字自己亂取也沒差XD - 憑證內容大概長這樣 BEGIN CERTIFICATE開頭 ``` -----BEGIN CERTIFICATE----- MIIHlwSBN6QRVkCz+QrS6Ewbyw... 一大串像亂碼的東西 -----END CERTIFICATE----- ``` - 私鑰內容大概長這樣 BEGIN RSA PRIVATE KEY 開頭 ``` -----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAvo/sV0zRmtwMH... 一大串像亂碼的東西 -----END RSA PRIVATE KEY----- ``` 如何取得(Cloudflare) 登入 Cloudflare Dashboard 點進你的網域 → 點「SSL/TLS」→「Origin Server」 點「Create Certificate」 選項: Private Key type: RSA 2048 Certificate Validity: 建議選 15 years Hostnames: your.domain.com 或 *.your.domain.com 完成後會顯示兩段: Origin Certificate(你存成 server.crt 或 origin.pem) Private Key(你存成 server.key) ⚠️ Cloudflare Origin Certificate 不被瀏覽器信任,但非常適合伺服器後端使用(例如 Traefik 使用在 websecure 的 entrypoint 上) --- ### 安裝openSSL - 安裝指令 ``` command sudo apt-get install openssl sudo apt-get install libssl-dev ``` - 這邊應該沒有問題,也很多教學可以參考,這邊給參考 - https://fedingo.com/how-to-install-openssl-in-ubuntu/ --- ### 檢查私鑰配對 - 看 server.crt ``` command openssl x509 -noout -modulus -in server.crt | openssl md5 ``` 結果 ![](https://i.imgur.com/tb9dSq3.png) - 看 server.key ``` command openssl rsa -noout -modulus -in server.key | openssl md5 ``` 結果 ![](https://i.imgur.com/tb9dSq3.png) **兩者一樣就是對的,不一樣無法執行喔** --- ### 合併多個憑證 - 合併 server.cer與root.cer與use.cer 存成server.crt ``` command cat server.cer root.cer uca.cer >> server.crt ``` **注意要把私鑰配對的到的放在第一個輸入** 範例中server.cer跟私鑰是配對的所以是接在cat後第一個 --- ### 加入憑證到Nginx conf - 把憑證加入conf檔案 不知道什麼是 conf檔的可以先看這個教學 https://ithelp.ithome.com.tw/articles/10241354 ``` command server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # 用443 port做hppts監聽 listen 443 ssl default_server; listen [::]:443 ssl default_server; #指定你的server.crt與server.key路徑 ssl_certificate ./cert/server.crt; ssl_certificate_key cert/server.key; location /{ proxy_pass http://你的IP; proxy_set_header Host $host; # 在 proxy request 時保留 client 的 header } ``` 最後重啟你的網站,就可以使用https囉!