2024/07/11

Create Local SSL For Development

內部服務使用 SSL 相關解法

🟣 建立自簽憑證

  • domain name: example.test
  • ip: 10.10.10.22

🎈 此方法不需要擁有真實 domain,但會需要去每個 user 電腦配置內容。

💬 建立 ca 憑證

openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem

建立流程 Common Name 最為重要,不可以填錯。

💬 建立 service 憑證需求檔案

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr

💬 產出 server 憑證

先建立一個文件 server.ext

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.test
DNS.2 = *.example.test

💬 產生服務 crt

openssl x509 -req -in server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.crt -days 3650 -sha256 -extfile server.ext

💬 配置 nginx.conf

server {
    listen 443 ssl;
    root /var/www/html;
    server_name: example.test;
    index index.html;
    ssl_certificate /etc/ssl/server.crt;
    ssl_certificate_key /etc/ssl/server.key;
}

💬 將 CA 憑證匯入 Windows

Windows Key + r 叫出執行視窗,輸入 certmgr.msc

  1. 選擇受信任的根憑證授權單位
  2. 按下滑鼠右鍵選擇 所有工作 > 匯入
  3. 選擇下一步。
  4. 將檔案類型選擇所有檔案,並且選擇 ca.pem,接著一路下一步以及同意到結束。

💬 修改 user hosts

Windows 的路徑在 C:\Windows\System32\drivers\etc\hosts

填入 10.10.10.22 example.test

這時候在網址打 https://example.test 應可以順利使用 https 連線 server 並且不予以警告。

🟣 其他方法

💬 使用真實憑證

ACME 驗證方式

letsencrypt 可以使用不直連服務驗證的方式發放憑證,可參考文件進行 DNS 認證,但這個方法還是必須有真實 domain name。

💬 Reverse proxy server

使用一台具有 domain public 可用的 reverse server,將他配置好 SSL 資源後將 domain 轉到區網 service,並且限制可連線的區網 IP。

🟣 參考網站

沒有留言: