iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0
自我挑戰組

網路通訊隨意聊系列 第 17

數位憑證(三),容易混淆的 Key、PEM 及 Cert

  • 分享至 

  • xImage
  •  

我們在之前聊到數位憑證的基本觀念驗證流程以及根憑證和信任鏈,但是在架設一個網站時,實際申請和放置憑證時還是有些小細節需要注意。

今天讓我們稍微深入點來聊聊一些比較容易被搞混的名詞們吧!

Key

我們知道使用非對稱式加密能夠產生一組公鑰及私鑰,用公鑰加密的資訊只能用私鑰來解密,反之亦然。而在數位憑證簽署之前,我們需要先產生一組網站使用的公私鑰。

主要用在當用戶訪問網站時,能將資訊用網站公鑰加密,才不會在傳輸過程中被竊取資訊,因為只有網站本身才擁有私要能夠解密。

而當我們想產生一組公私鑰時,也常常為使用到 .key 的副檔名,例如用 OpenSSL 這套軟體來產生密鑰:

openssl genpkey -algorithm RSA -out private.key

我們指定的副檔名就是 .key,但實際上裡面的內容是預設以 PEM 的格式儲存的。

PEM 及 Cert

那麼 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 加密的伺服器時,需要一組密鑰以及憑證,而這兩者又可能被儲存成不同的形式和不同的副檔名,著實讓剛接觸的人容易混淆。

我們可以簡單整理一下邏輯:

  1. 不論是否副檔名為 .pem,開啟檔案後如果是 -----BEGIN 開頭的就是 PEM 格式的檔案,那就容易判斷到底是憑證(CERTIFICATE)還是密鑰(PRIVATE KEYPUBLIC KEY)了(或甚至是放在一起)

  2. 如果檔案是二進制的,可能就是透過 DER 格式所編碼而成的,但具體是憑證還是密鑰等等,就需透過其他軟體如 OpenSSL 來解析了

參考資料

  1. Wiki - PEM 格式

  2. Wiki - X.509


上一篇
數位憑證(二),根憑證及信任鏈
下一篇
釣魚網站,該怎麼避免帳號密碼、信用卡號碼被釣出?
系列文
網路通訊隨意聊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言