專案定位與價值
EJBCA (Enterprise Java Beans Certificate Authority) 是功能完整、生產就緒的開源 CA 系統,基於 J2EE 1.3 (EJB 2.0) 規範構建。對國內 PKI 技術研究、CA 系統自建、憑證生命週期管理教學具有極高參考價值。LGPL 授權,支援獨立部署或整合至任意 J2EE 應用。
核心功能矩陣:企業級 CA 的完整能力清單
| 功能域 | 核心特性 | 技術細節 |
| CA 架構 | 多級 CA 體系 | 單實例支援多個 Root/Sub CA,完整 PKI 階層 |
| 靈活元件架構 | 基於 EJB 2.0,模組化部署、擴充、替換 |
| 獨立/整合雙模式 | 獨立運行或嵌入 J2EE 應用 (EJB 呼叫) |
| 憑證生命週期 | 個人/批次申請 | Web 介面、命令列、開放 API、SCEP 協議 |
| 多格式匯出 | PKCS#12、JKS、PEM (伺服器/客戶端憑證) |
| 瀏覽器直接註冊 | 支援 Netscape/Mozilla/IE 金鑰生成與申請 |
| RA 代理註冊 | 註冊機構代理新增用戶、Email 通知、密碼生成 |
| 硬體安全模組 (HSM) | PKCS#11 整合 | 支援智慧卡、HSM、USB Token 簽發簽名 |
| 私鑰備份恢復 | Key Recovery Module,指定用戶/憑證私鑰託管 |
| 簽發系統整合 | 元件化發布器,支援多種簽發硬體 |
| 標準合規 | X.509 v3 / PKIX (RFC 3280) | 完整擴充欄位支援:KeyUsage、ExtendedKeyUsage、CRLDistributionPoints、AuthorityInfoAccess |
| CRL 完整支援 | 依 RFC 3280 生成、URL 分發點、SQL 資料庫儲存 |
| OCSP 完整支援 | 含 AIA (Authority Information Access) 擴充,即時撤銷查詢 |
| 多發布器架構 | LDAP 發布憑證/CRL、可擴充自定義發布目標 |
| 管理與操作 | Web 管理介面 | 高強度鑑別演算法、角色權限控管 (RBAC) |
| 命令列/腳本 | 自動化部署、批次操作、CI/CD 整合 |
| 多租戶管理 | 用戶組、權限矩陣、委派管理 |
| 審計日誌 | 完整操作審計軌跡 |
| 資料持久化 | 任意 SQL 資料庫 | 透過 J2EE 資料源 (DataSource) 統一管理 |
| 憑證/CRL 儲存 | 資料庫儲存,支援叢集高可用 |
| 備份恢復 | 標準資料庫備份工具適用 |
技術架構深度解析
分層架構 (J2EE 標準)
┌─────────────────────────────────────┐
│ Presentation Layer │
│ Web Admin (JSP/Servlet) │
│ Command Line Tools │
│ Web Services / SCEP / API │
└──────────────┬──────────────────────┘
│
┌──────────────▼──────────────────────┐
│ Business Logic Layer (EJB) │
│ ├─ CA Session Beans (核心邏輯) │
│ ├─ RA Session Beans (註冊代理) │
│ ├─ Certificate Management Beans │
│ ├─ CRL/OCSP Beans │
│ ├─ Key Recovery Beans │
│ └─ Publisher Beans (發布器) │
└──────────────┬──────────────────────┘
│
┌──────────────▼──────────────────────┐
│ Persistence Layer (JDBC/JPA) │
│ SQL Database (via DataSource) │
│ HSM / PKCS#11 (硬體金鑰存儲) │
└──────────────┬──────────────────────┘
│
┌──────────────▼──────────────────────┐
│ J2EE Container Services │
│ Transaction (JTA) │
│ Security (JAAS) │
│ Naming (JNDI) │
│ Messaging (JMS) │
└─────────────────────────────────────┘
核心 EJB 元件職責
| EJB 元件 | 類型 | 核心職責 |
| CAAdminSessionBean | Stateless | CA 建立/配置/啟用/停用、簽發策略管理 |
| CAInfoSessionBean | Stateless | CA 狀態查詢、憑證鏈驗證、健康檢查 |
| EndEntityManagementSessionBean | Stateless | 終端實體 (用戶/裝置) 增刪改查、憑證申請處理 |
| CertificateStoreSessionBean | Stateless | 憑證儲存/查詢/匯出/吊銷、CRL 生成 |
| OCSPManagementSessionBean | Stateless | OCSP 回應器配置、簽名證書管理、AIA 擴充 |
| KeyRecoverySessionBean | Stateless | 私鑰託管/恢復授權、分片備份策略 |
| PublisherSessionBean | Stateless | 發布器管理 (LDAP/檔案/HTTP/自定義) |
部署平台與相容性
- 開發/測試平台:Linux、Windows 2000
- 生產支援平台:任何支援 J2EE 1.3+ 的應用伺服器 (JBoss、WebLogic、WebSphere、GlassFish、Apusic 等)
- 資料庫:任何 JDBC 相容資料庫 (PostgreSQL、MySQL、Oracle、DB2、Hypersonic 等)
- HSM 廠商:支援 PKCS#11 的主流 HSM (nCipher、SafeNet、Utimaco、Thales 等)
- LDAP 目錄:OpenLDAP、Active Directory、Sun Directory Server、Novell eDirectory
與商業 CA 產品對比 (參考)
| 維度 | EJBCA 3.0 | 商業 CA (如 Venafi、Keyfactor、PrimeKey 商業版) |
| 授權成本 | 免費 (LGPL) | 高昂授權費 + 維護費 |
| 功能完整度 | 核心功能 100% 覆蓋 | 含進階功能 (CT Log、自動化憑證生命週期、雲原生、合規報表) |
| 專業支援 | 社群/第三方付費支援 | 廠商 SLA 保證、專家服務 |
| 合規認證 | WebTrust/ETSI 需自行審計 | 通常預先通過 WebTrust、ETSI EN 319 411 |
| 雲原生/容器化 | 需自行遷移 (EJB 2.x 架構) | 原生 Kubernetes、微服務架構 |
| 適用場景 | 內部 PKI、教學研究、中小企業、預算受限專案 | 公信 CA、大型企業、金融監管、高合規要求 |
遷移與現代化路徑建議
- 短期:在 JBoss 7+/WildFly 上運行 EJBCA 3/4/6 系列 (EJB 2.x 相容)
- 中期:遷移至 EJBCA 7+ (PrimeKey 維護),採用 REST API、VA/RA 分離架構、支援 Docker/Kubernetes
- 長期:評估 Cloud PKI (AWS ACM、Azure Key Vault、Google CAS)、Venafi、Smallstep 等現代化方案
- 學習價值:EJBCA 核心代碼展示了「EJB 實現 PKI 領域邏輯、JTA 管理簽發事務、JAAS 保護管理介面、JMS 驅動非同步發布」的教科書級架構
總結
EJBCA 3.0 作為開源 CA 系統的標桿,以J2EE 標準架構實現企業級 PKI 完整功能,證明了「開源免費 ≠ 功能殘缺」。其模組化 EJB 設計、標準協議支援 (SCEP/OCSP/CMP/LDAP)、HSM 整合、多級 CA 體系、彈性發布機制,構成了極具參考價值的 PKI 參考實作。對於「自建內部 CA、PKI 技術教學、CA 系統原型驗證、預算受限的憑證管理需求」,EJBCA 是首選方案。隨著 EJBCA 7+ 向 REST/微服務/雲原生演進,其核心領域邏輯將繼續在新架構中發揮價值。