Domino 憑證管理入門:用 CertMgr 與 certstore.nsf 取代滿地的 kyr keyring 檔

Domino 憑證管理入門:用 CertMgr 與 certstore.nsf 取代滿地的 kyr keyring 檔

2026.09.02 約 1,572 字

一個 Domino 管理員都認得的畫面:某台 web server 的 TLS 憑證半夜到期,網站掛掉,你連進去,發現憑證躺在一個 keyfile.kyr 檔裡——那台 server 專屬的 keyring 檔,配一個 .sth 密碼隱藏檔,用 kyrtool 或更早的 Server Certificate Admin(certsrv.nsf)產生。要換一張憑證,得在那台機器上重跑一輪、把新的 kyr 佈署過去、重啟 HTTP task。多台 server 就是把這套動作乘以台數。憑證快到期沒人盯,就等著半夜出事。

這種沒有 Certificate Manager 的手動管理方式官方到現在都還留著文件、也還能用,但它就是散、就是靠人記得。從 Domino 12 起有一套把這件事收攏起來的機制,這篇(certstore 系列第一篇)就從「它是什麼、怎麼立起來」講起。


重點摘要

  • 一個 task + 一個資料庫:官方說得很直接——「HCL Domino 12 introduces a new server task, Certificate Manager (CertMgr), that works with a new database, Certificate Store (certstore.nsf) to manage TLS certificates in your Domino environment」。憑證不再散在磁碟的 kyr 檔,改由 certstore.nsf 統一管。
  • certstore.nsf 自己會生:不必手動從 template 建,跑 load certmgr 這個 task 第一次執行時就會建出這個資料庫。
  • 憑證存在 TLS Credentials 文件裡:官方——「certificates generated through Certificate Manager are securely stored directly in TLS Credentials documents in certstore.nsf rather than in keyring files on disk」。
  • 私鑰有加密、庫有 ACL:「certstore.nsf is protected by the database ACL and private keys are protected by 256 bit AES encryption」。還能指定哪幾台 server 讀得到私鑰。
  • 憑證怎麼進來有三條路:Let’s Encrypt/ACME 自動申請、內建 micro CA、以及手動匯入第三方 CA 的憑證。前兩者是系列下一篇的主題,這篇先把手動匯入走完。

certstore.nsf 到底是什麼

先把角色分清楚。Certificate Manager(CertMgr)是一個 server taskcertstore.nsf(Certificate Store)是它操作的資料庫。官方對這個資料庫的定義一句話:「This database provides the interface to request, store, and distribute certificates in a secure way.」——請求、儲存、發佈憑證,都在這一個地方。

跟 kyr 時代最大的差別在「發佈」兩個字。以前一張憑證綁死在一台 server 的一個 keyring 檔;現在憑證存在 certstore.nsf 這個 NSF 裡,而 NSF 是會抄本、會複寫的——同一份憑證可以讓多台 server 共用,你只在一個地方維護。要換憑證,改一份文件,不必爬進每台機器。

把 certstore.nsf 立起來

好消息是幾乎不用「建」。設定憑證庫的官方步驟第一步就是:「Create a certificate store on the server using the load certmgr console command. This starts the Certificate Manager task, which will create the certstore.nsf database.」——在 server console 打 load certmgr,task 一起來就把 certstore.nsf 生出來。

要它每次開機都在,把 CertMgr 加進 notes.ini 的 ServerTasks,或用一份 Program document 排它執行。之後開啟 certstore.nsf,裡面就是你管憑證的介面:一份 Certificate Authority 文件(Basics 頁)、若干信任根憑證、以及一筆一筆的 TLS Credentials 文件。設好之後重啟 Domino server 讓 HTTP task 接手新的憑證來源。

TLS Credentials 文件:憑證的存放單位

certstore.nsf 裡真正裝一張憑證的東西,叫 TLS Credentials 文件。一份 TLS Credential 不只是「一張憑證」,它是一組綁在一起的東西:這張憑證涵蓋哪些 host name(單一 IP 對到多個 Internet Site 時,還要各自填 SAN——Subject Alternative Name)、哪幾台 server 讀得到它的私鑰、憑證由誰簽發(provider),以及金鑰對本身與憑證鏈。

「哪幾台 server 讀得到私鑰」這個欄位(Servers with access)是 certstore 安全模型的核心:私鑰是針對你指定的那些 server 加密的,只有它們解得開、用得了這張憑證。這也是為什麼同一份 NSF 可以放心複寫到多台機器——沒被授權的 server 就算拿到文件也讀不到私鑰。

把既有的第三方 CA 憑證匯入

如果你手上已經有一張商業 CA(DigiCert、Sectigo 之類)簽的憑證,或公司規定憑證一定得走內部 CA,那就走手動匯入這條路。步驟是在 certstore.nsf 裡:

  1. TLS Credentials 檢視,按 Add TLS Credentials
  2. Host names 欄填這台對外 server 的 host name;一個 IP 透過 Internet Sites 對到多個 web host 時,替每個 host 填上 SAN。
  3. Servers with access 欄選要讓哪幾台 Domino server 能讀這張憑證的私鑰。
  4. Certificate Provider 欄選 Manual
  5. Submit Request,CertMgr 產生金鑰對與 CSR。當 Status 變成 Waiting,把 Certificate signing request (CSR) 欄的內容複製出來,送去給你的 CA。
  6. CA 簽好、把憑證發回來之後,把收到的憑證貼進這份文件的 Certificates & Roots (PEM) 欄,再按一次 Submit Request 收尾。

進出的憑證格式是 PEM(Base64 編碼的 DER)。整個過程金鑰對是 CertMgr 在庫裡產生的,私鑰從頭到尾沒落地成一個裸檔——這正是相對 kyr 時代的關鍵差別。

安全模型:ACL + AES-256,不是磁碟上的裸檔

把安全性收在一段講:kyr 時代,私鑰是磁碟上一個 .kyr 檔,保護它的是檔案系統權限加一個 .sth 密碼隱藏檔——備份、搬機、誤設權限都可能讓私鑰外流。certstore 把這件事換成兩層 Domino 原生的保護:整個 certstore.nsf資料庫 ACL 控管誰能開,裡面每把私鑰再用 256-bit AES 加密、而且是綁定「Servers with access」那批 server 才解得開。等於私鑰不再是一個可以整個拷走的檔案,而是一份受 ACL 與加密雙重保護、還挑得了讀取對象的資料。

小結

certstore 的模型講穿了就一句:把散在每台 server 磁碟上的 kyr keyring 檔,收攏成一個 ACL 保護、私鑰 AES 加密的 certstore.nsf,由 CertMgr task 統一管理與發佈。立起來只要 load certmgr;一張憑證是一份 TLS Credentials 文件;既有的第三方憑證走 Manual provider 匯入。

這篇把「是什麼、怎麼立、怎麼手動放憑證」走完了。真正讓很多人換到 certstore 的理由,其實是它能自動跟 Let’s Encrypt 用 ACME 協定申請與續期憑證,再也不用半夜爬起來換憑證——那是本系列 Part 2:CertMgr + ACME 自動憑證的主題。至於 certstore 裡的憑證怎麼被 NotesHTTPRequest、Domino REST API 這些對外連線實際使用、以及 Domino 14.5 把信任根從 cacerts.pem 搬進 Domino Directory 的變化,留給 Part 3:certstore 的開發者視角

參考來源

← 回到文章列表