Skip to content

antony@notes:~/networking$ cat "Self-Signed-SSL-Certificates.md"

Self-Signed SSL Certificates

2023-04-14· networking ·自簽憑證

Self-Signed SSL Certificates

:::warning

:::spoiler 目錄

[TOC]

:::

什麼是自簽憑證 (self-signed certificate)?

HTTPS 在網站安全性上有兩層作用,

  1. 訪客與網站之間的資料傳輸有經過加密,若中途攔截下來是無法被解讀的。
  2. 網頁瀏覽器在建立加密連線前,會先檢查網站的 SSL 憑證是否為受信任的第三方機構所簽發。若有,瀏覽器會判定網站來源無虞,反之則會出現警示。

自簽署(self-signed)的 SSL 憑證,為未經過公共信任的憑證授權中心(CA)的核可,自行利用工具(如 : OpenSSL)產生的憑證。它一樣具有加密連線的效果,但訪客將需要忽略瀏覽器警示,才能夠開啟網站。

簡單來說,這些自簽憑證是基於 X.509 憑證中使用的加密私鑰和公鑰對架構。此外,自簽 SSL 憑證使用與其他付費 SSL/TLS 憑證相同的加密方法來加密相關的傳入和傳出數據。

在發行過程中缺乏獨立驗證會產生額外的風險,這就是自簽憑證的問題。它們被認為對於公開面向的網站和應用程序來說是不安全的。

用途

雖然自簽憑證可能會有風險,但它們也有其用途。主要是因為它們不需要花費,而且任何開發人員都可以輕鬆地申請使用。它們可以按照自己的時間表實現,通常用於內部測試環境或對外部用戶受限的 Web 伺服器

風險

自簽憑證不需要在一定時間後過期或需要更新,這與 CA 憑證的要求不同。雖然這似乎很方便,但這也是這種選擇的主要問題之一,因為它們無法遵從針對發現的漏洞的安全更新,也無法滿足保障現代企業所需的憑證靈活性。因此,這種身份驗證方法很少被建議使用。

此外,自簽憑證無法撤銷,如果憑證被遺忘或留在容易受到惡意攻擊的系統上,將暴露出所使用的加密方式。即使如此,一些 IT 部門仍然認為由授權中心發行的憑證的成本超過了額外驗證和支持減少的風險。

使用自簽名 SSL 憑證會出現安全警告,讓網站訪客感到擔心和不安。這些警告會讓網站看起來可能被入侵,而且無法保障訪客的數據安全。訪客會傾向於避免這些網站,轉而去看沒有安全警告的競爭對手網站。

可以理解的是,如果訪客的信任網頁瀏覽器告訴他們該網站可能缺乏適當的安全措施,他們將不太可能在該網站上共享任何個人或機密信息。使用自簽名憑證可能會被利用,其中一種流行的方法是中間人攻擊,讓透過 TLS/SSL 協議共享的數據被監視,讓訪客面臨身份盜用和系統入侵的風險。

如果選擇使用這種類型的 SSL 憑證,您將處於孤立無援的狀態,因為您沒有受信任的憑證授權機構支持,也無法應用最新的加密方法,以確保數據、設備和應用程序的適當身份驗證和加密。

What is Certificate Authority

在網路世界裏,當我們打開瀏覽器要訪問一個網站時,為了確保對方的身分,通常都會讓一個中間機構扮演認證的角色,這個角色就是所謂的數位憑證認證機構(Certificate Authority,CA),也可以被稱為「電子商務認證中心」、「電子商務認證授權機構」

CA 最主要的工作,就是負責發放和管理數位憑證的權威機構,檢核公鑰合法性。

Self-Signed SSL Certificates: Basic Requirements

The basic requirements for local SSL hosting, and setting up self-signed SSL in general, are:

  1. A private key (.pem)
  2. A CSR (Certificate Signing Request)
  3. A public certificate (usually .crt, sometimes .pemtoo)

The CSR is kind of intermediate step between the key and the cert (the CSR is signed by the key to become the cert, so in many cases it is temporarily created via a prompt). You can think of the cert as being derived from the key, via the CSR.

💡 SSL cert pairs are often referred to with the X.509identifier; this is essentially the standard that is used for TLS/SSL, but it is used for other purposes as well.

參考網站