#Security
標記為 #Security · 16 篇文章
- 把 CA 放進 certstore 就到處都信任了?DRAPI 對外其實走 JVM truststore、不是 certstore
把憑證放進 certstore.nsf 之後,開發者還有兩個實際問題:我的服務(尤其 Domino REST API)怎麼直接用它發 HTTPS?還有——我自己的程式對外呼叫 HTTPS 時,是不是也靠 certstore 驗對方憑證?答案會戳破一個常見誤會:同一台 server 上,憑證的信任其實分散在三個不同的地方。這篇(certstore 系列第三篇)以在 Domino 12.0.2 上的親手實測,講 DRAPI 的 keepconfig.d TLSCertStore 設定、certstore trusted roots 的真正用途,並把 certstore/Domino Directory/JVM cacerts 三個信任庫一次分清楚。
2026.09.04 - Domino CertMgr 串接 Let's Encrypt:用 ACME 協定自動申請與續期 TLS 憑證
手動匯入憑證還是得每 90 天換一次、還是會忘。這篇(certstore 系列第二篇)講 CertMgr 真正的殺手級功能:透過 ACME 協定跟 Let's Encrypt 自動申請、配置、續期免費且受信任的 TLS 憑證。從兩個 ACME account profile(Staging/Production)與 Global Settings 設起,走一遍申請流程與 submit 後 CertMgr 自動做完的六件事,講清楚 HTTP-01 與 DNS-01 challenge 的差別,最後點出 micro CA 只該用在測試、ECDSA 與 key rollover。
2026.09.03 - Domino 憑證管理入門:用 CertMgr 與 certstore.nsf 取代滿地的 kyr keyring 檔
從 Domino 12 起,TLS 憑證不再是散在每台 server 磁碟上的 .kyr keyring 檔——一個 CertMgr server task 加一個 certstore.nsf 資料庫就統一管起來:憑證存在 TLS Credentials 文件裡、私鑰用 256-bit AES 加密、由 ACL 保護、還能挑哪幾台 server 讀得到。這篇是 certstore 系列第一篇,講清楚這個模型、怎麼把 certstore.nsf 立起來、TLS Credentials 文件的組成,以及把既有第三方 CA 憑證匯入的完整步驟。
2026.09.02 - Domino REST API 上線前:安全模型、rich text 單向、CORS 與 admin port
系列收尾。你已經會認證、開 scope、CRUD、查詢了;把它交給真實使用者之前,Domino 開發者最該問兩件事:它會不會繞過我的 Readers 欄位安全?以及上正式環境會踩到什麼。答案:DRAPI 是分層安全(JWT + scope + 底層 Domino 的 ACL/Readers 照算),不會漏;但有幾個很實在的限制——rich text 只能單向轉出、沒配置的欄位碰不到、同名 form/view 選哪個沒保證——加上 CORS、port 這些上線前要收的口。DRAPI 系列第六篇(完結)。
2026.08.24 - Domino REST API 的 scope 與 schema:一個 NSF 怎麼變成 REST 端點(而且預設什麼都不開)
把一個 NSF 開上 REST,不是打開開關就全部曝露。DRAPI 是 secure-by-default:你要先寫一份 schema(白名單,決定哪些 form、view、folder、agent、欄位對外),再建一個 scope(把 schema 活化成 REST mapping 的那層)。scope 的名字就是上一篇 JWT 裡 scopes claim 認的那個名字,而底下 Domino 的 ACL、Readers 欄位一樣還在算。這篇把 schema 與 scope 拆清楚。DRAPI 系列第三篇。
2026.08.21 - 呼叫 Domino REST API 一直 401?先搞懂它的 JWT 認證與 scope
DRAPI 幾乎每個呼叫都要證明你是誰。它不用傳統的 session/LTPA,而是 JWT bearer token:先 POST 到 /api/v1/auth 用 Domino 帳密換一個 token,之後每個請求都在 Authorization header 帶著它。這篇講怎麼登入拿 token、token 裡的 scopes/aud claim 在管什麼、token 從哪來(Domino 自簽 JWT、外部 OIDC、idpcat.nsf 三條路)、以及重啟金鑰會變之類的坑。DRAPI 系列第二篇。
2026.08.20 - 你的 agent 是用誰的身分在跑?signer、effective user,與 Error 201/Readers 欄位的雷
你的 agent 跑得好好的 —— 因為是你這個 admin 簽的。把它部署成 web agent、或用服務帳號 ID 簽了排程,它就壞了:Error 201,或者更糟 —— 一份文件都沒處理卻不報錯。原因是身分:Domino agent 是用某個人的身分在跑,而那個人不一定是你。一篇關於 signer 對上 effective user 的實測報告:session.EffectiveUserName 怎麼隨「run as web user」翻轉、Error 201 背後的 runtime security level、以及那個讓文件憑空消失的 Readers 欄位雷。
2026.08.03 - 用 LotusScript 簽章與加密文件:Sign、Encrypt,與 Save 的順序規則
Domino 能簽章一份文件以證明是誰寫的、能加密 item 讓只有持金鑰的人讀得到 —— 兩者都能用 LotusScript 做、也都有陷阱。本文說明 NotesDocument.Sign 與它在伺服器 agent 需要的權限、Encrypt 那個必要的「標記 item / Encrypt / Save」順序、逐 item 選擇性加密,以及為什麼 EncryptOnSend 跟「加密儲存的副本」是完全兩回事。
2026.07.12 - 用程式做 Readers 與 Authors 欄位:靠一個 NotesItem 旗標設定的文件層級安全
Domino 的文件層級存取控制不是什麼特殊 API —— 它就是一個帶旗標的普通 item。本文說明怎麼在 LotusScript 用 ReplaceItemValue 加上 NotesItem.IsReaders / IsAuthors 建立 Readers 與 Authors 欄位、安全模型(沒有 Readers item = 所有人可見;有 Readers item = 只有列出的人)、以及鎖死陷阱:把自己和 agent 漏在清單外,你會把一份文件對所有人藏起來,包括產生它的那段程式。
2026.07.10 - NotesIDVault:用程式從 ID Vault 取 ID、同步、重設密碼
ID Vault 是 Domino 用 policy 集中保管使用者 ID 檔的機制。NotesIDVault 讓你用程式操作它 — 從 vault 取出某使用者的 ID 檔、把本機 ID 同步回 vault、檢查某人 ID 在不在 vault 裡、甚至重設 vault 密碼。本文拆解它的取得、GetUserIDFile / SyncUserIDFile / IsIDInVault / ResetUserPassword / PutUserIDFile 各方法、跟 NotesUserID 的關係,以及這些操作的權限前提。
2026.06.25 - NotesACLEntry 全攻略 — Domino 資料庫存取控制的程式化管理、7 個 access level、20 個 property、Roles 機制
NotesACLEntry 代表 Domino 資料庫 ACL 裡的單一條目(個人、群組或 server)。本文整理 NotesACL ↔ NotesACLEntry 容器關係、拿到 ACL 跟 entry 的三種途徑、7 個 access level 常數、UserType 跟 IsPerson/IsGroup/IsServer 三組旗標、20 個細粒度權限 property、Roles 自訂角色機制、acl.Save 的強制要求、五個踩雷點,跟完整 CRUD 範例。同時跟 14.5 NRPC encryption / trust store 系列文章連結,形成完整的 Domino security 圖譜。
2026.05.15 - Domino 14.5 Mandated Port Encryption 啟用實務 — CheckPortEncryption agent、portenc 指令、退路
續 5/11 概念篇,本文把 HCL 官方 10 步驟啟用流程拆開講:升級 server address book design、簽 CheckPortEncryption 排程 agent、Directory Profile 關鍵欄位、server ini(DEBUG_MANDATED_ENCRYPTION、MANDATEDENC_ACTIVE_REFRESH_TIME)、Desktop policy(DISABLE_MANDATED_ENCRYPTION)、portenc refresh / show 指令,以及啟用後出問題時的退路。Pre-14.5 server 的特殊行為也獨立講清楚。
2026.05.12 - Domino 14.5 那個 `?` icon 在說什麼 — Mandated NRPC Port Encryption 概念與啟用模式
升級到 Domino 14.5 後,Domino Directory 的 server view 最右欄會出現 `?` 圖示 — 不是 bug,是新功能 Mandated NRPC Port Encryption(強制端口加密)的合規狀態。本文整理:NRPC port encryption 的歷史、14.5 新增了什麼、`?` / 鎖頭等狀態 icon 怎麼解讀、預設行為跟三種啟用模式的差別。實務啟用步驟見隔日續篇。
2026.05.11 - Domino 14.5 NotesHTTPRequest 換了預設信任 CA 來源 — 升級前該知道的細節
Domino 14.5 起,server 端 LotusScript 跑 NotesHTTPRequest 時,預設從 Domino Directory 拿信任的 root CA,不再讀 data 目錄裡的 cacerts.pem。Notes client 不受影響、有 NotesHTTPRequest_Use_CACerts=1 這個 .ini 後門可以暫時退回舊行為,但長期該把自簽 CA 匯到 Domino Directory。本文整理這個改動的細節、影響範圍、過渡步驟,跟 5/7 那篇 NotesHTTPRequest 工具鏈深度文一起看。
2026.05.10 - DQL Production-Ready:Catalog 維運、權限、與 sessionAsSigner
把 DQL 上 production 真正會撞牆的兩個問題:Design Catalog 怎麼自動維護(包含全新 NSF 的 bootstrap、設計變更後的 incremental refresh),以及為什麼一般使用者跑會噴「您沒有權限執行此作業」——以及對應的 sessionAsSigner / scheduled agent 解法。本文整理實測 Domino 12 驗證過的最終 pattern + Java production-ready 範例。
2026.05.03 - Domino V12 起 notes.ini 支援多個 HTTPAdditionalRespHeader
舊版 Domino 的 notes.ini 只能塞一個 HTTPAdditionalRespHeader,第二行會把第一行蓋掉。HCL 在 V12.0.x 加了編號式的 HTTPAdditionalRespHeader01、02 寫法,讓你能用純 notes.ini 設好整套安全標頭——尤其是當網頁伺服器(HTTP task)起不來、Internet Site 文件也用不了的時候,這是唯一的後備路徑。
2026.04.28