跳转至

10.1 证书申请(新 CA 系统)

IHEP CA(Chinese High Energy Physics Grid Computing Certification Authority,中国高能物理网格计算认证中心)是欧洲 e-Science 网格认证政策管理机构(EUGridPMA)与亚太网格认证政策管理机构(Asia Pacific Grid PMA)的认可成员,由高能所计算中心运营,并作为大型强子对撞机计算网格(LCG)项目的一部分,自 2004 年起在北京高能所计算中心持续运行,为网格计算签发 X.509 证书。

本节介绍 IHEP 新 PKI 系统(基于 OpenXPKI)签发的 个人(User)证书 、 Robot 证书 和 主机(Host)证书 的申请、下载、续签与吊销,以及主机证书的 EST 自动续签。除特别说明外,WebUI 地址为:https://gridca.ihep.ac.cn/webui/ihepca/ 。

WebUI、EST 和登录均必须使用 HTTPS;CA 证书、CRL 和 CP/CPS 的公开下载地址支持 HTTP 访问。

界面约定

本节中的按钮和菜单名称以 WebUI 英文界面为准。所有页面的 Continue 只保存并进入下一页, Submit 才会将当前申请提交至系统或 RA;提交前应重新检查页面摘要。

旧 CA(OpenCA,cagrid.ihep.ac.cn)的申请手册保留在 10.4 证书申请(旧 CA 系统),仅供历史参考。

10.1.1 证书类型与申请方式

类型 用途 私钥由谁生成和保管 常用申请方式
User Certificate Grid 用户认证、浏览器/命令行客户端认证 系统生成后由用户下载 PKCS#12,用户负责保管 WebUI
Robot Certificate 实验任务、pilot、服务机器人等非自然人身份 系统生成后由责任人下载 PKCS#12,责任人负责保管 WebUI
Host Certificate 主机服务端认证,也可用于受控的客户端认证 站点管理员在目标主机生成和保管 WebUI 首次申请;EST 自动续签
  • 个人证书的 Subject 包含英文名、短帐号、单位和部门, 不要把中文姓名直接填入 Subject 。
  • 主机证书的 Subject 和 SAN 包含主机 DNS 名以及申请人的 LDAP 邮箱; 不要在主机私钥中复用个人证书私钥 。
  • 证书本身的信息(Subject DN、SAN、Issuer、CRL URL 等)用户不可修改,续签时应保持一致;WebUI 中的 Requester、Email、Owner contact、Comment 等是系统元数据,用于审核、检索、通知和责任归属。

证书申请的整体流程如下图所示(个人、Robot、Host 证书流程一致;IHEP-2013 旧证书迁移从左侧入口汇入):

新 CA 证书申请流程

图 10.1-1 新 CA 证书申请流程

10.1.2 使用前准备

  1. 确认 IHEP SSO 帐号可以正常登录(统一认证入口:https://login.ihep.ac.cn)。
  2. 确认 LDAP 中邮箱正确。这会作为个人证书或主机证书的 email SAN,并用于系统内的证书归属与通知。
  3. 若申请主机证书,请提前确认所有 DNS 名称已经确定;主机名会被转换为小写并写入证书,后续新增名称应重新申请或按 CA 流程处理。
  4. 安装信任链:高能所计算平台的计算节点与服务器已部署新 Root 和 Issuing CA 公钥证书及 CRL 更新机制,通常无需用户自行安装;若在自有机器或外部 Grid 客户端/服务器上使用证书,则需自行安装上述公钥证书与 CRL 更新机制。

10.1.3 登录 WebUI

使用 IHEP SSO 登录

  1. 打开 WebUI 地址,在 Authentication method 选择 IHEP SSO 。

    WebUI 登录页,选择 IHEP SSO

  2. 输入 LDAP 用户名和密码,点击 Login 。

    输入 IHEP SSO 用户名密码

  3. 登录后确认页面右上角显示的是自己的帐号, 不要在共享浏览器中保留登录会话 。

    登录后主页,顶部菜单选择 Request Certificate

如果出现 Login with the given credentials failed!,先确认 LDAP 帐号和密码,不要反复尝试不同帐号;请联系 CA 支持人员检查 LDAP 映射。登录成功后,建议依次点击 Home → My Certificates 和 Home → My Workflows :前者显示归属到当前帐号的证书,后者显示自己创建且尚未完成或近期完成的工作流。退出时使用页面的 Logout ;关闭标签页不一定会立即销毁会话。

使用 IHEP-2013 个人证书迁移

此入口只用于仍持有 有效、未撤销 的 IHEP-2013 个人 证书,且申请证书的邮箱与高能所统一认证(IHEP SSO)邮箱一致的用户:

  1. 在浏览器或操作系统证书库中安装旧个人证书及其私钥。
  2. 打开 WebUI 后,浏览器弹出证书选择窗口,选择自己的 IHEP-2013 个人 证书(不要选择 Host 证书)并确认:

    在弹出的证书选择框中选择 IHEP-2013 个人证书

  3. 在登录页面的 Authentication method 下拉列表选择 IHEP-2013 certificate migration ,点击 Login 完成迁移登录:

    在登录页选择 IHEP-2013 certificate migration 认证方式

  4. 系统检查旧证书链、旧 CA CRL、证书 email SAN 与 LDAP 身份;通过后进入主页,在顶部菜单点击 Request Certificate :

    迁移登录后的主页,选择 Request Certificate

  5. 该流程已自动选定个人证书迁移的 Profile(Migrate IHEP-2013 User Certificate),确认无误后点击 Continue :

    迁移流程已选定 Migrate IHEP-2013 User Certificate,点击 Continue

  6. 在 Edit Subject 页面核对 Legacy certificate name (姓名)、 Username (短帐号)、 Organization 、 Organization Unit 、 SAN Email 等(均取自旧证书和 LDAP,不可修改),点击 Continue :

    核对 Legacy certificate name 等信息(不可修改)

  7. 在 Edit Certificate Info 页面的 Comment 中填写本次迁移申请的理由,点击 Continue :

    填写迁移申请的理由

  8. 后续步骤与个人证书申请完全相同:进入 Review Request 页面核对并提交,如遇重复申请按策略例外处理,随后设置 私钥密码 并等待审核,详见 10.1.4 申请个人(User)证书 第 5 步及之后。

一个 LDAP 帐号只能完成一次旧个人证书迁移。若页面提示已经迁移,请到 Home → My Certificates 查找已签发证书,不要反复创建工作流。迁移失败时,先检查旧证书是否仍有效、浏览器是否选择了个人证书以及 SAN 是否有 email;旧 CA CRL 缺失/过期、旧证书已撤销或 LDAP 邮箱不匹配时,必须由 CA 管理员处理。

10.1.4 申请个人(User)证书

申请过程中需要设置两个 仅自己知道的密码 :申请时设置的 私钥密码(Password) (用于保护私钥,并在下载证书时输入)和下载 .p12 时设置的 导出密码(Export Password) (用于加密导出的私钥包;如留空则沿用私钥密码)。两者都不是 LDAP 密码,且无法由 CA 恢复。

  1. 以 IHEP SSO 登录,在顶部菜单选择 Request → Request Certificate 。
  2. 在 Select Profile 中选择 User Certificate (默认),点击 Continue 。

    选择证书 Profile:User Certificate

  3. 个人证书需要证书使用的 英文名 以及正确的 组织和部门;在 Edit Subject 页面填写信息:

    填写个人信息

    • First name / Last name :证书使用的 ASCII 英文姓、名(例如 Xiao / Han)。只接受英文字母、空格、点号、连字符和单引号;LDAP 返回中文姓名时请填写自己长期使用的英文拼写,并在后续续签中保持相同拼写。
    • Username :由 LDAP 预填,不能修改。
    • Organization Unit / Organization :从下拉框选择自己的部门、单位,首次申请必须选择。
    • SAN Email :由 LDAP 提供,不需填写或修改。 Username、LDAP email 和隐藏的 SAN email 是身份绑定信息,不能通过修改浏览器页面内容来变更。
  4. 点击 Continue ,在 Edit Certificate Info 页面检查: Email address 为 LDAP 邮箱(系统归属和通知信息)、 Requester 为申请人姓名;在 Comment 中填写申请理由(说明申请证书的用途), 不要在其中写密码或私钥信息 :

    填写申请理由(Comment)

  5. 点击 Continue ,进入 Review Request 页面,核对 Certificate Subject、 Subject Alternative Name、 Certificate Profile、 Requester Information 等信息;如有误可点击 Edit Subject 或 Edit Certificate Info 返回修改,确认无误后点击 Submit request 提交:

    信息确认(Review Request)页面

  6. 如果提示 Duplicate(Failed Policy Check),说明存在重复申请:在 Review Request 页面点击 Submit with Policy Exception :

    Review Request 提示 Duplicate,点击 Submit with Policy Exception

    随后在 Provide Justification 页面的 Explanation for Policy Violation 中填写需要重复申请的理由(例如此前已申请过证书但私钥密码遗失,需要重新签发),点击 Continue :

    填写 Explanation for Policy Violation

  7. 在 Enter a Password (Private Key Password)页面设置 私钥密码 :该密码用于保护私钥,并在下载证书时需要输入,请务必牢记;密码至少 8 位,且包含大写、小写、数字、特殊字符中的至少两类。此密码无法由 CA 恢复。

    设置私钥密码

  8. 提交后进入待 RA 审核状态;若为策略例外申请,会显示 Policy Violation Pending ,可点击 Recheck Status 刷新状态:

    等待审核(Policy Violation Pending)

  9. 在 Home → My Workflows 查看状态;审核完成、签发后也会在 Home → My Certificates 出现证书。

提交后按照下面方式判断进度:

页面显示的状态 含义 用户下一步
PENDING 或 ONHOLD 等待 RA 审核或补充资料 打开工作流查看提示;不要创建重复申请
SUCCESS 或成功页 已签发 进入 My Certificates 下载、核验和安装
REJECTED RA 已拒绝 阅读审核说明,修正问题后重新申请
FAILURE / Unexpected error 工作流异常 记录 workflow ID 和错误全文,联系支持

查看工作流:打开 Home → My Workflows ,点击列表中对应的工作流 ID,再展开或阅读 Last Update 、 State 、 History 和页面显示的错误/说明。不要把浏览器的后退按钮当作取消申请;需要取消时按页面可用的 Cancel 操作处理。

10.1.5 申请 Robot 证书

Robot 证书代表实验服务、pilot 或自动化任务,不代表自然人。 每张 Robot 证书必须有明确的责任人 ;系统会将当前 SSO 用户的 LDAP email 写入 SAN 和系统元数据。申请流程与个人证书一致(见 10.1.4),区别在于 Edit Subject 页面填写:

Robot 证书:填写 Experiment 与 Submodule / purpose

  • Experiment :实验名称,例如 JUNO。只允许英文、数字、点、下划线和连字符。
  • Submodule / purpose :子模块或用途,例如 pilot。可使用英文、数字、空格、点、下划线和连字符。
  • Organization Unit / Organization :从下拉框选择实际责任部门、单位。
  • 页面会自动固定第二个 CN 为 Robot,不需要也不能填写用户短帐号。

在摘要中核对 DN。输入 JUNO 和 pilot 时,预期为:

CN=JUNO pilot,CN=Robot,OU=<部门>,O=<单位>,O=HEP,C=CN

其余步骤(设置私钥密码、提交、等待审核、下载时设置导出密码)与个人证书完全相同。Robot 证书的 SAN 只有责任人的 email, 不包含 DNS 名 :不要把它当作 Host 证书部署到 Web 服务,也不要共享给不属于该实验/服务的人员。责任人变化、用途变化或私钥泄露时,应申请吊销并重新申请。

10.1.6 申请主机(Host)证书

主机证书应由对该主机有管理责任的人申请,申请人的 LDAP 邮箱会写入 SAN 并作为 owner/requester 元数据。申请流程与个人证书一致(见 10.1.4),区别在于 Edit Subject 页面填写主机名。主机证书需要 主 DNS 名、全部附加 DNS 名、该主机用途及责任人 ; 不要 把 IP 地址、URL、端口、https:// 前缀、通配符 *.ihep.ac.cn 或逗号分隔的一串名称填入单个 hostname 输入框:

Host 证书:填写 Hostname 与 Additional Hostnames

  • Hostname :必须是该主机的 主 FQDN ,例如 host01.ihep.ac.cn,不要填短名 host01。
  • Additional hostname :可添加其他 DNS 名;每个输入框只能填 一个 完整 FQDN,不使用通配符,需要多个名称时按页面控件逐项添加。
  • 系统会按小写签发 DNS 名,请先确认 DNS 解析和站点责任关系再提交。
  • 主机证书的 email SAN 固定来自已登录人的 LDAP 邮箱, 不要填写他人的邮箱来规避审核 。
  • Comment 应写服务用途、所属站点和工单号,例如 DIRAC Storage Element, IHEP CC, ticket #12345。

其余步骤(确认信息、设置私钥密码、提交、等待 RA 审核)与个人证书完全相同。签发后到 My Certificates 打开该证书,在 Action 区点击 Download private key/keystore (PKCS12/PKCS8/Java) ,选择 PKCS12 并下载。WebUI 固定生成 RSA 4096 私钥、用 AES-256 加密,不会再要求选择密钥类型、长度或上传 CSR。

将主机证书安装到目标主机

  1. 将下载的 .p12 文件经受控方式传到目标主机,避免邮件、公开网盘或共享临时目录。
  2. 在目标主机创建私钥目录并限制权限:

    sudo install -d -m 0750 /etc/grid-security
    sudo install -m 0600 -o root -g root /path/to/host01.p12 /root/host01.p12
    
  3. 导出终端实体证书和私钥(系统会要求输入 Export Password ,即下载 .p12 时设置的导出密码):

    sudo openssl pkcs12 -in /root/host01.p12 -clcerts -nokeys \
      -out /etc/grid-security/hostcert.pem
    sudo openssl pkcs12 -in /root/host01.p12 -nocerts -nodes \
      -out /etc/grid-security/hostkey.pem
    sudo chmod 0444 /etc/grid-security/hostcert.pem
    sudo chmod 0400 /etc/grid-security/hostkey.pem
    
  4. 核对证书与私钥匹配,并检查 DNS/email SAN:

    test "$(sudo openssl x509 -in /etc/grid-security/hostcert.pem -noout -modulus | openssl sha256)" = \
         "$(sudo openssl rsa -in /etc/grid-security/hostkey.pem -noout -modulus | openssl sha256)" \
      && echo 'certificate and key match'
    sudo openssl x509 -in /etc/grid-security/hostcert.pem -noout \
      -subject -issuer -dates -ext subjectAltName -ext extendedKeyUsage
    
  5. 如服务由专用帐号运行(例如 dirac),仅在该服务确实需要读取私钥时设置受控属主/组和权限; 私钥绝不能对所有用户可读 。

  6. 验证服务配置后重载服务,再删除 /root/host01.p12。保留经安全保护的离线备份,不要在目标主机保留多份明文私钥。

不要混用

此流程仅适用于 WebUI 签发的 Host 证书。10.1.9 的 EST 自动续签和 IHEP-2013 Host 迁移仍在目标主机生成新私钥/CSR,不能把 WebUI .p12 导出的加密私钥直接交给 EST 脚本使用。

10.1.7 下载与安装证书

证书签发后,申请人会收到签发通知邮件:

证书签发通知邮件(含证书详情链接)

下载 PKCS#12

  1. 打开 Home → My Certificates :

    主页进入 My Certificates

  2. 点击目标证书的 Subject 或序列号,进入证书详情;也可以直接点击签发邮件中的链接,系统会自动打开对应的证书:

    在 My Certificates 列表中选择目标证书

  3. 在 Action 区点击 Download private key/keystore (PKCS12/PKCS8/Java) (从邮件链接进入时,页面会直接显示该下载入口):

    证书详情 Action 区的下载入口

  4. 在 Specify Required Format 页面确认 Download Format 为 PKCS12 ; Password 输入申请时设置的 私钥密码 ; Export Password 设置导出私钥(.p12)的密码(如留空,则沿用申请时的私钥密码):

    指定下载格式并设置密码

  5. 点击 Continue ,进入 SUCCESS 页面后点击 Download 下载 .p12 文件(离开该页面后下载入口将消失):

    下载成功页,点击 Download

.p12 文件同时包含个人证书、私钥和 CA 链,导入时需要 Export Password (如未单独设置,则为申请时设置的 私钥密码 )。下载完成后 立即 将文件从浏览器的公共下载目录移动到受保护位置并确认权限;不要将 .p12 保留在共享的 /tmp、公共下载目录、同步盘或多人可读的家目录中。

没有下载私钥的 Action?

个人、Robot 和 WebUI 签发的 Host 证书均由 CA 生成私钥,因此会提供私钥下载 Action。证书详情中没有该 Action 并不表示证书无效,通常表示该证书私钥不在 CA 保存、已经导出过,或该证书来自 EST。

导出 Grid 所需 PEM 文件

以下命令从 .p12 分别导出终端实体证书和私钥:

mkdir -p "$HOME/.globus"
chmod 700 "$HOME/.globus"

openssl pkcs12 -in '/path/to/Xiao Han.p12' -clcerts -nokeys \
  -out "$HOME/.globus/usercert.pem"
openssl pkcs12 -in '/path/to/Xiao Han.p12' -nocerts \
  -out "$HOME/.globus/userkey.pem"
chmod 600 "$HOME/.globus/userkey.pem"
chmod 644 "$HOME/.globus/usercert.pem"

系统会要求输入 Export Password ,并可能要求为 PEM 私钥设置保护密码;自动化客户端无法交互输入私钥密码时,应遵循所在站点的私钥保护策略后再使用。导出后可作本地核验:

openssl x509 -in "$HOME/.globus/usercert.pem" -noout \
  -subject -issuer -dates -ext subjectAltName
test "$(openssl x509 -in "$HOME/.globus/usercert.pem" -noout -modulus | openssl sha256)" = \
     "$(openssl rsa -in "$HOME/.globus/userkey.pem" -noout -modulus | openssl sha256)" \
  && echo 'certificate and key match'

不要 为解决导入问题而向他人发送 .p12 或密码。

安装到浏览器

  1. 在 Firefox 设置中打开 Privacy & Security → Certificates → View Certificates 。
  2. 打开 Your Certificates 标签页,点击 Import ,选择下载的 .p12 文件,输入 Export Password 。
  3. 再访问需要客户端证书的网站;浏览器提示选择证书时选择新 IHEP CA 个人证书。

导入后可在 Your Certificates 中双击条目,检查 Issued By 是新的 IHEP Issuing CA, Subject Alternative Name 包含自己的 email。若站点仍只信任 IHEP-2013,需由该站点更新 trust anchor 后才能使用新证书。

浏览器中看不到客户端证书?

首次使用客户端证书访问站点前,浏览器必须同时能访问其私钥;仅导入 .crt 或 .pem 公钥证书,不会出现在浏览器可选身份列表中。可在 Firefox 的 Settings → Privacy & Security → Certificates → View Certificates → Your Certificates 中确认目标条目存在且可显示私钥;本机时间不正确时,浏览器也可能不展示尚未生效或已过期的证书。

不要 通过邮件、网盘公开链接或聊天工具传递 .p12、userkey.pem 或密码。

10.1.8 查看、续签与吊销

查看证书

  1. 在 Home → My Certificates 点击目标证书。
  2. 在详情页检查 Subject、Issuer、Not Before/Not After、SAN 和序列号。
  3. 使用 Download PEM (CRT) format 下载单张证书;使用 Download chain as PEM bundle, including root 下载完整信任链。
  4. 需要核对系统内归属时,查看 Action → Show metadata ;其中的 requester、email、owner contact 是系统元数据,不属于 X.509 证书扩展。

使用 WebUI 续签

个人证书或由 WebUI 管理的主机证书临近到期时:

  1. 打开 Home → My Certificates ,进入要续签的 有效 证书。
  2. 在 Action 区点击 Renew 。
  3. 系统带入原证书的 Profile 与 Subject,检查姓名、帐号、组织、部门、DNS 名和邮箱;不要借续签改变证书类型或主机归属。
  4. 按提示设置新的 私钥密码 ,下载新 .p12 时再设置 导出密码 ;Host 证书签发后按 10.1.6 安装到目标主机。
  5. 点击 Submit ,在 My Workflows 查看状态;签发后下载并安装新证书。正常续签窗口内,旧证书会在其原有效期内继续有效,便于平滑替换。

个人、Robot 和 WebUI Host 证书续签后都会得到 新的私钥包和新的序列号 ,应重新导出/安装新 .p12,而不是把新证书与旧私钥手工拼接。Robot 续签保留原有 Subject(CN=Robot 固定不变);实验/用途或责任人变更时不要用续签伪装变更,应重新申请。在确认服务正常前不要删除旧证书备份。

申请吊销

私钥疑似泄露、主机退役、人员离开或证书信息不再正确时,应 立即 申请吊销:

  1. 在 My Certificates 打开需吊销的证书。
  2. 在 Action 区点击 Revoke 。
  3. 选择最准确的吊销原因,填写可供 RA 审核的说明,点击 Submit 。
  4. 等待 RA 审核和 CRL 发布。吊销不可撤销;若只是即将到期,应选择续签而不是吊销。

如果私钥已经泄露,先停止使用该私钥和相关服务,再提交吊销;不要等待证书临近过期,也不要仅删除本机证书文件——副本仍可能被滥用。

10.1.9 主机证书 EST 自动续签与旧 Host 迁移

适用对象:新 IHEP CA 已签发的 Host 证书。默认在距离过期 45 天 内自动发起 simplereenroll;正常续签不撤销旧证书。本节为纯脚本方式,无需网页操作。

安装脚本与 CA 公钥

由站点管理员将以下文件安全部署到目标主机:

/usr/local/sbin/ihep-host-auto.sh
/etc/grid-security/certificates/IHEP-2026-Root.pem
/etc/grid-security/certificates/IHEP-2026-ICA.pem
/etc/grid-security/certificates/IHEP-2013.pem   # 仅旧 Host 迁移时需要

脚本需要 Bash、OpenSSL、curl、flock、GNU coreutils,且只支持 无口令 PEM 主机私钥。Host 证书和私钥位于 /etc/grid-security/(或应用自己的路径);CA 公钥证书位于标准信任目录 /etc/grid-security/certificates/。

sudo install -o root -g root -m 0755 ihep-host-auto.sh /usr/local/sbin/ihep-host-auto.sh
sudo install -d -o root -g root -m 0755 /etc/grid-security/certificates
sudo install -o root -g root -m 0644 IHEP-2026-Root.pem /etc/grid-security/certificates/IHEP-2026-Root.pem
sudo install -o root -g root -m 0644 IHEP-2026-ICA.pem /etc/grid-security/certificates/IHEP-2026-ICA.pem

如需迁移旧证书,保存旧 IHEP-2013 CA 公钥为 /etc/grid-security/certificates/IHEP-2013.pem(权限可为 0644,不包含也不需要旧 CA 私钥)。检查现有主机私钥没有口令且权限安全:命令要求输入密码或报错时,该私钥不适合本自动化脚本。

手工运行示例

以下例子使用 DIRAC 主机的证书路径。CURL_CA_CERT 仅用于验证 gridca.ihep.ac.cn 的 HTTPS 服务端证书链;若系统 CA 已能验证,可省略:

sudo env \
  PKI_HOST=gridca.ihep.ac.cn \
  CERT_FILE=/opt/dirac/etc/grid-security/hostcert.pem \
  KEY_FILE=/opt/dirac/etc/grid-security/hostkey.pem \
  INSTALL_OWNER=dirac INSTALL_GROUP=dirac \
  CERT_MODE=0444 KEY_MODE=0400 \
  CURL_CA_CERT=/etc/grid-security/certificates/est-ca.pem \
  /usr/local/sbin/ihep-host-auto.sh

脚本会先核对当前证书和私钥匹配,再判断:

  • 当前证书由 IHEP-2013 CA 签发:调用迁移接口,签发新 CA Host 证书。
  • 当前证书由新 IHEP CA 签发:仅在距过期 45 天内调用 EST 续签接口。
  • 不在续签窗口:不作修改并以成功状态退出。

不要 在日常任务中设置 ALLOW_REPLACE=1,这只用于管理员明确需要窗口外换发的测试或事故处置。首次成功签发后,检查脚本输出中的新序列号、到期时间和安装路径,并执行:

openssl x509 -in /opt/dirac/etc/grid-security/hostcert.pem -noout \
  -subject -issuer -dates -ext subjectAltName -ext extendedKeyUsage
test "$(openssl x509 -in /opt/dirac/etc/grid-security/hostcert.pem -noout -modulus | openssl sha256)" = \
     "$(openssl rsa -in /opt/dirac/etc/grid-security/hostkey.pem -noout -modulus | openssl sha256)" \
  && echo 'certificate and key match'

主机证书应包含 DNS SAN、责任人 email SAN,以及 TLS Web Server Authentication 和 TLS Web Client Authentication 扩展用途。

设置定时任务

  1. 先手工执行一次,确认输出显示签发或"不在续签窗口"。
  2. 确认目标服务能够读取新安装后的 hostcert.pem 与 hostkey.pem。
  3. 以 root 编辑 crontab -e,每天执行一次,例如:

    17 3 * * * /usr/local/sbin/ihep-host-auto.sh >>/var/log/ihep-host-auto.log 2>&1
    
  4. 如果证书不在默认路径,把环境变量写入一个 root 权限、不可被普通用户修改的包装脚本,再让 cron 调用。保存为 /usr/local/sbin/renew-dirac-host-cert,运行 sudo chown root:root 和 sudo chmod 0700:

    #!/usr/bin/env bash
    set -euo pipefail
    
    exec env \
      PKI_HOST=gridca.ihep.ac.cn \
      CERT_FILE=/opt/dirac/etc/grid-security/hostcert.pem \
      KEY_FILE=/opt/dirac/etc/grid-security/hostkey.pem \
      INSTALL_OWNER=dirac INSTALL_GROUP=dirac \
      CERT_MODE=0444 KEY_MODE=0400 \
      CURL_CA_CERT=/etc/grid-security/certificates/est-ca.pem \
      RELOAD_CMD='systemctl reload dirac-service' \
      /usr/local/sbin/ihep-host-auto.sh
    

    将 dirac-service 替换为实际服务 unit;如果服务没有安全的 reload 命令,不要随意配置 restart。先以 root 手工运行包装脚本并验证服务,再将 cron 行改为调用包装脚本。

脚本会保留旧文件备份,其中可能包含私钥:备份目录必须按私钥等级保护并定期清理;遇到断电或进程被强制终止后,先检查备份和证书/私钥是否匹配,再重启服务。

IHEP-2013 Host 自动迁移

与上节使用同一个脚本。首次运行时,脚本使用旧 Host 证书完成 mTLS 身份认证,向:

https://gridca.ihep.ac.cn/.well-known/est/legacy-host/simpleenroll

申请新 Host 证书。服务端会验证旧 CA CRL、旧证书链、CSR 与旧 Subject/DNS/email SAN 一致性,并以 SAN email 查询 LDAP 归属。旧 Host 证书必须满足:非 CA、一个 email SAN、一个或多个 DNS SAN、CN 包含于 DNS SAN、C=CN,并符合原 IHEP Host DN 结构;旧证书被撤销、CRL 缺失/过期、LDAP 邮箱不存在或 CSR 改写主机名时,迁移会拒绝。

每个主机名只允许迁移一次。 若迁移中断,请保留脚本 state/backup 文件和输出日志,联系 CA 管理员处理对应工作流;不要删除服务端迁移记录后盲目重试。迁移完成后,新证书由新 IHEP CA 签发;下一次脚本运行会自动识别新链并改用常规 EST 续签接口。旧证书在其原有效期内仍可保留用于平滑切换,但 不要 把旧、新两套证书混合安装到同一 hostcert.pem 文件。

10.1.10 常见问题

现象 首先检查
WebUI 登录失败 LDAP 帐号密码、浏览器是否选择了错误客户端证书、系统时间
找不到自己的证书 使用 Home → My Certificates ;核对登录 email 与证书 owner/email 元数据
申请长期停在 PENDING 到 My Workflows 记录工作流 ID,联系 RA;不要重复提交
没有下载私钥的 Action 该证书可能不是 CA 生成私钥的个人证书,或私钥已不在服务端;私钥不能恢复
EST TLS 失败 用 curl 或脚本检查服务端完整 TLS 链;必要时配置正确的 CURL_CA_CERT, 不要使用 -k
EST 迁移被拒绝 检查旧证书有效期、旧 CA CRL、私钥匹配、LDAP email 与 DNS/SAN 是否保持不变
浏览器不弹出证书选择框 检查浏览器证书库是否有私钥、是否缓存了选择、是否选择了正确认证方式
主机服务重载后无法启动 用本机备份恢复上一个匹配的证书/私钥对,检查服务日志和文件权限,再联系站点管理员
证书链验证失败 检查客户端安装了新 Root 和 Issuing CA,检查 Issuing/Root CRL 的公开 URL 可访问

联系支持时,提供证书序列号或 Subject、WebUI workflow ID、发生时间(UTC)、错误全文和相关日志片段; 绝不提供私钥、.p12 文件、私钥口令或 LDAP 密码 。

证书管理人员联系方式:韩潇,hanx@ihep.ac.cn,010-88238602。

常见问题(FAQ)

见常见问题。

🤖 AI 助手
💬 快速提问 ×

有问题?输入后跳转到对话页继续交流