前言
SSL 是讓 Web 應用程式能擁有機密傳輸特性的一個機制,運作在應用層上。然而要申請一個有效的憑證,過程是非常耗時的,因此若在開發、測試階段,可先用自簽憑證來應急。但是!要上線的系統最好等有了合法憑證再發布,避免遭受中間人攻擊 (Man in The Middle, MITM)。
產生 CA SSL
⾸先為我們的 CA (Certificate Authority) 產⽣⼀把私鑰,這個步驟可以說是為自己建立一個 CA,這個 CA 完全由自己掌控
1 | openssl genrsa -out root/ca.key 4096 |
再使⽤這把私鑰產⽣⼀份⾃我簽署的 CA 憑證,其中 subj
可依自己需求做更改
1 | openssl req -new -x509 -days 365 -sha256 \ |
產生 Server SSL
為我們的 Server 產⽣不加密之 PEM 格式的私密⾦鑰
1 | openssl genrsa -out server/server.key 2048 |
產⽣憑證請求檔 CSR (Certificate Signing Request),其中 subj
可依自己需求做更改
1 | openssl req -new -key server/server.key \ |
CN
會填上 Server 的 FQDN,要注意的是 CN 不可與 CA 的 CN 相同。
把 CSR 丟給自己的 CA 簽署,也可以換句話說:讓自己的 CA 簽署該憑證
1 | openssl x509 -req -CAcreateserial -days 30 -sha256 \ |
現在⽬錄應該有以下這些文件,server.key
是 Server 的私鑰,server.crt
是 Server 的憑證,也因為是用我們自創的 CA 來簽核的一個憑證,又稱為自簽憑證
1 | $ ls -alR . |
- 若讀者想知道如何確認 CA 簽回的憑證是否與手上私鑰是一對的,可以參考 [SSL] 確認申請回來的憑證與手中的私鑰匹配。
- 若讀者想更進一步知道 SSL 簽名與驗證過程,也可以參考 [SSL] 數位簽名與驗證的過程。