我們在之前聊到數位憑證的基本觀念、驗證流程以及根憑證和信任鏈,但是在架設一個網站時,實際申請和放置憑證時還是有些小細節需要注意。
今天讓我們稍微深入點來聊聊一些比較容易被搞混的名詞們吧!
我們知道使用非對稱式加密能夠產生一組公鑰及私鑰,用公鑰加密的資訊只能用私鑰來解密,反之亦然。而在數位憑證簽署之前,我們需要先產生一組網站使用的公私鑰。
主要用在當用戶訪問網站時,能將資訊用網站公鑰加密,才不會在傳輸過程中被竊取資訊,因為只有網站本身才擁有私要能夠解密。
而當我們想產生一組公私鑰時,也常常為使用到 .key
的副檔名,例如用 OpenSSL 這套軟體來產生密鑰:
openssl genpkey -algorithm RSA -out private.key
我們指定的副檔名就是 .key
,但實際上裡面的內容是預設以 PEM 的格式儲存的。
那麼 PEM 又是什麼呢?全名為 Privacy-Enhanced Mail 的 PEM 是一種標準的檔案格式,用於儲存加密相關的資訊,如密鑰和數位憑證。
打開來看會是一段長成這樣的檔案,裡面 ...
的部分放的是 base64 編碼後的內容。
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
看 -----
後面的內容 PRIVATE KEY
可以知道這是一份儲存密鑰的檔案,如果接的內容為 CERTIFICATE
就表示儲存的是一個憑證。
也有可能同一份 .pem
檔中同時儲存著憑證和密鑰,例如某些伺服器的設定就同時把兩者擺在一個檔案,長的樣子就會像是:
-----BEGIN CERTIFICATE KEY-----
...
-----END CERTIFICATE KEY-----
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
而 Cert 通常指的就是憑證 Certificate 了,儲存憑證的副檔名除了上面所講的 .pem
外,還有可能是 .cer
、.crt
、.der
等等,除了在 .pem
我們能夠用一般的編輯器查看外,其他格式可能皆為使用 DER 這種格式編碼而成的二進制檔案,無法被直接閱讀。
當我們要為網站建立 SSL/TLS 加密的伺服器時,需要一組密鑰以及憑證,而這兩者又可能被儲存成不同的形式和不同的副檔名,著實讓剛接觸的人容易混淆。
我們可以簡單整理一下邏輯:
不論是否副檔名為 .pem
,開啟檔案後如果是 -----BEGIN
開頭的就是 PEM 格式的檔案,那就容易判斷到底是憑證(CERTIFICATE
)還是密鑰(PRIVATE KEY
、PUBLIC KEY
)了(或甚至是放在一起)
如果檔案是二進制的,可能就是透過 DER 格式所編碼而成的,但具體是憑證還是密鑰等等,就需透過其他軟體如 OpenSSL 來解析了