從 PFX 檔案匯出 伺服器憑證檔 與 私密金鑰檔 - daniel-qa/Azure-Kubernetes-Service GitHub Wiki

https://blog.miniasp.com/post/2019/04/17/Convert-PFX-and-CER-format-using-OpenSSL

直接從 PFX 檔案匯出 伺服器憑證檔 與 私密金鑰檔

畢竟你已經拿到了 PFX 檔案,裡面已經包含了 伺服器憑證檔 與 私密金鑰檔,如果當時手邊並沒有當初建立 CSR 的 私密金鑰檔 時,你就需要學會如何直接從 PFX 檔案匯出 伺服器憑證檔 與 私密金鑰檔!

假設你手邊只有一個 server.pfx 檔案,其密碼為 vEryComPleXPw,你想匯出 server.cer 與 server.key 檔案,那麼你可以執行以下命令:

1.產生 伺服器憑證檔 ( server.cer )

Linux Shell 環境

openssl pkcs12 -in server.pfx -nokeys -password "pass:vEryComPleXPw" -out - 2>/dev/null | openssl x509 -out server.crt

2.產生 私密金鑰檔 ( server.key )

openssl pkcs12 -in server.pfx -nocerts -password "pass:vEryComPleXPw" -nodes -out server.key

從 .pfx 轉換成 Nginx 需要的格式

在你的 Debian 環境中,使用 openssl 命令來轉換 .pfx:

  • 1 . 提取私鑰 (server.key)
openssl pkcs12 -in server.pfx -nocerts -nodes -out /etc/nginx/sites-available/server.key
  • 2 . 提取伺服器憑證 (serverCert.pem)
openssl pkcs12 -in server.pfx -clcerts -nokeys -out /etc/nginx/sites-available/serverCert.pem
  • 3 . 提取 CA 憑證(如果需要)

如果你的 .pfx 包含 CA 憑證,則執行:

openssl pkcs12 -in server.pfx -cacerts -nokeys -out /etc/nginx/sites-available/ca.crt
  • Nginx 配置

確保 Nginx 的配置 (/etc/nginx/nginx.conf 或 /etc/nginx/sites-available/default.conf) 使用正確的憑證路徑:

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate      /etc/nginx/sites-available/serverCert.pem;
    ssl_certificate_key  /etc/nginx/sites-available/server.key;

    location / {
        proxy_pass http://your-backend-service;
    }
}

(可選)如果有 CA 憑證

如果你有 ca.crt,可以加上:

    ssl_trusted_certificate /etc/nginx/sites-available/ca.crt;

重新啟動 Nginx

轉換完成後,測試 Nginx 設定:

nginx -t

如果沒有錯誤,重新啟動 Nginx:

systemctl restart nginx

然後你可以測試 HTTPS:

curl -k https://yourdomain.com

這樣就完成 .pfx 轉 .pem 和 .key,並成功配置到 Nginx 🚀!