甚麼是自簽名證書,如何建立自簽名證書
自簽名證書是由使用證書的實體自行簽發、自行簽署的數碼證書,並非由受信任的證書頒發機構(CA)簽發。自簽名證書成本低、建立速度快,但由於存在安全風險、無法吊銷、無外部驗證,不建議用於面向公眾的網站或涉及敏感數據的場景,更適合內部測試環境使用。其風險包括觸發瀏覽器警告、易受攻擊、加密機制失效。建立自簽名證書需要生成私鑰、證書簽名請求(CSR)並自行簽發證書,但為提升安全性,機構應選擇使用受信任CA簽發的證書。
更新時間:2023年12月4日
自簽名SSL/TLS證書是指未經過公開受信任的證書頒發機構(CA)簽署的數碼證書。自簽名證書與傳統CA簽發證書的分別在於,它由證書關聯網站或軟件的負責企業或開發者自行建立、簽發、簽署,而非由受信任的CA完成這些操作。
從底層原理來看,這類自簽名證書採用的公/私鑰密碼對架構與X.509 證書所用的架構相同,但它不具備Sectigo這類受信任第三方CA提供的驗證能力,也就是說,這類證書不會像受信任CA簽發的證書那樣,錨定到根CA或包含中間證書鏈。證書簽發流程缺乏獨立驗證會帶來額外風險,這也是使用自簽名證書的核心問題。自簽名證書用於面向公眾的網站和應用時存在安全隱患,通常僅可在內部開發和測試環境中使用。
自簽名證書類型的用途
儘管自簽名證書存在風險,但它確實有適用場景,也具備一定優勢:無需成本,開發者可輕鬆申請,採用與付費SSL證書相同的方式加密數據,不會過期,且不支援吊銷。不過從整體安全性角度考慮,其風險通常高於收益。
自簽名SSL證書的核心優勢是零成本,任何開發者都可以輕鬆申請。企業可根據自身進度快速部署這類證書,因此常用於內部測試環境,或不對外部用戶開放的受限Web伺服器。此外,企業可以確認,自簽名SSL證書採用與其他付費SSL/TLS證書相同的方式,對相關進出數據進行加密。
企業可以確認,自簽名SSL證書採用與其他付費SSL/TLS證書相同的方式,對相關進出數據進行加密。
自簽名證書不會像CA簽發的證書那樣,在固定周期後過期或需要續期。這一點看似便利,實則是重大隱患之一:這意味著自簽名證書無法針對已發現的漏洞完成安全更新,也無法滿足當下現代企業安全所需的證書敏捷性,因此這種身份驗證方式極少被推薦使用。
此外,自簽名證書不支援證書吊銷。如果證書被遺忘在系統中,或留存於面向惡意攻擊者開放的系統上,所使用的加密機制就會暴露在外部威脅下。對任何機構而言,網絡安全都是重中之重,因此這類證書的風險往往大於收益。
自簽名證書相關的風險與錯誤
自簽名SSL證書存在諸多安全警告和隱患,因此幾乎不推薦使用這類證書。
安全警告彈窗
當用戶訪問使用此類證書的網站(絕不建議在面向公眾的網站上使用這類證書)時,瀏覽器會立即彈出安全警告,顯示「error_self_signed_cert」或「err_cert_authority_invalid」等錯誤,要求用戶確認是否繼續訪問。這些錯誤由用戶的瀏覽器而非網站本身觸發,會加重用戶的安全顧慮,同時增加訪問網站的操作步驟。所有現代Web瀏覽器都不信任自簽名證書,也不會為對應域名顯示掛鎖圖標或HTTPS狀態標識。
這些警告會讓訪客產生恐懼和不安情緒會讓訪客產生恐懼和不安情緒,令訪客覺得網站可能已遭入侵,無法妥善保護他們的數據。訪客往往會避開這類網站,轉而訪問瀏覽時不會彈出安全警告的競品網站。不難理解,當自己信任的網頁瀏覽器提示某個網站可能缺乏足夠的安全防護時,訪客幾乎不願意在該網站上提交任何個人或機密資料。
無證書安全更新與吊銷機制
如前所述,自行簽發的證書因為永久有效,無需續期,這意味著這類證書永遠不會通過更新或調整來修復漏洞,也不會適配最新的安全標準,會使您的環境容易受到黑客與網絡攻擊的威脅。
同理,由於這類證書無法被吊銷,舊證書可能會在工作人員不知情的情況下留存於環境中,這會提升證書被利用的風險。利用自簽名證書的一種常見手段是中間人攻擊,這種攻擊會導致通過TLS/SSL協議傳輸的數據被竊取,使訪客面臨身份被盜用、系統被入侵的風險。
證書鏈中存在自簽名證書錯誤
如果開發者或IT團隊嘗試使用自簽名SSL證書,在使用OpenSSL時,內部環境可能會出現「self-signed certificate in certificate chain」(證書鏈中存在自簽名證書)錯誤。在SSL/TLS通信中,信任是通過層層傳遞的證書鏈建立的,最終錨定到受信任的根證書頒發機構(CA)。當證書鏈中出現自簽名證書時,由於這類證書本身不具備受信任屬性,信任模型會被破壞。
受信任的證書頒發機構(CA)簽發的證書具備可追溯至該CA的信任鏈,可確保證書的合法性。而自簽名證書由出示證書的主體自行創建和簽名,並非由受信任的CA簽發。因此這類證書不會被自動信任,因為沒有第三方機構對主體身份進行驗證。這會帶來安全風險:攻擊者可能出示偽造證書,誘騙客戶端與惡意伺服器建立安全連接。
出現該錯誤時用戶可以選擇繞過,但這個錯誤本身是一項安全防護措施,用於提醒用戶自簽名證書可能帶來的相關風險。
我是否應該使用自簽名SSL證書?
如果選擇使用這類SSL證書,您將完全需要自行承擔相關責任。這意味著您無法獲得受信任證書頒發機構(CA)的背書,也無法應用最新的加密方法來保障數據、設備和應用所需的可靠身份認證與加密能力。
這類證書存在諸多風險,尤其是在面向公眾的場景下風險極高。對於處理健康、稅務、財務記錄等任何私隱信息的網站而言,使用這類證書的風險極大。這類信息泄露不僅會損害品牌信任度,還可能因違反適用的私隱法規產生罰金,給組織造成經濟損失。基於以上原因,絕不建議在面向公眾的網站或應用中使用自簽名證書。
很多人認為在員工門戶、內部通信網站等內部場景部署自簽名證書沒有風險,但事實並非如此。這類證書仍然會觸發瀏覽器和安全警告。由於這些警告可以被忽略,組織通常會要求員工直接跳過警告。考慮到內部網站的安全性是有保障的,這種操作本身直接危害不大,但這可能會在無意中讓員工養成忽略此類安全警告的習慣,這種行為模式可能會提升組織面臨的安全風險,增加漏洞被利用的可能性。
如何創建自簽名證書
儘管自簽名證書因存在安全風險不被推薦使用,但根據您所使用的環境(如Apache或Ubuntu Linux伺服器),配置文件的設置和簽發流程的完成操作並不複雜。
生成私鑰
創建SSL證書需要同時準備私鑰文件和證書簽名請求(CSR)。流程的第一步是向您的證書頒發機構(CA)申請私鑰。私鑰是通過RSA和ECC等算法生成的加密密鑰。其中RSA密鑰是該應用場景下歷史最久的加密體系之一,被眾多平台所支持。
儘管不推薦使用自簽名證書,以下是通過對應命令生成密鑰的代碼示例:
openssl genrsa -aes256 -out servername.pass.key 4096
該命令會提示您輸入密碼。如果證書因任何原因需要吊銷,證書頒發機構(CA)可使用該密碼驗證證書擁有者身份。
生成 CSR
生成完成後,密鑰檔案將以 servername.key 的名稱存放在目前目錄中,用於生成 CSR。以下是生成自簽名證書的證書簽名請求程式碼範例:
openssl req -nodes -new -key servername.key -out servername.csr
接下來,您需要輸入多項資訊,包括機構、機構部門、國家名稱、省份、所在地以及通用名稱。通用名稱一般是對應網站的域名(DNS)或 IP 地址。
輸入上述資訊後,目前目錄下會生成 servername.csr 檔案,與 servername.key 密鑰檔案存放在同一位置。
頒發證書
最後,系統會基於 server.key(密鑰檔案)和 server.csr 檔案生成新的證書(.crt)。因應您對信任鏈的應用場景,生成的證書可以是根證書,也可以是中繼證書。以下是生成新證書的命令範例:
openssl x509 -req -sha256 -days 365 -in servername.csr -signkey servername.key -out servername.crt
與上一步操作類似,生成的 servername.crt 檔案將存放在目前目錄中。
規避風險
不論是部署在內部網絡環境還是公網環境,自簽名證書都會帶來較高風險,因此不建議使用這種方式。
聯絡 Sectigo ,了解更多我們可信賴的 SSL/TLS 證書以及我們的證書生命週期管理平台.