GTLSCA TLS憑證,NGINX 伺服器設定方式

Rz Chen
3 min readMay 27, 2024

--

若是有透過政府憑證入口網申請 TLS 憑證的話https://gtlscaweb.nat.gov.tw/GCP/views/SAPSSL/SSL01.html

因原始文件未說明 NGINX 伺服器的設定方式,這邊留下設定筆記。

步驟:NGINX 伺服器設定方式

1.將取得的 CER 憑證檔轉成 CRT

openssl x509 -in XXX.cer -inform DER -out XXX.crt

2.下載 GTLSCA憑證串鍊,以產生憑證鍊

cat XXX.crt GTLSCA.crt eCA1_to_eCA2-New.crt ROOTeCA_64.crt > fullchain.pem

憑證鏈順序:

  • 服務器證書 (XXX.crt)
  • 中間證書 (GTLSCA.crt, eCA1_to_eCA2-New.crt)
  • 根證書 (ROOTeCA_64.crt)

3. 設定 NGINX Site config

ssl_certificate /etc/nginx/cert/gca/fullchain.pem; # 憑證鍊
ssl_certificate_key /etc/nginx/cert/gca/www.key; # 私鑰

然後重啟服務

sudo service nginx reload

以命令或是從 https://www.ssllabs.com/ 校驗

openssl s_client -connect www.yourdomain.edu.tw:443

加碼1: Webmin 伺服器安裝方式

將預設的自簽憑證更名後,將憑證鍊與私鑰合併在同一個檔案

cd /etc/webmin
sudo cp /etc/nginx/cert/gca/fullchain.pem miniserv.pem
sudo bash -c 'cat /etc/nginx/cert/gca/www.key >> miniserv.pem'
sudo ./restart

加碼2: 產製 SAN 憑證的 CSR 憑證請求檔

假設這張 SAN 憑證要給不同 DN 使用
www.yourdomain.edu.tw、www2.yourdomain.edu.tw

建立一個 server.cnf 檔案內容如下

[ req ]
distinguished_name = req_dn
req_extensions = req_ext
prompt = no

[ req_dn ]
C = TW
ST = Taiwan
L = Taipei
O = YOUR ORG
CN = www.yourdomain.edu.tw

[ req_ext ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = www.yourdomain.edu.tw
DNS.2 = www2.yourdomain.edu.tw

以 openssl 產生私鑰及 CSR 憑證請求檔

openssl req -nodes -newkey rsa:2048 -nodes -keyout server.key -out server.csr -config server.cnf

--

--