內部服務使用 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
。
- 選擇受信任的根憑證授權單位
- 按下滑鼠右鍵選擇
所有工作
>匯入
- 選擇下一步。
- 將檔案類型選擇所有檔案,並且選擇 ca.pem,接著一路下一步以及同意到結束。
💬 修改 user hosts
Windows 的路徑在 C:\Windows\System32\drivers\etc\hosts
填入 10.10.10.22 example.test
。
這時候在網址打 https://example.test 應可以順利使用 https 連線 server 並且不予以警告。
🟣 其他方法
💬 使用真實憑證
letsencrypt 可以使用不直連服務驗證的方式發放憑證,可參考文件進行 DNS 認證,但這個方法還是必須有真實 domain name。
💬 Reverse proxy server
使用一台具有 domain public 可用的 reverse server,將他配置好 SSL 資源後將 domain 轉到區網 service,並且限制可連線的區網 IP。