惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
腾讯CDC
博客园 - 司徒正美
A
About on SuperTechFans
H
Help Net Security
J
Java Code Geeks
C
Check Point Blog
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MongoDB | Blog
MongoDB | Blog
U
Unit 42
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
MyScale Blog
MyScale Blog
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
F
Fortinet All Blogs
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
GbyAI
GbyAI
博客园 - 【当耐特】
雷峰网
雷峰网

Nic Lin's Blog

謝明真 - 高效領導力的課後筆記 NFT 開發實戰!基礎智能合約入門 (3) NFT 開發實戰!基礎智能合約入門 (2) NFT 開發實戰!基礎智能合約入門 (1) 如何自我檢測 log4j CVE 漏洞 Rails 如何在資料寫入時記錄來源 IP 位置 如何經營工程師 Youtube 頻道 - Part 8 營收篇 如何經營工程師 Youtube 頻道 - Part 7 酸民文化篇 如何經營工程師 Youtube 頻道 - Part 5 設備器材篇 如何經營工程師 Youtube 頻道 - Part 4 後製剪輯篇 如何經營工程師 Youtube 頻道 - Part 3 文案企劃篇 如何經營工程師 Youtube 頻道 - Part 2 設備器材篇 如何經營工程師 Youtube 頻道 - Part 1 制訂頻道方向篇 如何經營工程師 Youtube 頻道 - Part 0 Rails 中避免 race condition 的最佳實踐(二) Rails 中避免 race condition 的最佳實踐(一) 10 分鐘整合 google sheet 做自動化開發功能週報 經營 Side Project 300 天所帶來的收穫及挑戰 我的 Youtube 影片製作流程 API 設計時必須注意的 HTTP header 底線問題 如何提升你的程式可讀性之實務技巧(三) 如何提升你的程式可讀性之實務技巧(二) 如何提升你的程式可讀性之實務技巧(一) Ruby 中使用 freeze 優化效能的時機 避免 React 中的 useEffect 無限 render 在 Rails 內輕量使用 Vue Component 的最佳實踐 如何在區域網路用 Docker 架設有 SSL 的 Gitlab 從被問到問人,那些我常問的面試問題 [Rails] 如何漂亮寫出可維護的 query (Maintainable Rails Query) 在已知長度情況下優化 slice 的性能
用 OpenSSL 自簽開發用 HTTPS SSL 憑證
Nic Lin · 2019-08-16 · via Nic Lin's Blog

有時開發用或是自己防火牆內要用 HTTPS,就會需要用到自己簽 SSL 的部分

通常我會在機器上的位置例如 /etc/certs/awesome.domain 來做,一組憑證就一個資料夾這樣。

首先,先建立 ssl.conf,這裡注意如果是開發網站用的尤其像是 chrome 會擋掉就算是本機信任的憑證,只要沒有寫 [alt_names] DNS 的都不會理你。

假設我要開發的網站名稱是 awesome.domain.tw 好了,可以照以下的寫法。

[req]
prompt = no
default_md = sha256
default_bits = 2048
distinguished_name = dn
x509_extensions = v3_req

[dn]
C = TW
ST = Taiwan
L = Taipei
O = Duotify Inc.
OU = IT Department
emailAddress = admin@example.com
CN = awesome.domain.tw

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = awesome.domain.tw
DNS.2 = *.domain.tw

透過 OpenSSL 執行指令簽名,3650 是一次簽十年

openssl req -x509 -new -nodes -sha256 -utf8 -days 3650 -newkey rsa:2048 -keyout server.key -out server.crt -config ssl.conf

接下來我們會看到生成了兩支檔案,分別為公鑰和私鑰。

nginx 設定 https 可以如下

server {
  listen 80 awesome.domain.tw;

  # 將所有HTTP requests轉至HTTPS
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl awesome.domain.tw;
  server_name awesome.domain.tw;

  ssl_certificate /etc/certs/awesome.domain/server.crt;
  ssl_certificate_key /etc/certs/awesome.domain/server.key;

  # 其他ssl參數設定
  ...
}

重啟 nginx 之前,可以用指令 nginx -t 去測試目前的檔案有沒有噴錯或無法讀取的狀況,如果遇到憑證無法讀取,請把 /etc/certs/awesome.domain 下的兩支檔案設定 chmod 744 應該就可以通過了。

接下來可以把公鑰匯出,放到自己電腦的 key chain,設定為永久信任,以下是步驟

MAC -> 搜尋框輸入「key chain」-> 左邊鑰匙圈選「系統」-> 把剛剛的 server.crt 丟進去並雙擊打開,將信任展開後設定為永久信任

或是指令版

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain server.crt

之後將 host 放到自己電腦中的 /etc/hosts 下,例如

10.10.10.1 awesome.domain.tw

打開瀏覽器進行訪問 https://awesome.domain.tw 應該就可以看到已經設置好的安全憑證。