企業級 PKI 架構設計與部署

Enterprise PKI Architecture Design and Deployment

企業級 PKI(Public Key Infrastructure)架構是組織建立安全數位身份驗證和加密通訊的核心基礎設施。本文將深入探討如何設計和部署一套符合企業需求的 PKI 系統,涵蓋架構層級、安全措施、憑證管理和合規要求等關鍵面向。

企業 PKI 概述

為什麼需要企業級 PKI?

企業級 PKI 提供了集中化的憑證管理能力,相較於依賴外部公開 CA,自建 PKI 具有以下優勢:

  • 成本控制:大量內部憑證需求時可大幅降低成本
  • 彈性管理:可依企業政策自訂憑證生命週期和用途
  • 內部整合:與 Active Directory、LDAP 等目錄服務深度整合
  • 合規需求:滿足特定產業法規對憑證管理的要求
  • 安全控制:完全掌控金鑰和憑證的產生與儲存

企業 PKI 應用場景

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
+------------------------------------------------------------------+
|                    企業 PKI 應用場景                              |
+------------------------------------------------------------------+
|                                                                  |
|  +------------------+  +------------------+  +------------------+ |
|  |   內部網站 SSL   |  |   VPN 認證       |  |   WiFi 802.1X    | |
|  |   憑證           |  |   憑證           |  |   憑證           | |
|  +------------------+  +------------------+  +------------------+ |
|                                                                  |
|  +------------------+  +------------------+  +------------------+ |
|  |   程式碼簽章     |  |   電子郵件       |  |   智慧卡登入     | |
|  |   憑證           |  |   S/MIME 憑證    |  |   憑證           | |
|  +------------------+  +------------------+  +------------------+ |
|                                                                  |
|  +------------------+  +------------------+  +------------------+ |
|  |   設備認證       |  |   文件簽章       |  |   API 認證       | |
|  |   憑證           |  |   憑證           |  |   mTLS 憑證      | |
|  +------------------+  +------------------+  +------------------+ |
|                                                                  |
+------------------------------------------------------------------+

PKI 架構層級

階層式 CA 架構設計

企業級 PKI 通常採用多層式架構,以平衡安全性和可用性:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
                        +----------------------+
                        |      Root CA         |
                        |   (離線/氣隙隔離)     |
                        |   有效期: 20-25 年   |
                        +----------+-----------+
                                   |
                    +--------------+--------------+
                    |                             |
          +---------v---------+         +---------v---------+
          |   Policy CA       |         |   Policy CA       |
          |   (選用層級)       |         |   (選用層級)       |
          |   有效期: 10 年   |         |   有效期: 10 年   |
          +---------+---------+         +---------+---------+
                    |                             |
        +-----------+-----------+     +-----------+-----------+
        |                       |     |                       |
+-------v-------+       +-------v-------+             +-------v-------+
|  Issuing CA   |       |  Issuing CA   |             |  Issuing CA   |
|  (線上發證)    |       |  (線上發證)    |             |  (線上發證)    |
|  有效期: 5 年 |       |  有效期: 5 年 |             |  有效期: 5 年 |
+---------------+       +---------------+             +---------------+
      |                       |                             |
      v                       v                             v
  使用者憑證              伺服器憑證                    設備憑證

兩層式 vs 三層式架構

特性兩層式架構三層式架構
複雜度較低較高
適用規模中小型企業大型企業
彈性一般較高
管理成本較低較高
安全性良好最佳

離線 Root CA 設計

離線 Root CA 的重要性

Root CA 是整個 PKI 信任鏈的根基,一旦 Root CA 的私鑰洩露,整個 PKI 架構將完全失效。因此,Root CA 必須採用離線(Air-gapped)設計。

離線 Root CA 建置要點

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
+------------------------------------------------------------------+
|                     離線 Root CA 環境                             |
+------------------------------------------------------------------+
|                                                                  |
|  +------------------+     +------------------+                   |
|  |   專用實體主機    |     |   HSM 設備       |                   |
|  |   無網路連接      |     |   FIPS 140-2    |                   |
|  |   全碟加密        |     |   Level 3       |                   |
|  +------------------+     +------------------+                   |
|                                                                  |
|  +------------------+     +------------------+                   |
|  |   獨立電源       |     |   實體保險箱     |                   |
|  |   不斷電系統     |     |   雙人控制       |                   |
|  +------------------+     +------------------+                   |
|                                                                  |
|  安全措施:                                                       |
|  - 安裝於受控制的機房或保險庫                                     |
|  - 啟用全碟加密(如 LUKS、BitLocker)                            |
|  - 使用 HSM 保護私鑰                                             |
|  - 實施雙人控制(Dual Control)政策                               |
|  - 所有操作需有詳細稽核紀錄                                       |
|                                                                  |
+------------------------------------------------------------------+

Root CA 操作程序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 1. 準備離線環境
# 確保主機完全斷開網路連接

# 2. 產生 Root CA 金鑰對(使用 HSM)
pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so \
    --login --keypairgen --key-type rsa:4096 \
    --label "RootCA-Key" --id 01

# 3. 產生 Root CA 自簽憑證
openssl req -new -x509 -days 7300 \
    -engine pkcs11 -keyform engine \
    -key "pkcs11:object=RootCA-Key;type=private" \
    -sha512 -out rootCA.crt \
    -subj "/C=TW/O=Example Corporation/CN=Example Root CA"

# 4. 匯出 Root CA 憑證至安全媒體
# 使用加密的 USB 隨身碟傳輸憑證

線上 Issuing CA 設計

Issuing CA 架構考量

線上 Issuing CA 是直接面對憑證申請的 CA,需要在安全性和可用性之間取得平衡:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
+------------------------------------------------------------------+
|                    線上 Issuing CA 架構                           |
+------------------------------------------------------------------+
|                                                                  |
|     +----------------+          +----------------+               |
|     |  Issuing CA 1  |          |  Issuing CA 2  |               |
|     |  (Active)      |          |  (Standby)     |               |
|     +-------+--------+          +-------+--------+               |
|             |                           |                        |
|             +-----------+---------------+                        |
|                         |                                        |
|                  +------v------+                                 |
|                  |   HSM Pool  |                                 |
|                  |  (網路 HSM) |                                 |
|                  +-------------+                                 |
|                                                                  |
|     +----------------+          +----------------+               |
|     |  OCSP 回應器   |          |  CRL 發布點    |               |
|     |  (Responder)   |          | (Distribution) |               |
|     +----------------+          +----------------+               |
|                                                                  |
+------------------------------------------------------------------+

Issuing CA 高可用性設計

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 設定憑證範本
# Microsoft AD CS 範例

# 1. 建立網頁伺服器憑證範本
certutil -installdefaulttemplates

# 2. 設定憑證自動註冊
# 透過群組原則設定自動註冊

# 3. 設定 CRL 發布排程
certutil -setreg ca\CRLPeriodUnits 7
certutil -setreg ca\CRLPeriod "Days"
certutil -setreg ca\CRLDeltaPeriodUnits 1
certutil -setreg ca\CRLDeltaPeriod "Days"

憑證政策與實務聲明

CP(Certificate Policy)與 CPS(Certification Practice Statement)

企業 PKI 需要制定完整的憑證政策文件:

文件內容目的
CP憑證政策定義憑證用途、信任層級、使用者義務
CPS認證實務聲明說明 CA 如何實施 CP 的技術細節

憑證政策 OID 規劃

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
企業 OID 架構範例:

1.3.6.1.4.1.{企業ID}
    └── 1 (PKI)
        ├── 1 (Certificate Policies)
        │   ├── 1 (高保證憑證)
        │   ├── 2 (中保證憑證)
        │   └── 3 (低保證憑證)
        └── 2 (Certificate Extensions)
            ├── 1 (自訂擴充 1)
            └── 2 (自訂擴充 2)

憑證用途定義

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
+------------------------------------------------------------------+
|                      憑證用途矩陣                                 |
+------------------------------------------------------------------+
| 憑證類型         | 數位簽章 | 金鑰加密 | 資料加密 | 不可否認 |
+------------------------------------------------------------------+
| 使用者簽章憑證   |    V     |          |          |    V     |
| 使用者加密憑證   |          |    V     |    V     |          |
| 伺服器 SSL 憑證  |    V     |    V     |          |          |
| 程式碼簽章憑證   |    V     |          |          |    V     |
| 設備認證憑證     |    V     |    V     |          |          |
+------------------------------------------------------------------+

金鑰保護(HSM)

HSM 選型考量

硬體安全模組(HSM)是保護 CA 私鑰的核心設備:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
+------------------------------------------------------------------+
|                      HSM 部署架構                                 |
+------------------------------------------------------------------+
|                                                                  |
|  +-----------------------+      +-----------------------+        |
|  |    Root CA HSM        |      |   Issuing CA HSM      |        |
|  | (離線、FIPS 140-2 L3) |      | (線上、網路型)        |        |
|  +-----------------------+      +-----------------------+        |
|                                                                  |
|  HSM 類型選擇:                                                   |
|  +------------------+  +------------------+  +------------------+ |
|  |   PCI-e 介面卡   |  |   網路 HSM       |  |   USB Token      | |
|  |   (單機部署)     |  |   (叢集部署)     |  |   (小型環境)     | |
|  +------------------+  +------------------+  +------------------+ |
|                                                                  |
|  主要廠商:                                                       |
|  - Thales (nShield, Luna)                                        |
|  - Entrust (nShield)                                             |
|  - Utimaco                                                       |
|  - AWS CloudHSM (雲端)                                           |
|  - Azure Dedicated HSM (雲端)                                    |
|                                                                  |
+------------------------------------------------------------------+

HSM 金鑰管理最佳實務

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 使用 PKCS#11 介面操作 HSM

# 1. 初始化 HSM 分割區
pkcs11-tool --module /path/to/hsm/library.so \
    --init-token --label "PKI-Partition" \
    --so-pin <security-officer-pin>

# 2. 產生 CA 金鑰對
pkcs11-tool --module /path/to/hsm/library.so \
    --login --keypairgen \
    --key-type rsa:4096 \
    --label "IssuingCA-2024" \
    --id 01

# 3. 設定金鑰屬性
# 確保金鑰不可匯出
pkcs11-tool --module /path/to/hsm/library.so \
    --login --set-attribute \
    --type privkey --id 01 \
    --extractable false --sensitive true

憑證生命週期管理

憑證生命週期各階段

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
+------------------------------------------------------------------+
|                    憑證生命週期管理                               |
+------------------------------------------------------------------+
|                                                                  |
|  1. 申請階段          2. 核發階段          3. 使用階段           |
|  +----------+        +----------+        +----------+            |
|  | 身份驗證 |  --->  | 憑證簽發 |  --->  | 部署使用 |            |
|  | CSR 產生 |        | 品質檢查 |        | 監控到期 |            |
|  +----------+        +----------+        +----------+            |
|                                                                  |
|  4. 更新階段          5. 撤銷階段          6. 歸檔階段           |
|  +----------+        +----------+        +----------+            |
|  | 到期提醒 |  --->  | 撤銷處理 |  --->  | 金鑰歸檔 |            |
|  | 重新申請 |        | CRL 發布 |        | 安全銷毀 |            |
|  +----------+        +----------+        +----------+            |
|                                                                  |
+------------------------------------------------------------------+

憑證自動化管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 使用 certbot 或 ACME 協定進行內部憑證自動更新
# 內部 ACME 伺服器範例:step-ca

# 1. 安裝 step-ca
wget https://dl.step.sm/gh-release/certificates/latest/step-ca_linux_amd64.tar.gz
tar -xzf step-ca_linux_amd64.tar.gz

# 2. 初始化 CA
step ca init --name="Internal CA" \
    --provisioner="admin" \
    --dns="ca.internal.example.com" \
    --address=":8443"

# 3. 設定 ACME 供應者
step ca provisioner add acme --type ACME

# 4. 用戶端自動更新
step ca certificate "server.example.com" server.crt server.key \
    --provisioner acme \
    --san server.example.com

憑證到期監控

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#!/bin/bash
# 憑證到期監控腳本

CERT_DIR="/etc/pki/certs"
WARN_DAYS=30

for cert in $CERT_DIR/*.crt; do
    expiry=$(openssl x509 -in "$cert" -enddate -noout | cut -d= -f2)
    expiry_epoch=$(date -d "$expiry" +%s)
    current_epoch=$(date +%s)
    days_left=$(( (expiry_epoch - current_epoch) / 86400 ))

    if [ $days_left -lt $WARN_DAYS ]; then
        echo "警告: $cert 將在 $days_left 天後到期"
        # 發送告警通知
    fi
done

災難復原規劃

備份策略

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
+------------------------------------------------------------------+
|                      PKI 備份策略                                 |
+------------------------------------------------------------------+
|                                                                  |
|  備份類型              頻率           保留期限    儲存位置        |
|  +------------------------------------------------------------------+
|  | Root CA 備份       | 每次變更後   | 永久      | 異地保險箱    |
|  | Issuing CA 備份    | 每日         | 90 天     | 異地備份      |
|  | 憑證資料庫         | 每日         | 1 年      | 本地+異地     |
|  | 設定檔備份         | 每次變更後   | 版本控制  | Git 儲存庫    |
|  | CRL/OCSP 資料      | 每次更新後   | 30 天     | 多點複製      |
|  +------------------------------------------------------------------+
|                                                                  |
+------------------------------------------------------------------+

金鑰託管與復原

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 金鑰分割 (Key Ceremony) 程序

# 1. 使用 Shamir's Secret Sharing 分割金鑰
# 例如:5 份中需要 3 份才能復原

# 使用 ssss (Shamir's Secret Sharing Scheme)
ssss-split -t 3 -n 5 -w token < master-key.txt

# 2. 將各份金鑰分發給不同的金鑰保管人
# 每位保管人負責保管一份,並儲存於不同地點

# 3. 復原程序
ssss-combine -t 3 > recovered-key.txt
# 輸入 3 份金鑰片段即可復原

災難復原程序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
+------------------------------------------------------------------+
|                    災難復原程序                                   |
+------------------------------------------------------------------+
|                                                                  |
|  階段 1: 評估與通報 (0-2 小時)                                    |
|  - 確認災難範圍                                                   |
|  - 啟動事件回應團隊                                               |
|  - 通知相關利害關係人                                             |
|                                                                  |
|  階段 2: 緊急處置 (2-4 小時)                                      |
|  - 啟用備援 Issuing CA                                           |
|  - 確保 CRL/OCSP 服務持續運作                                     |
|  - 暫停受影響服務                                                 |
|                                                                  |
|  階段 3: 系統復原 (4-24 小時)                                     |
|  - 從備份還原 CA 資料庫                                           |
|  - 驗證憑證資料完整性                                             |
|  - 重新建立與 HSM 的連接                                          |
|                                                                  |
|  階段 4: 服務恢復 (24-48 小時)                                    |
|  - 完整測試 CA 功能                                               |
|  - 恢復正常憑證簽發服務                                           |
|  - 更新文件與報告                                                 |
|                                                                  |
+------------------------------------------------------------------+

稽核與合規

稽核日誌管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
+------------------------------------------------------------------+
|                      稽核日誌要求                                 |
+------------------------------------------------------------------+
|                                                                  |
|  必須記錄的事件:                                                 |
|  +------------------------------------------------------------------+
|  | 事件類型                    | 記錄內容                        |
|  +------------------------------------------------------------------+
|  | CA 啟動/停止                | 時間戳記、操作者、原因          |
|  | 憑證簽發                    | 序號、主體、有效期、申請者      |
|  | 憑證撤銷                    | 序號、撤銷原因、撤銷時間        |
|  | CRL 產生                    | 發布時間、憑證數量              |
|  | 金鑰操作                    | 產生、匯入、匯出、銷毀          |
|  | 管理存取                    | 登入、登出、權限變更            |
|  | 設定變更                    | 變更內容、變更前後值            |
|  +------------------------------------------------------------------+
|                                                                  |
+------------------------------------------------------------------+

合規標準對應

標準適用範圍主要要求
WebTrust for CA公開信任 CA稽核標準、安全控制
ETSI EN 319 411歐盟 eIDAS電子簽章合規
PCI DSS支付產業金鑰管理、存取控制
SOC 2 Type II服務組織安全性、可用性控制
ISO 27001資訊安全ISMS 管理系統

定期稽核檢查清單

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
+------------------------------------------------------------------+
|                    PKI 稽核檢查清單                               |
+------------------------------------------------------------------+
|                                                                  |
|  [ ] 金鑰管理                                                     |
|      [ ] HSM 健康狀態檢查                                         |
|      [ ] 金鑰存取權限審核                                         |
|      [ ] 金鑰輪換排程確認                                         |
|                                                                  |
|  [ ] 憑證管理                                                     |
|      [ ] 過期憑證清理                                             |
|      [ ] 憑證使用率分析                                           |
|      [ ] 異常憑證申請審查                                         |
|                                                                  |
|  [ ] 安全控制                                                     |
|      [ ] 存取日誌審核                                             |
|      [ ] 權限最小化確認                                           |
|      [ ] 弱點掃描結果審查                                         |
|                                                                  |
|  [ ] 營運持續                                                     |
|      [ ] 備份完整性驗證                                           |
|      [ ] 災難復原演練                                             |
|      [ ] 文件更新狀態                                             |
|                                                                  |
+------------------------------------------------------------------+

總結

建置企業級 PKI 架構是一項需要周詳規劃的重要工程。成功的 PKI 部署需要考量以下關鍵要素:

  • 架構設計:根據組織規模選擇適當的 CA 層級架構
  • 安全措施:Root CA 離線保護、HSM 金鑰保護
  • 政策制定:完整的 CP/CPS 文件和憑證用途定義
  • 生命週期管理:自動化憑證管理和到期監控
  • 災難復原:完善的備份策略和復原程序
  • 合規稽核:符合產業標準的稽核機制

透過本文的架構設計指南,組織可以建立一套安全、可靠且符合合規要求的企業級 PKI 系統,為數位轉型提供堅實的安全基礎。

參考資料

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy