簡介
公開密鑰認證(英語:Public key certificate),又稱
公開密鑰證書、
公鑰證書、
數字證書(digital certificate)、
數字認證、
身份證書(identity certificate)、
電子證書或
安全證書,是用於
公開密鑰基礎建設的電子檔案,用來證明
公開密鑰擁有者的
身份。此檔案包含了公鑰信息、擁有者身份信息(主體)、以及數字證書認證機構(發行者)對這份檔案的
數字簽名,以保證這個檔案的整體內容正確無誤。擁有者憑著此檔案,可向計算機系統或其他用戶表明身份,從而對方獲得信任並授權訪問或使用某些敏感的計算機服務。計算機系統或其他用戶可以透過一定的程式核實證書上的內容,包括證書有否過期、數字簽名是否有效,如果你信任簽發的機構,就可以信任證書上的密鑰,憑公鑰加密與擁有者進行
可靠的通信。
數字證書的其中一個最主要好處是在證認擁有者身份期間,擁有者的敏感個人數據(如出生日期、身份證號碼等)並不會傳輸至索取數據者的計算機系統上。透過這種數據交換模式,擁有者既可證實自己的身份,亦不用過度披露個人數據,對保障計算機服務訪問雙方皆有好處。
證書種類
自簽證書
在用於小範圍測試等目的的時候,用戶也可以自己生成數字證書,但沒有任何可信賴的人簽名,這種自簽名證書通常不會被廣泛信任,使用時可能會遇到計算機軟體的安全警告。
根證書
根證書也是一種自簽證書,但是獲得廣泛認可,通常已預先安裝在各種軟體(包括
作業系統、
瀏覽器、電郵軟體等),作為
信任鏈的起點,來自於公認可靠的政府機關(如
香港郵政)、軟體公司(如Google、Let's Encrypt)等,與各大軟體商透過嚴謹的核認程式才在不同的軟體廣泛部署。由於部署程式複雜費時,需要行政人員的授權及機構法人身份的核認,一張根證書有效期可能長達十年以上。在某些企業,也可能會在內部計算機自行安裝企業自簽的根證書,以支持
內部網的企業級軟體;但是這些證書可能未被廣泛認可,只在企業內部適用。
中介證書
認證機構的一個重要任務就是為客戶簽發證書,雖然廣泛認可的認證機構都已擁有根證書,相對應的私鑰可用以簽署其他證書,但因為
密鑰管理和行政考慮,一般會先行簽發中介證書,才為客戶作數字簽署。中介證書的有效期會較根證書為短,並可能對不同類別的客戶有不同的中介證書作分工。
授權證書
主條目:授權證書
授權證書又稱屬性證書,本身沒有公鑰,必須依附在一張有效的數字證書上才有意義,其用處是賦予相關擁有人簽發終端實體證書的權力;某些情況下,如果只在短期內授予證書機構簽發權力,便可以不改變(縮短)該機構本身持有的證書的有效期。這種情況,類似於某人持有長達十年期的護照,而只透過簽發短期入境簽證,來個別賦予護照持有人額外權力。
終端實體證書
其他不會用作簽發其他證書的,都可稱為終端實體證書,在實際的軟體中部署,以便創建加密通道時套用。
TLS伺服器證書
伺服器通常以域名形式在網際網路上提供服務,伺服器證書上
主體的
通用名稱就會是相應的域名,相關機構名稱則寫在
組織或
單位一欄上。伺服器證書(包括公鑰)和私鑰會安裝於伺服器(例如
Apache),等待客戶端連線時協定加密細節。客戶端的軟體(如瀏覽器)會運行認證路徑驗證算法以確保全全,如果未能肯定加密通道是否安全(例如證書上的主體名稱不對應網站域名、伺服器使用了自簽證書、或加密算法不夠強),可能會警告用戶。
如果伺服器證書上主體的通用名稱(或主體別名)一欄以通配符前綴,則該證書可以用於旗下的所有子域名,特別適合較具規模、或設有多個子網站的機構一次過申領,套用於多個伺服器上;即使未來創建新的
子域名,也可以套用。但通配符不可用於擴展認證證書上。
TLS客戶端證書
有時候,某些TLS伺服器可能會在創建加密通道時,要求客戶端提供客戶端證書,以驗證
身份及控制訪問許可權。客戶端證書包含信箱地址或個人姓名,而不是主機名。但客戶端證書比較不常見,因為考慮到技術門檻及成本因素,通常都是由服務提供者驗證客戶身份,而不是依賴第三方認證機構。通常,需要使用到客戶端證書的服務都是內部網的企業級軟體,他們會設立自己的內部根證書,由企業的技術人員在企業內部的計算機安裝相關客戶端證書以便使用。在公開的網際網路,大多數網站都是使用登錄密碼和
Cookie來驗證用戶,而不是客戶端證書。
在台灣,中華民國內政部證書管理中心根據電子簽名法負責簽發自然人證書,讓國民在網上使用各種政府服務。
客戶端證書在RPC系統中更常見,用於驗證連線設備的許可授權。
內容欄位
一般遵從
X.509格式規範的證書,會有以下的內容,它們以欄位的方式表示:
發行者:以數字簽名形式簽署此證書的數字證書認證機構
有效期開始時間:此證書的有效開始時間,在此前該證書並未生效
有效期結束時間:此證書的有效結束時間,在此後該證書作廢
公開密鑰用途:指定證書上公鑰的用途,例如數字簽名、伺服器驗證、客戶端驗證等
公開密鑰指紋