7.4. 安装 PKI 子系统
Red Hat Certificate System 提供不同的子系统,可以单独安装。例如,您可以在单一服务器上安装多个子系统实例,或者您可以在不同的主机上独立运行它们。这可让您根据环境调整安装,以提供更高的可用性、可扩展性和故障切换支持。
有关安装指南,请参考下面的 RHCS 子系统指南。
如果您不熟悉 pkispawn
,请参阅 第 7.2 节 “使用 pkispawn
工具安装 RHCS” 来更好地了解每个子系统安装的选项。
完成后,请参阅 第 7.5 节 “安装后的任务” 并遵循与您要安装的子系统相关的部分。
7.4.1. 安装 CA 子系统
7.4.1.1. 安装 CA
按照以下步骤安装带有自签名 CA 签名证书的 CA 子系统实例。它还被称为"root CA"。
在安装前,请确保配置了 安装前提条件。
7.4.1.1.1. 安装 CA 子系统
准备部署配置,如 ca.cfg
,以部署 CA 子系统。默认情况下,子系统部署到名为 pki-tomcat
的 Tomcat 实例中。
部署配置示例位于 /usr/share/pki/server/examples/installation/ca.cfg。
要启动安装,请执行以下命令:
pkispawn -f ca.cfg -s CA
$ pkispawn -f ca.cfg -s CA
7.4.1.1.2. CA 系统证书
安装后,CA 系统证书和密钥存储在服务器 NSS 数据库中(例如 /var/lib/pki/pki-tomcat/conf/alias
):
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CTu,Cu,Cu
ca_ocsp_signing u,u,u
subsystem u,u,u
ca_audit_signing u,u,Pu
sslserver u,u,u
如果需要,可以使用以下命令将证书导出到 PEM 文件中:
pki-server cert-export <cert ID> --cert-file <filename>
$ pki-server cert-export <cert ID> --cert-file <filename>
CA 的有效证书 ID 是:
-
ca_signing
-
ca_ocsp_signing
-
ca_audit_signing
-
subsystem
-
sslserver
请注意,pki-server cert-export
命令采用证书 ID 而不是 nickname。为了简单起见,本例中的 nicknames 配置为与证书 ID 相同。
7.4.1.1.3. 管理证书
安装后,admin 证书和密钥存储在 ~/.dogtag/pki-tomcat/ca_admin_cert.p12
中。
PKCS fulfillment 密码在 pki_client_pkcs12_password
参数中指定。
要使用管理证书,请执行以下操作:
从服务器 NSS 数据库导出 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server cert-export ca_signing --cert-file ca_signing.crt
$ pki-server cert-export ca_signing --cert-file ca_signing.crt
将 CA 签名证书导入到客户端 NSS 数据库中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 CA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -n caadmin ca-user-show caadmin
$ pki -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.2. 安装 CA 克隆
按照以下步骤将 CA 子系统安装为现有 CA 子系统的克隆。
在安装前,请确保配置了 安装前提条件。
其他有用的提示:
- 确保 master 上的防火墙允许从克隆从外部访问 LDAP。
- 确保克隆上的防火墙允许从主控机从外部访问 LDAP。
-
在 LDAP 中没有
dc=pki,dc=example,dc=com
条目会给出与无法连接到 LDAP 服务器相同的错误。
7.4.1.2.1. 导出现有的 CA 系统证书
在现有系统中,使用以下命令导出 CA 系统证书:
pki-server ca-clone-prepare \ --pkcs12-file ca-certs.p12 \ --pkcs12-password Secret.123
$ pki-server ca-clone-prepare \
--pkcs12-file ca-certs.p12 \
--pkcs12-password Secret.123
命令将以下证书(包括证书链)及其密钥导出到 PKCSautomationhub 文件中:
- CA 签名证书
- OCSP 签名证书
- 审计签名证书
- 子系统证书
请注意,现有的 SSL 服务器证书没有导出。
如有必要,第三方证书(如信任锚)可以使用以下命令添加到同一 PKCSeffort 文件中:
pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \ pkcs12-cert-import <nickname> \ --pkcs12-file ca-certs.p12 \ --pkcs12-password Secret.123 \ --append
$ pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \
pkcs12-cert-import <nickname> \
--pkcs12-file ca-certs.p12 \
--pkcs12-password Secret.123 \
--append
另外,也可使用以下命令导出上述证书的 CSR:
pki-server cert-export ca_signing \ --csr-file ca_signing.csr pki-server cert-export ca_ocsp_signing \ --csr-file ca_ocsp_signing.csr pki-server cert-export ca_audit_signing \ --csr-file ca_audit_signing.csr pki-server cert-export subsystem \ --csr-file subsystem.csr
$ pki-server cert-export ca_signing \
--csr-file ca_signing.csr
$ pki-server cert-export ca_ocsp_signing \
--csr-file ca_ocsp_signing.csr
$ pki-server cert-export ca_audit_signing \
--csr-file ca_audit_signing.csr
$ pki-server cert-export subsystem \
--csr-file subsystem.csr
7.4.1.2.2. SELinux 权限
将 ca-certs.p12
复制到克隆机器后,请确保添加了适当的 SELinux 规则:
semanage fcontext -a -t pki_tomcat_cert_t ca-certs.p12 restorecon -R -v ca-certs.p12
$ semanage fcontext -a -t pki_tomcat_cert_t ca-certs.p12
$ restorecon -R -v ca-certs.p12
确保 ca-certs.p12
文件归 pkiuser
所有
chown pkiuser:pkiuser ca-certs.p12
$ chown pkiuser:pkiuser ca-certs.p12
7.4.1.2.3. 安装 CA 子系统
准备部署配置,如 ca-clone.cfg
,以部署 CA 子系统克隆。默认情况下,子系统部署到名为 pki-tomcat
的 Tomcat 实例中。
部署配置示例位于 /usr/share/pki/server/examples/installation/ca-clone.cfg。
它假设:
- 主 CA 子系统在 https://primary.example.com:8443中运行
-
CA 签名证书已导出到
ca_signing.crt
-
管理证书和密钥已导出到
ca_admin_cert.p12
-
PKCS fulfillment 密码在
pki_client_pkcs12_password
参数中指定。
详情请参阅 CA 安装。
如果 CSR 可用,可以使用以下参数来指定它们:
pki_ca_signing_csr_path=ca_signing.csr pki_ocsp_signing_csr_path=ca_ocsp_signing.csr pki_audit_signing_csr_path=ca_audit_signing.csr pki_subsystem_csr_path=subsystem.csr
pki_ca_signing_csr_path=ca_signing.csr
pki_ocsp_signing_csr_path=ca_ocsp_signing.csr
pki_audit_signing_csr_path=ca_audit_signing.csr
pki_subsystem_csr_path=subsystem.csr
要开始安装,请执行以下命令:
pkispawn -f ca-clone.cfg -s CA
$ pkispawn -f ca-clone.cfg -s CA
7.4.1.2.4. CA 系统证书
安装现有 CA 系统证书(包括证书链)后,其密钥存储在服务器 NSS 数据库中(例如 /var/lib/pki/pki-tomcat/conf/alias
),并为新实例创建新的 SSL 服务器证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CTu,Cu,Cu
ca_ocsp_signing u,u,u
subsystem u,u,u
ca_audit_signing u,u,Pu
sslserver u,u,u
如果需要,可以使用以下命令将证书导出到 PEM 文件中:
pki-server cert-export <cert ID> --cert-file <filename>
$ pki-server cert-export <cert ID> --cert-file <filename>
CA 的有效证书 ID 是:
-
ca_signing
-
ca_ocsp_signing
-
ca_audit_signing
-
subsystem
-
sslserver
请注意,pki-server cert-export
命令采用证书 ID 而不是 nickname。为了简单起见,本例中的 nicknames 配置为与证书 ID 相同。
7.4.1.2.5. 管理证书
要使用管理证书,请执行以下操作:
将 CA 签名证书导入到客户端 NSS 数据库中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
要验证 admin 证书是否可以用于访问 CA 子系统克隆,请执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -n caadmin ca-user-show caadmin
$ pki -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.3. 使用 HSM 安装 CA 克隆
按照以下步骤将 CA 子系统安装为现有 CA 子系统的克隆,其中系统证书及其密钥存储在 HSM 中。
在安装前,请确保配置了 安装前提条件。
7.4.1.3.1. 导出现有系统证书
由于系统证书和密钥已在 HSM 上,因此不需要将它们导出到 PKCSrhgs 文件以创建克隆。
但是,系统证书的 CSR 存储在 CS.cfg
中,而不是 HSM。
使用以下命令也可以导出它们:
pki-server cert-export ca_signing \ --csr-file ca_signing.csr pki-server cert-export ca_ocsp_signing \ --csr-file ca_ocsp_signing.csr pki-server cert-export ca_audit_signing \ --csr-file ca_audit_signing.csr pki-server cert-export subsystem \ --csr-file subsystem.csr
$ pki-server cert-export ca_signing \
--csr-file ca_signing.csr
$ pki-server cert-export ca_ocsp_signing \
--csr-file ca_ocsp_signing.csr
$ pki-server cert-export ca_audit_signing \
--csr-file ca_audit_signing.csr
$ pki-server cert-export subsystem \
--csr-file subsystem.csr
7.4.1.3.2. CA 子系统安装
注:假设 CA 签名证书已导出到 ca_signing.crt
准备包含部署配置的文件,如
ca.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM pki_cert_chain_path=ca_signing.crt [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [CA] pki_admin_email=caadmin@example.com pki_admin_name=caadmin pki_admin_nickname=caadmin pki_admin_password=Secret.123 pki_admin_uid=caadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com pki_ds_database=ca pki_ds_password=Secret.123 pki_security_domain_hostname=pki.example.com pki_security_domain_https_port=8443 pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_ca_signing_nickname=ca_signing pki_ocsp_signing_nickname=ca_ocsp_signing pki_audit_signing_nickname=ca_audit_signing pki_sslserver_nickname=sslserver/replica.example.com pki_subsystem_nickname=subsystem pki_ca_signing_token=HSM pki_ocsp_signing_token=HSM pki_audit_signing_token=HSM pki_sslserver_token=HSM pki_subsystem_token=HSM pki_clone=True pki_clone_replicate_schema=True pki_clone_uri=https://pki.example.com:8443
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM pki_cert_chain_path=ca_signing.crt [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [CA] pki_admin_email=caadmin@example.com pki_admin_name=caadmin pki_admin_nickname=caadmin pki_admin_password=Secret.123 pki_admin_uid=caadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com pki_ds_database=ca pki_ds_password=Secret.123 pki_security_domain_hostname=pki.example.com pki_security_domain_https_port=8443 pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_ca_signing_nickname=ca_signing pki_ocsp_signing_nickname=ca_ocsp_signing pki_audit_signing_nickname=ca_audit_signing pki_sslserver_nickname=sslserver/replica.example.com pki_subsystem_nickname=subsystem pki_ca_signing_token=HSM pki_ocsp_signing_token=HSM pki_audit_signing_token=HSM pki_sslserver_token=HSM pki_subsystem_token=HSM pki_clone=True pki_clone_replicate_schema=True pki_clone_uri=https://pki.example.com:8443
如果 CSR 可用,可以使用以下参数来指定它们:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_ca_signing_csr_path=ca_signing.csr pki_ocsp_signing_csr_path=ca_ocsp_signing.csr pki_audit_signing_csr_path=ca_audit_signing.csr pki_subsystem_csr_path=subsystem.csr
pki_ca_signing_csr_path=ca_signing.csr pki_ocsp_signing_csr_path=ca_ocsp_signing.csr pki_audit_signing_csr_path=ca_audit_signing.csr pki_subsystem_csr_path=subsystem.csr
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ca.cfg -s CA
$ pkispawn -f ca.cfg -s CA
它会在 Tomcat 实例中安装 CA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/ca/alias
7.4.1.3.3. 验证系统证书
验证内部令牌是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI ca_signing CT,C,C sslserver/replica.example.com ,, ca_audit_signing ,,P
验证 HSM 是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI HSM:ca_signing CTu,Cu,Cu HSM:ca_ocsp_signing u,u,u HSM:subsystem u,u,u HSM:ca_audit_signing u,u,Pu HSM:sslserver/replica.example.com u,u,u
7.4.1.3.4. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
导入 master 的 admin 密钥和证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 CA 克隆:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin ca-user-show caadmin
$ pki -c Secret.123 -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.4. 使用 LDAPS 连接安装 CA 克隆
按照以下步骤,将 CA 子系统安装为具有安全数据库连接的现有 CA 子系统的克隆。
在安装前,请确保配置了 安装前提条件。
7.4.1.4.1. DS 配置
在克隆系统上完成上述先决条件后,请按照使用 DS 启用 SSL 连接 的步骤,以便 CA 克隆的 DS 使用 CA 发布的实际服务器证书运行并启用了 SSL。
一些有用的提示:
- 确保 master 上的防火墙允许从克隆从外部访问 LDAP。
- 确保克隆上的防火墙允许从主控机从外部访问 LDAP。
-
在 LDAP 中没有
dc=pki,dc=example,dc=com
条目会给出与无法连接到 LDAP 服务器相同的错误。
7.4.1.4.2. 导出现有的 CA 系统证书
在现有系统中,使用以下命令导出 CA 系统证书并将其复制到克隆系统中:
pki-server ca-clone-prepare --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123 pki-server cert-export ca_signing --cert-file ca_signing.crt
$ pki-server ca-clone-prepare --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123
$ pki-server cert-export ca_signing --cert-file ca_signing.crt
以下证书(包括证书链)及其密钥被导出到一个 PKCSautomationhub 文件中:
- CA 签名证书
- OCSP 签名证书
- 审计签名证书
- 子系统证书
请注意,现有的 SSL 服务器证书没有导出。
如有必要,第三方证书(如信任锚)可以使用以下命令添加到同一 PKCSeffort 文件中:
pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \ pkcs12-cert-import <nickname> \ --pkcs12-file ca-certs.p12 \ --pkcs12-password Secret.123 \ --append
$ pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \
pkcs12-cert-import <nickname> \
--pkcs12-file ca-certs.p12 \
--pkcs12-password Secret.123 \
--append
7.4.1.4.3. SELinux 权限
将 ca-certs.p12
复制到克隆机器后,请确保添加了适当的 SELinux 规则:
semanage fcontext -a -t pki_tomcat_cert_t ca-certs.p12 restorecon -R -v ca-certs.p12
$ semanage fcontext -a -t pki_tomcat_cert_t ca-certs.p12
$ restorecon -R -v ca-certs.p12
确保 ca-certs.p12
文件归 pkiuser
所有
chown pkiuser:pkiuser ca-certs.p12
$ chown pkiuser:pkiuser ca-certs.p12
7.4.1.4.4. 安装 CA 子系统
准备部署配置,如 ca-secure-ds-secondary.cfg
,以部署 CA 子系统克隆。默认情况下,子系统部署到名为 pki-tomcat
的 Tomcat 实例中。
以下引用的 pkispawn 配置文件示例预期 DS 服务器证书的签名证书位于名为 ds_signing.crt
的文件中。由于现有 CA 正在用作签名证书,请将 CA 的签名证书复制到 ds_signing.crt
中:
cp ca_signing.crt ds_signing.crt
$ cp ca_signing.crt ds_signing.crt
部署配置示例位于 /usr/share/pki/server/examples/installation/ca-secure-ds-secondary.cfg。
它假设:
-
现有的 CA 和 DS 实例在
primary.example.com
上运行。 -
新的 CA 和 DS 克隆安装在
secondary.example.com
上。 -
CA 签名证书已导出到
ca_signing.crt
。 -
admin 证书和密钥已导出到
ca_admin_cert.p12
中。 -
PKCS fulfillment 密码在
pki_client_pkcs12_password
参数中指定。
要开始安装,请执行以下命令:
pkispawn -f ca-secure-ds-secondary.cfg -s CA
$ pkispawn -f ca-secure-ds-secondary.cfg -s CA
7.4.1.4.5. CA 系统证书
安装现有 CA 系统证书(包括证书链)后,其密钥存储在服务器 NSS 数据库中(例如 /var/lib/pki/pki-tomcat/conf/alias
),并为新实例创建新的 SSL 服务器证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
subsystem u,u,u
ca_signing CTu,Cu,Cu
ca_ocsp_signing u,u,u
ca_audit_signing u,u,Pu
ds_signing CT,C,C
sslserver u,u,u
如果需要,可以使用以下命令将克隆 CA 系统证书导出到 PEM 文件中:
pki-server cert-export <cert ID> --cert-file <filename>
$ pki-server cert-export <cert ID> --cert-file <filename>
CA 的有效证书 ID 是:
-
ca_signing
-
ca_ocsp_signing
-
ca_audit_signing
-
subsystem
-
sslserver
请注意,pki-server cert-export
命令采用证书 ID 而不是 nickname。为了简单起见,本例中的 nicknames 配置为与证书 ID 相同。
7.4.1.4.6. 管理证书
要使用管理证书,请执行以下操作:
将 CA 签名证书导入到客户端 NSS 数据库中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可以用于访问 CA 子系统克隆:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -n caadmin ca-user-show caadmin
$ pki -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.5. 使用 bootstrap DS 证书使用 LDAPS 安装 CA 克隆
按照以下步骤,将 CA 子系统安装为使用 bootstrap SSL 服务器证书运行的现有 CA 子系统的克隆。
在安装前,请确保已配置了 安装前提条件。
7.4.1.5.1. DS 配置
在克隆系统中完成以上先决条件后,进入现有系统,并将 DS 签名证书导出到
ds_signing.p12
中,使用以下命令将证书复制到克隆系统中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -d /etc/dirsrv/slapd-localhost \ -C /etc/dirsrv/slapd-localhost/pwdfile.txt \ pkcs12-export --pkcs12-file ds_signing.p12 \ --pkcs12-password Secret.123 Self-Signed-CA
$ pki -d /etc/dirsrv/slapd-localhost \ -C /etc/dirsrv/slapd-localhost/pwdfile.txt \ pkcs12-export --pkcs12-file ds_signing.p12 \ --pkcs12-password Secret.123 Self-Signed-CA
使用以下命令将
ds_signing.p12
导入到克隆 DS 实例中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -d /etc/dirsrv/slapd-localhost \ -C /etc/dirsrv/slapd-localhost/pwdfile.txt \ pkcs12-import --pkcs12-file ds_signing.p12 \ --pkcs12-password Secret.123
$ pki -d /etc/dirsrv/slapd-localhost \ -C /etc/dirsrv/slapd-localhost/pwdfile.txt \ pkcs12-import --pkcs12-file ds_signing.p12 \ --pkcs12-password Secret.123
在 DS 克隆上,创建一个 boostrap DS 服务器证书,如 创建 DS 服务器证书 中所述。
请注意,证书主题 DN 应与克隆的主机名匹配,即,--
subject "CN=secondary.example.com
"。- 启用 SSL 连接,如 启用 SSL 连接 中所述。
成功 DS 后,将 DS 签署证书导出到 'ds_signing.crt' 中,如下所示:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
$ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
一些有用的提示:
- 确保 DS 防火墙允许从 PKI 服务器和其他 DS 实例访问。
-
在 LDAP 中没有
dc=pki,dc=example,dc=com
条目会给出与无法连接到 LDAP 服务器相同的错误。
7.4.1.5.2. 导出现有的 CA 系统证书
在现有系统中,使用以下命令导出 CA 系统证书并复制到克隆系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server ca-clone-prepare --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123 pki-server cert-export ca_signing --cert-file ca_signing.crt
$ pki-server ca-clone-prepare --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123 $ pki-server cert-export ca_signing --cert-file ca_signing.crt
以下证书(包括证书链)及其密钥被导出到一个 PKCSautomationhub 文件中:
- CA 签名证书
- OCSP 签名证书
- 审计签名证书
- 子系统证书
请注意,现有的 SSL 服务器证书没有导出。
如有必要,第三方证书(如信任锚)可以使用以下命令添加到同一 PKCSeffort 文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \ pkcs12-cert-import <nickname> \ --pkcs12-file ca-certs.p12 \ --pkcs12-password Secret.123 \ --append
$ pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \ pkcs12-cert-import <nickname> \ --pkcs12-file ca-certs.p12 \ --pkcs12-password Secret.123 \ --append
7.4.1.5.3. SELinux 权限
将
ca-certs.p12
复制到克隆机器后,请确保添加了适当的 SELinux 规则:Copy to Clipboard Copied! Toggle word wrap Toggle overflow semanage fcontext -a -t pki_tomcat_cert_t ca-certs.p12 restorecon -R -v ca-certs.p12
$ semanage fcontext -a -t pki_tomcat_cert_t ca-certs.p12 $ restorecon -R -v ca-certs.p12
确保
ca-certs.p12
文件归pkiuser
所有:Copy to Clipboard Copied! Toggle word wrap Toggle overflow chown pkiuser:pkiuser ca-certs.p12
$ chown pkiuser:pkiuser ca-certs.p12
7.4.1.5.4. 安装 CA 子系统
准备部署配置,如 ca-secure-ds-secondary.cfg
,以部署 CA 子系统克隆。默认情况下,子系统部署到名为 pki-tomcat
的 Tomcat 实例中。
部署配置示例位于 /usr/share/pki/server/examples/installation/ca-secure-ds-secondary.cfg。
它假设:
-
现有的 CA 和 DS 实例在
primary.example.com
上运行。 -
新的 CA 和 DS 克隆安装在
secondary.example.com
上。 -
CA 签名证书已导出到
ca_signing.crt
。 -
admin 证书和密钥已导出到
ca_admin_cert.p12
中。 -
PKCS fulfillment 密码在
pki_client_pkcs12_password
参数中指定。
要启动安装,请执行以下命令:
pkispawn -f ca-secure-ds-secondary.cfg -s CA
$ pkispawn -f ca-secure-ds-secondary.cfg -s CA
7.4.1.5.5. CA 系统证书
安装后,现有 CA 系统证书(包括证书链)及其密钥存储在服务器 NSS 数据库中,即 /var/lib/pki/pki-tomcat/conf/alias
,并为新实例创建新的 SSL 服务器证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
subsystem u,u,u
ca_signing CTu,Cu,Cu
ca_ocsp_signing u,u,u
ca_audit_signing u,u,Pu
ds_signing CT,C,C
sslserver u,u,u
如果需要,可以使用以下命令将克隆 CA 系统证书导出到 PEM 文件中:
pki-server cert-export <cert ID> --cert-file <filename>
$ pki-server cert-export <cert ID> --cert-file <filename>
CA 的有效证书 ID 是:
-
ca_signing
-
ca_ocsp_signing
-
ca_audit_signing
-
subsystem
-
sslserver
请注意,pki-server cert-export
命令采用证书 ID 而不是 nickname。为了简单起见,本例中的 nicknames 配置为与证书 ID 相同。
7.4.1.5.6. 管理证书
要使用管理证书,请执行以下操作:
将 CA 签名证书导入到客户端 NSS 数据库中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
验证 admin 证书可用于访问 CA 子系统克隆,请执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -n caadmin ca-user-show caadmin
$ pki -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.6. 使用自定义 CA 签名密钥安装 CA
按照以下步骤安装带有自定义 CA 签名密钥、CSR 和证书的 CA 子系统。
在安装前,请确保已配置了 安装前提条件。
7.4.1.6.1. 启动 CA 子系统安装
准备一个文件,如
ca-step1.cfg
,其中包含步骤 1 的部署配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [CA] pki_admin_email=caadmin@example.com pki_admin_name=caadmin pki_admin_nickname=caadmin pki_admin_password=Secret.123 pki_admin_uid=caadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com pki_ds_database=ca pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_ca_signing_nickname=ca_signing pki_ocsp_signing_nickname=ca_ocsp_signing pki_audit_signing_nickname=ca_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem pki_external=True pki_external_step_two=False
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [CA] pki_admin_email=caadmin@example.com pki_admin_name=caadmin pki_admin_nickname=caadmin pki_admin_password=Secret.123 pki_admin_uid=caadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com pki_ds_database=ca pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_ca_signing_nickname=ca_signing pki_ocsp_signing_nickname=ca_ocsp_signing pki_audit_signing_nickname=ca_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem pki_external=True pki_external_step_two=False
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ca-step1.cfg -s CA
$ pkispawn -f ca-step1.cfg -s CA
它会在 Tomcat 实例中安装 CA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/ca/alias
由于没有指定 CSR 路径参数,因此默认情况下不生成 CA 签名密钥。
7.4.1.6.2. 生成 CA 签名密钥、CSR 和证书
在服务器 NSS 数据库中生成自定义 CA 签名密钥,然后生成 CSR 并将其存储在文件中,如 ca_signing.csr
。
使用 CSR 发布 CA 签名证书:
- 对于 root CA 安装,生成自签名 CA 签名证书。
- 对于从属 CA 安装,请将 CSR 提交给外部 CA,以发布 CA 签名证书。
将 CA 签名证书存储在文件中,如 ca_signing.crt
。CA 签名证书可以指定为单个证书或 PEM 格式的 PKCS #7 证书链。
如果 CA 签名证书由外部 CA 发布,请将外部 CA 证书链存储在文件中,如 external.crt
。证书链可以指定为单个证书或 PEM 格式的 PKCS #7 证书链。证书链应包含从 root CA 到发布 CA 签名证书的外部 CA 的所有 CA,但它不应包含 CA 签名证书本身。
7.4.1.6.3. 完成 CA 子系统安装
准备另一个文件,如 ca-step2.cfg
,其中包含步骤 2 的部署配置。文件可以从第 1 步中复制,即 ca-step1.cfg
,并有其他更改。
使用以下参数指定第 2 步:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_external_step_two=True
pki_external_step_two=True
使用以下参数指定自定义 CA 签名 CSR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_ca_signing_csr_path=ca_signing.csr
pki_ca_signing_csr_path=ca_signing.csr
使用以下参数指定自定义 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_ca_signing_cert_path=ca_signing.crt
pki_ca_signing_cert_path=ca_signing.crt
如果 CA 签名证书由外部 CA 发布,请使用以下参数指定外部 CA 证书链:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_cert_chain_nickname=external pki_cert_chain_path=external.crt
pki_cert_chain_nickname=external pki_cert_chain_path=external.crt
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ca-step2.cfg -s CA
$ pkispawn -f ca-step2.cfg -s CA
7.4.1.6.4. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
external CT,C,C
ca_signing CTu,Cu,Cu
ca_ocsp_signing u,u,u
subsystem u,u,u
ca_audit_signing u,u,Pu
sslserver u,u,u
7.4.1.6.5. 验证管理证书
导入外部 CA 证书链:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 client-cert-import --ca-cert external.crt
$ pki -c Secret.123 client-cert-import --ca-cert external.crt
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 CA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin ca-user-show caadmin
$ pki -c Secret.123 -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.7. 使用 ECC 安装 CA
按照以下步骤安装带有 ECC 自签名 CA 签名证书的 CA 子系统。
支持的 ECC curves:
- nistp256
- nistp384
- nistp521
支持的 ECC 密钥算法:
- SHA256withEC
- SHA384withEC
- SHA512withEC
在安装前,请确保配置了 安装前提条件。
7.4.1.7.1. 安装 CA 子系统
准备部署配置,如 ca-ecc.cfg
,以部署 CA 子系统。默认情况下,子系统部署到名为 pki-tomcat
的 Tomcat 实例中。
部署配置示例位于 /usr/share/pki/server/examples/installation/ca-ecc.cfg。
要启动安装,请执行以下命令:
pkispawn -f ca-ecc.cfg -s CA
$ pkispawn -f ca-ecc.cfg -s CA
7.4.1.7.2. CA 系统证书
安装 CA 系统证书和密钥后,将存储在服务器 NSS 数据库中(例如 /var/lib/pki/pki-tomcat/conf/alias
):
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CTu,Cu,Cu
ca_ocsp_signing u,u,u
subsystem u,u,u
ca_audit_signing u,u,Pu
sslserver u,u,u
如果需要,可以使用以下命令将证书导出到 PEM 文件中:
pki-server cert-export <cert ID> --cert-file <filename>
$ pki-server cert-export <cert ID> --cert-file <filename>
CA 的有效证书 ID 是:
-
ca_signing
-
ca_ocsp_signing
-
ca_audit_signing
-
subsystem
-
sslserver
请注意,pki-server cert-export
命令采用证书 ID 而不是 nickname。为了简单起见,本例中的 nicknames 配置为与证书 ID 相同。
7.4.1.7.3. 管理证书
安装后,admin 证书和密钥存储在 ~/.dogtag/pki-tomcat/ca_admin_cert.p12
中。PKCS fulfillment 密码在 pki_client_pkcs12_password
参数中指定。
要使用管理证书,请执行以下操作:
从服务器 NSS 数据库导出 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server cert-export ca_signing --cert-file ca_signing.crt
$ pki-server cert-export ca_signing --cert-file ca_signing.crt
将 CA 签名证书导入到客户端 NSS 数据库中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
要验证 admin 证书是否可以用于访问 CA 子系统,请执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -n caadmin ca-user-show caadmin
$ pki -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.8. 在 HSM 中使用现有密钥安装 CA
按照以下步骤,从存储在 HSM 的现有 CA 中安装带有系统密钥、CSR 和证书的 CA 子系统。
为避免与现有 CA 子系统冲突,新的 CA 子系统使用新的 SSL 服务器和子系统证书,因此不会包含在安装过程中。
在安装前,请确保已配置了 安装前提条件。
7.4.1.8.1. 启动 CA 子系统
准备包含步骤 1 中的部署配置的文件,如
ca-step1.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [CA] pki_admin_email=caadmin@example.com pki_admin_name=caadmin pki_admin_nickname=caadmin pki_admin_password=Secret.123 pki_admin_uid=caadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com pki_ds_database=ca pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_ca_signing_nickname=ca_signing pki_ocsp_signing_nickname=ca_ocsp_signing pki_audit_signing_nickname=ca_audit_signing pki_sslserver_nickname=sslserver/pki.example.com pki_subsystem_nickname=subsystem/pki.example.com pki_external=True pki_external_step_two=False
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [CA] pki_admin_email=caadmin@example.com pki_admin_name=caadmin pki_admin_nickname=caadmin pki_admin_password=Secret.123 pki_admin_uid=caadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com pki_ds_database=ca pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_ca_signing_nickname=ca_signing pki_ocsp_signing_nickname=ca_ocsp_signing pki_audit_signing_nickname=ca_audit_signing pki_sslserver_nickname=sslserver/pki.example.com pki_subsystem_nickname=subsystem/pki.example.com pki_external=True pki_external_step_two=False
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ca-step1.cfg -s CA
$ pkispawn -f ca-step1.cfg -s CA
它会在 Tomcat 实例中安装 CA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/ca/alias
由于没有指定 CSR 路径参数,因此它不会生成 CA 系统和 admin 密钥。
7.4.1.8.2. 导出现有系统证书和 CSR
使用以下命令从现有 CA 导出系统证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd -n "HSM:ca_signing" -a > ca_signing.crt certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd -n "HSM:ca_ocsp_signing" -a > ca_ocsp_signing.crt certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd -n "HSM:ca_audit_signing" -a > ca_audit_signing.crt
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd -n "HSM:ca_signing" -a > ca_signing.crt $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd -n "HSM:ca_ocsp_signing" -a > ca_ocsp_signing.crt $ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd -n "HSM:ca_audit_signing" -a > ca_audit_signing.crt
使用以下命令从现有 CA 导出 CSR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_signing.csr sed -n "/^ca.signing.certreq=/ s/^=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_signing.csr $ echo "-----END CERTIFICATE REQUEST-----" >> ca_signing.csr $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_ocsp_signing.csr $ sed -n "/^ca.ocsp_signing.certreq=/ s/[=]=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_ocsp_signing.csr echo "-----END CERTIFICATE REQUEST-----" >> ca_ocsp_signing.csr echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_audit_signing.csr sed -n "/^ca.audit_signing.certreq=/ s/[=]*=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_audit_signing.csr echo "-----END CERTIFICATE REQUEST-----" >> ca_audit_signing.csr
$ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_signing.csr $ sed -n "/^ca.signing.certreq=/ s/^=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_signing.csr $ echo "-----END CERTIFICATE REQUEST-----" >> ca_signing.csr $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_ocsp_signing.csr $ sed -n "/^ca.ocsp_signing.certreq=/ s/[=]=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_ocsp_signing.csr $ echo "-----END CERTIFICATE REQUEST-----" >> ca_ocsp_signing.csr $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_audit_signing.csr $ sed -n "/^ca.audit_signing.certreq=/ s/[=]*=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_audit_signing.csr $ echo "-----END CERTIFICATE REQUEST-----" >> ca_audit_signing.csr
7.4.1.8.3. 完成 CA 子系统安装
准备另一个文件,如 ca-step2.cfg
,其中包含步骤 2 的部署配置。文件可以从第 1 步中复制,即 ca-step1.cfg
,并有其他更改。
使用以下参数指定第 2 步:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_external_step_two=True
pki_external_step_two=True
使用以下参数指定现有证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_ca_signing_cert_path=ca_signing.crt pki_ocsp_signing_cert_path=ca_ocsp_signing.crt pki_audit_signing_cert_path=ca_audit_signing.crt
pki_ca_signing_cert_path=ca_signing.crt pki_ocsp_signing_cert_path=ca_ocsp_signing.crt pki_audit_signing_cert_path=ca_audit_signing.crt
使用以下参数指定现有的 CSR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_ca_signing_csr_path=ca_signing.csr pki_ocsp_signing_csr_path=ca_ocsp_signing.csr pki_audit_signing_csr_path=ca_audit_signing.csr
pki_ca_signing_csr_path=ca_signing.csr pki_ocsp_signing_csr_path=ca_ocsp_signing.csr pki_audit_signing_csr_path=ca_audit_signing.csr
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ca-step2.cfg -s CA
$ pkispawn -f ca-step2.cfg -s CA
7.4.1.8.4. 验证系统证书
验证内部令牌是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI ca_signing CT,C,C ca_audit_signing ,,P
验证 HSM 是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI HSM:ca_signing CTu,Cu,Cu HSM:ca_ocsp_signing u,u,u HSM:subsystem/pki.example.com u,u,u HSM:ca_audit_signing u,u,Pu HSM:sslserver/pki.example.com u,u,u
7.4.1.8.5. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 CA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin ca-user-show caadmin
$ pki -c Secret.123 -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.9. 在内部令牌中使用现有密钥安装 CA
按照以下步骤,从存储在内部令牌中的现有 CA 安装带有系统密钥、CSR 和证书的 CA 子系统。
为避免与现有 CA 子系统冲突,新的 CA 子系统使用新的 SSL 服务器和子系统证书,因此它们不会包含在安装过程中。
在安装前,请确保配置了 安装前提条件。
7.4.1.9.1. 启动 CA 子系统安装
准备一个文件,如 ca-existing-certs-step1.cfg
,其中包含第一个部署配置。
部署配置示例位于 /usr/share/pki/server/examples/installation/ca-existing-certs-step1.cfg。
执行以下命令:
pkispawn -f ca-existing-certs-step1.cfg -s CA
$ pkispawn -f ca-existing-certs-step1.cfg -s CA
它会在 Tomcat 实例中安装 CA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/ca/alias
由于没有指定 CSR 路径参数,因此它不会生成 CA 系统和 admin 密钥。
7.4.1.9.2. 导出现有系统密钥、CSR、证书
使用以下命令,将现有 CA 中的系统密钥和证书导出到 PKCSeffort 文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -d /var/lib/pki/pki-tomcat/conf/alias -c Secret.123 pkcs12-export \ --pkcs12 ca-certs.p12 \ --password Secret.123 pki pkcs12-cert-del --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123 sslserver pki pkcs12-cert-del --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123 subsystem
$ pki -d /var/lib/pki/pki-tomcat/conf/alias -c Secret.123 pkcs12-export \ --pkcs12 ca-certs.p12 \ --password Secret.123 $ pki pkcs12-cert-del --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123 sslserver $ pki pkcs12-cert-del --pkcs12-file ca-certs.p12 --pkcs12-password Secret.123 subsystem
使用以下命令从现有 CA 导出 CSR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_signing.csr sed -n "/^ca.signing.certreq=/ s/^=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_signing.csr $ echo "-----END CERTIFICATE REQUEST-----" >> ca_signing.csr $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_ocsp_signing.csr $ sed -n "/^ca.ocsp_signing.certreq=/ s/[=]=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_ocsp_signing.csr echo "-----END CERTIFICATE REQUEST-----" >> ca_ocsp_signing.csr echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_audit_signing.csr sed -n "/^ca.audit_signing.certreq=/ s/[=]*=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_audit_signing.csr echo "-----END CERTIFICATE REQUEST-----" >> ca_audit_signing.csr
$ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_signing.csr $ sed -n "/^ca.signing.certreq=/ s/^=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_signing.csr $ echo "-----END CERTIFICATE REQUEST-----" >> ca_signing.csr $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_ocsp_signing.csr $ sed -n "/^ca.ocsp_signing.certreq=/ s/[=]=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_ocsp_signing.csr $ echo "-----END CERTIFICATE REQUEST-----" >> ca_ocsp_signing.csr $ echo "-----BEGIN CERTIFICATE REQUEST-----" > ca_audit_signing.csr $ sed -n "/^ca.audit_signing.certreq=/ s/[=]*=// p" < /var/lib/pki/pki-tomcat/conf/ca/CS.cfg >> ca_audit_signing.csr $ echo "-----END CERTIFICATE REQUEST-----" >> ca_audit_signing.csr
7.4.1.9.3. 完成 CA 子系统安装
准备另一个文件,如
ca-existing-certs-step2.cfg
,其中包含第二个部署配置。文件可以从第一个文件创建,即
ca-existing-certs-step1.cfg
,其更改如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_external_step_two=True
pki_external_step_two=True
使用以下参数在 PKCSautomationhub 文件中指定现有密钥和证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_pkcs12_path=ca-certs.p12 pki_pkcs12_password=Secret.123
pki_pkcs12_path=ca-certs.p12 pki_pkcs12_password=Secret.123
使用以下参数指定现有的 CSR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_ca_signing_csr_path=ca_signing.csr pki_ocsp_signing_csr_path=ca_ocsp_signing.csr pki_audit_signing_csr_path=ca_audit_signing.csr
pki_ca_signing_csr_path=ca_signing.csr pki_ocsp_signing_csr_path=ca_ocsp_signing.csr pki_audit_signing_csr_path=ca_audit_signing.csr
部署配置示例位于 /usr/share/pki/server/examples/installation/ca-existing-certs-step2.cfg。
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ca-existing-certs-step2.cfg -s CA
$ pkispawn -f ca-existing-certs-step2.cfg -s CA
7.4.1.9.4. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CTu,Cu,Cu
ca_ocsp_signing u,u,u
subsystem u,u,u
ca_audit_signing u,u,Pu
sslserver u,u,u
7.4.1.9.5. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 CA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin ca-user-show caadmin
$ pki -c Secret.123 -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.10. 使用外部 CA 签名证书安装 CA
外部 CA 是与正在安装的 PKI 子系统相同的安全域中的 CA。
按照以下步骤安装带有外部 CA 签名证书的 CA 子系统。
在安装前,请确保配置了 安装前提条件。
7.4.1.10.1. 启动 CA 子系统安装
准备一个文件,如 ca-external-cert-step1.cfg
,其中包含第一个部署配置。
部署配置示例位于 /usr/share/pki/server/examples/installation/ca-external-cert-step1.cfg
执行以下命令:
pkispawn -f ca-external-cert-step1.cfg -s CA
$ pkispawn -f ca-external-cert-step1.cfg -s CA
它会在 Tomcat 实例中安装 CA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/ca/alias
它还在服务器 NSS 数据库和指定路径中的 CSR 中生成 CA 签名密钥。
7.4.1.10.2. 生成 CA 签名证书
使用 CSR 发布 CA 签名证书:
- 对于 root CA 安装,生成自签名 CA 签名证书。
- 对于从属 CA 安装,请将 CSR 提交给外部 CA,以发布 CA 签名证书。
将 CA 签名证书存储在文件中,如 ca_signing.crt
。CA 签名证书可以指定为单个证书或 PEM 格式的 PKCS #7 证书链。
如果 CA 签名证书由外部 CA 发布,请将外部 CA 证书链存储在文件中,如 root-ca_signing.crt
。
证书链可以指定为单个证书或 PEM 格式的 PKCS #7 证书链。
证书链应包含从 root CA 到发布 CA 签名证书的外部 CA 的所有 CA,但它不应包含 CA 签名证书本身。
7.4.1.10.3. 完成 CA 子系统安装
准备另一个文件,如
ca-external-cert-step2.cfg
,其中包含第二个部署配置。文件可以从第一个文件创建,即ca-external-cert-step1.cfg
,其更改如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_external_step_two=True
pki_external_step_two=True
使用以下参数指定自定义 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_ca_signing_cert_path=ca_signing.crt
pki_ca_signing_cert_path=ca_signing.crt
如果 CA 签名证书由外部 CA 发布,请使用以下参数指定外部 CA 证书链:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_cert_chain_nickname=root-ca_signing pki_cert_chain_path=root-ca_signing.crt
pki_cert_chain_nickname=root-ca_signing pki_cert_chain_path=root-ca_signing.crt
部署配置示例位于 /usr/share/pki/server/examples/installation/ca-external-cert-step2.cfg。
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ca-external-cert-step2.cfg -s CA
$ pkispawn -f ca-external-cert-step2.cfg -s CA
7.4.1.10.4. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
root-ca_signing CT,C,C
ca_signing CTu,Cu,Cu
ca_ocsp_signing u,u,u
subsystem u,u,u
ca_audit_signing u,u,Pu
sslserver u,u,u
7.4.1.10.5. 验证管理证书
导入外部 CA 证书链:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 client-cert-import --ca-cert root-ca_signing.crt
$ pki -c Secret.123 client-cert-import --ca-cert root-ca_signing.crt
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 CA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin ca-user-show caadmin
$ pki -c Secret.123 -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.11. 使用 HSM 安装 CA
按照以下步骤安装带有自签名 CA 签名证书的 CA 子系统,其中系统证书及其密钥存储在 HSM 中。
在安装前,请确保配置了 安装前提条件。
7.4.1.11.1. 安装 CA 子系统
准备包含部署配置的文件,如
ca.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [CA] pki_admin_email=caadmin@example.com pki_admin_name=caadmin pki_admin_nickname=caadmin pki_admin_password=Secret.123 pki_admin_uid=caadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com pki_ds_database=ca pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_ca_signing_nickname=ca_signing pki_ocsp_signing_nickname=ca_ocsp_signing pki_audit_signing_nickname=ca_audit_signing pki_sslserver_nickname=sslserver/pki.example.com pki_subsystem_nickname=subsystem
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [CA] pki_admin_email=caadmin@example.com pki_admin_name=caadmin pki_admin_nickname=caadmin pki_admin_password=Secret.123 pki_admin_uid=caadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ca,dc=pki,dc=example,dc=com pki_ds_database=ca pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_ca_signing_nickname=ca_signing pki_ocsp_signing_nickname=ca_ocsp_signing pki_audit_signing_nickname=ca_audit_signing pki_sslserver_nickname=sslserver/pki.example.com pki_subsystem_nickname=subsystem
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ca.cfg -s CA
$ pkispawn -f ca.cfg -s CA
它会在 Tomcat 实例中安装 CA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/ca/alias
7.4.1.11.2. 验证系统证书
验证内部令牌是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI ca_signing CT,C,C ca_audit_signing ,,P
验证 HSM 是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI HSM:ca_signing CTu,Cu,Cu HSM:ca_ocsp_signing u,u,u HSM:subsystem u,u,u HSM:ca_audit_signing u,u,Pu HSM:sslserver/pki.example.com u,u,u
7.4.1.11.3. 验证 Admin 证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 CA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin ca-user-show caadmin
$ pki -c Secret.123 -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.12. 使用 LDAPS 连接安装 CA
按照以下步骤安装带有安全数据库连接的 CA 子系统。
在安装前,请确保配置了 安装前提条件。
7.4.1.12.1. DS 配置
完成上述先决条件后,如果您选择在 DS 实例创建过程中使用 DS bootstrap 证书,请将 bootstrap 自签名证书导出到 ds_signing.crt
中,如下所示:
certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
$ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
7.4.1.12.2. CA 子系统安装
准备部署配置,如 ca-secure-ds.cfg
,以部署 CA 子系统。默认情况下,子系统部署到名为 pki-tomcat
的 Tomcat 实例中。
部署配置示例位于 /usr/share/pki/server/examples/installation/ca-secure-ds.cfg。
要开始安装,请执行以下命令:
pkispawn -f ca-secure-ds.cfg -s CA
$ pkispawn -f ca-secure-ds.cfg -s CA
7.4.1.12.3. CA 系统证书
安装带有其密钥的 CA 系统证书将生成并存储在服务器 NSS 数据库中,即 /var/lib/pki/pki-tomcat/conf/alias
,DS 签名证书将导入到相同的 NSS 数据库中:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ds_signing CT,C,C
ca_signing CTu,Cu,Cu
ca_ocsp_signing u,u,u
subsystem u,u,u
ca_audit_signing u,u,Pu
sslserver u,u,u
如果需要,可以使用以下命令将 CA 系统证书导出到 PEM 文件中:
pki-server cert-export <cert ID> --cert-file <filename>
$ pki-server cert-export <cert ID> --cert-file <filename>
CA 系统证书的有效 ID 是:
-
ca_signing
-
ca_ocsp_signing
-
ca_audit_signing
-
subsystem
-
sslserver
请注意,pki-server cert-export
命令采用证书 ID 而不是 nickname。为了简单起见,本例中的 nicknames 配置为与证书 ID 相同。
7.4.1.12.4. CA 数据库配置
CA 数据库配置可以使用以下命令显示:
pki-server ca-db-config-show
$ pki-server ca-db-config-show
Hostname: pki.example.com
Port: 636
Secure: true
Authentication: BasicAuth
Bind DN: cn=Directory Manager
Bind Password Prompt: internaldb
Database: ca
Base DN: dc=ca,dc=pki,dc=example,dc=com
Multiple suffix: false
Maximum connections: 15
Minimum connections: 3
7.4.1.12.5. 管理证书
安装后,admin 证书和密钥存储在 ~/.dogtag/pki-tomcat/ca_admin_cert.p12
中。PKCS fulfillment 密码在 pki_client_pkcs12_password
参数中指定。
要使用管理证书,请执行以下操作:
从服务器 NSS 数据库导出 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server cert-export ca_signing --cert-file ca_signing.crt
$ pki-server cert-export ca_signing --cert-file ca_signing.crt
将 CA 签名证书导入到客户端 NSS 数据库中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki pkcs12-import \ --pkcs12 ~/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
要验证 admin 证书是否可以用于访问 CA 子系统,请执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -n caadmin ca-user-show caadmin
$ pki -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.1.12.6. 从 CA 获取真实 DS 证书
如果需要,请按照以下步骤 获取 CA 发布的实际 DS 证书。
7.4.1.13. 安装从属 CA
按照以下步骤,使用根 CA 发布的签名证书安装从属 CA 子系统。
在安装前,请确保配置了 安装前提条件。
7.4.1.13.1. 安装从属 CA 子系统
准备包含部署配置的文件,如
subca.cfg
。部署配置示例位于 /usr/share/pki/server/examples/installation/subca.cfg。
它假定 root CA 已在 https://root.example.com:8443 中运行,root CA 签名证书已导出到
root-ca_signing.crt
中。执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f subca.cfg -s CA
$ pkispawn -f subca.cfg -s CA
它会在 Tomcat 实例中安装 CA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/ca/alias
7.4.1.13.2. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CTu,Cu,Cu
ca_ocsp_signing u,u,u
subsystem u,u,u
ca_audit_signing u,u,Pu
sslserver u,u,u
7.4.1.13.3. 验证管理证书
导入 root CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki pkcs12-import \ --pkcs12 /root/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki pkcs12-import \ --pkcs12 /root/.dogtag/pki-tomcat/ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书可用于访问从属 CA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -n caadmin ca-user-show caadmin
$ pki -n caadmin ca-user-show caadmin -------------- User "caadmin" -------------- User ID: caadmin Full name: caadmin Email: caadmin@example.com Type: adminType State: 1
7.4.2. 安装 KRA 子系统
7.4.2.1. 安装 KRA
按照以下步骤安装 KRA 子系统。
在安装前,请确保配置了 安装前提条件。
7.4.2.1.1. 安装 KRA 子系统安装
-
准备包含部署配置的文件,如
kra.cfg
。部署配置示例位于 /usr/share/pki/server/examples/installation/kra.cfg。 执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f kra.cfg -s KRA
$ pkispawn -f kra.cfg -s KRA
它会在 Tomcat 实例中安装 KRA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/kra/alias
当在没有其他子系统的新系统上安装 KRA 时,需要提供 CA 的 root 证书。在 pki_cert_chain_path
中指定 CA PKCS Serial7 PEM 文件的路径。这允许服务器在联系安全域时验证 CA 的 SSL 服务器证书。在 KRA 安装之前,管理员可以安全地将 CA root 证书(仅限公钥!)传输到系统。
7.4.2.1.2. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CT,C,C
kra_transport u,u,u
kra_storage u,u,u
subsystem u,u,u
kra_audit_signing u,u,Pu
sslserver u,u,u
7.4.2.1.3. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 KRA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin kra-user-show kraadmin
$ pki -c Secret.123 -n caadmin kra-user-show kraadmin --------------- User "kraadmin" --------------- User ID: kraadmin Full name: kraadmin Email: kraadmin@example.com Type: adminType State: 1
7.4.2.1.4. 验证 KRA 连接器
验证 KRA 连接器是否在 CA 子系统中配置:
pki -c Secret.123 -n caadmin ca-kraconnector-show
$ pki -c Secret.123 -n caadmin ca-kraconnector-show
Host: pki.example.com:8443
Enabled: true
Local: false
Timeout: 30
URI: /kra/agent/kra/connector
Transport Cert:
<base-64 certificate>
7.4.2.2. 安装 KRA 克隆
按照以下步骤将 KRA 子系统安装为现有 KRA 子系统的克隆。
在安装前,请确保配置了 安装前提条件。
7.4.2.2.1. 导出现有的 KRA 系统证书
在现有系统中,使用以下命令导出 KRA 系统证书:
pki-server kra-clone-prepare \ --pkcs12-file kra-certs.p12 \ --pkcs12-password Secret.123
$ pki-server kra-clone-prepare \
--pkcs12-file kra-certs.p12 \
--pkcs12-password Secret.123
命令将以下证书(包括证书链)及其密钥导出到 PKCSautomationhub 文件中:
- KRA 存储证书
- KRA 传输证书
- 审计签名证书
- 子系统证书
请注意,现有的 SSL 服务器证书没有导出。
如有必要,第三方证书(如信任锚)可以使用以下命令添加到同一 PKCSeffort 文件中:
pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \ pkcs12-cert-import <nickname> \ --pkcs12-file kra-certs.p12 \ --pkcs12-password Secret.123 \ --append
$ pki -d /var/lib/pki/pki-tomcat/conf/alias -f /var/lib/pki/pki-tomcat/conf/password.conf \
pkcs12-cert-import <nickname> \
--pkcs12-file kra-certs.p12 \
--pkcs12-password Secret.123 \
--append
7.4.2.2.2. 安装 KRA 子系统
准备部署配置,如 kra-clone.cfg
,以部署 KRA 子系统克隆。默认情况下,子系统部署到名为 pki-tomcat
的 Tomcat 实例中。
部署配置示例位于 /usr/share/pki/server/examples/installation/kra-clone.cfg。
它假设:
- 主 CA 和 KRA 子系统在 https://primary.example.com:8443 中运行。
-
CA 签名证书已导出到
ca_signing.crt
。 -
管理证书和密钥已导出到
ca_admin_cert.p12
中。 -
PKCS fulfillment 密码在
pki_client_pkcs12_password
参数中指定。
要启动安装,请执行以下命令:
pkispawn -f kra-clone.cfg -s KRA
$ pkispawn -f kra-clone.cfg -s KRA
7.4.2.2.3. KRA 系统证书
安装后,现有 KRA 系统证书(包括证书链)及其密钥存储在服务器 NSS 数据库中(例如 /var/lib/pki/pki-tomcat/conf/alias
),并为新实例创建新的 SSL 服务器证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CT,C,C
kra_storage u,u,u
sslserver u,u,u
subsystem u,u,u
kra_audit_signing u,u,Pu
kra_transport u,u,u
如果需要,可以使用以下命令将证书导出到 PEM 文件中:
pki-server cert-export <cert ID> --cert-file <filename>
$ pki-server cert-export <cert ID> --cert-file <filename>
KRA 的有效证书 ID 是:
-
kra_storage_signing
-
kra_transport_signing
-
kra_audit_signing
-
subsystem
-
sslserver
请注意,pki-server cert-export
命令采用证书 ID 而不是 nickname。为了简单起见,本例中的 nicknames 配置为与证书 ID 相同。
7.4.2.2.4. 管理证书
要使用管理证书,请执行以下操作:
将 CA 签名证书导入到客户端 NSS 数据库中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
要验证 admin 证书是否可以用于访问 KRA 子系统克隆,请执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -n caadmin kra-user-show kraadmin
$ pki -n caadmin kra-user-show kraadmin --------------- User "kraadmin" --------------- User ID: kraadmin Full name: kraadmin Email: kraadmin@example.com Type: adminType State: 1
7.4.2.3. 使用 HSM 安装 KRA 克隆
按照以下步骤将 KRA 子系统安装为现有 KRA 子系统的克隆,其中系统证书及其密钥存储在 HSM 中。
由于证书和密钥已在 HSM 上,因此不需要将它们导出到 PKCSrhgs 文件来创建克隆。
在安装前,请确保配置了 安装前提条件。
7.4.2.3.1. 安装 KRA 子系统
注意:假设 CA 签名证书已导出到 ca_signing.crt
中。
准备包含部署配置的文件,如
kra.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM pki_cert_chain_path=ca_signing.crt [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [KRA] pki_admin_email=kraadmin@example.com pki_admin_name=kraadmin pki_admin_nickname=kraadmin pki_admin_password=Secret.123 pki_admin_uid=kraadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com pki_ds_database=kra pki_ds_password=Secret.123 pki_security_domain_hostname=pki.example.com pki_security_domain_https_port=8443 pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_storage_nickname=kra_storage pki_transport_nickname=kra_transport pki_audit_signing_nickname=kra_audit_signing pki_sslserver_nickname=sslserver/replica.example.com pki_subsystem_nickname=subsystem pki_storage_token=HSM pki_transport_token=HSM pki_audit_signing_token=HSM pki_sslserver_token=HSM pki_subsystem_token=HSM pki_clone=True pki_clone_replicate_schema=True pki_clone_uri=https://pki.example.com:8443
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM pki_cert_chain_path=ca_signing.crt [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [KRA] pki_admin_email=kraadmin@example.com pki_admin_name=kraadmin pki_admin_nickname=kraadmin pki_admin_password=Secret.123 pki_admin_uid=kraadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com pki_ds_database=kra pki_ds_password=Secret.123 pki_security_domain_hostname=pki.example.com pki_security_domain_https_port=8443 pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_storage_nickname=kra_storage pki_transport_nickname=kra_transport pki_audit_signing_nickname=kra_audit_signing pki_sslserver_nickname=sslserver/replica.example.com pki_subsystem_nickname=subsystem pki_storage_token=HSM pki_transport_token=HSM pki_audit_signing_token=HSM pki_sslserver_token=HSM pki_subsystem_token=HSM pki_clone=True pki_clone_replicate_schema=True pki_clone_uri=https://pki.example.com:8443
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f kra.cfg -s KRA
$ pkispawn -f kra.cfg -s KRA
它会在 Tomcat 实例中安装 KRA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/kra/alias
7.4.2.3.2. 验证系统证书
验证内部令牌是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI ca_signing CT,C,C sslserver/replica.example.com ,, kra_audit_signing ,,P
验证 HSM 是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI HSM:kra_transport u,u,u HSM:kra_storage u,u,u HSM:subsystem u,u,u HSM:kra_audit_signing u,u,Pu HSM:sslserver/replica.example.com u,u,u
7.4.2.3.3. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 KRA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin kra-user-show kraadmin
$ pki -c Secret.123 -n caadmin kra-user-show kraadmin --------------- User "kraadmin" --------------- User ID: kraadmin Full name: kraadmin Email: kraadmin@example.com Type: adminType State: 1
7.4.2.3.4. 验证 KRA 连接器
验证 KRA 连接器是否在 CA 子系统中配置:
pki -c Secret.123 -n caadmin ca-kraconnector-show
$ pki -c Secret.123 -n caadmin ca-kraconnector-show
Host: pki.example.com:8443
Enabled: true
Local: false
Timeout: 30
URI: /kra/agent/kra/connector
Transport Cert:
<base-64 certificate>
7.4.2.4. 使用 ECC 安装 KRA
按照以下步骤,使用 ECC 安装 KRA 子系统。
支持的 ECC curves:
- nistp256
- nistp384
- nistp521
支持的 ECC 密钥算法:
- SHA256withEC
- SHA384withEC
- SHA512withEC
在安装前,请确保配置了 安装前提条件。
7.4.2.4.1. 安装 KRA 子系统
准备包含部署配置的文件,如
kra.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [KRA] pki_admin_cert_file=ca_admin.cert pki_admin_email=kraadmin@example.com pki_admin_name=kraadmin pki_admin_nickname=kraadmin pki_admin_password=Secret.123 pki_admin_uid=kraadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com pki_ds_database=kra pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_storage_nickname=kra_storage pki_storage_key_type=rsa pki_storage_key_algorithm=SHA512withRSA pki_storage_key_size=2048 pki_storage_signing_algorithm=SHA512withRSA pki_transport_nickname=kra_transport pki_transport_key_type=rsa pki_transport_key_algorithm=SHA512withRSA pki_transport_key_size=2048 pki_transport_signing_algorithm=SHA512withRSA pki_audit_signing_nickname=kra_audit_signing pki_audit_signing_key_type=ecc pki_audit_signing_key_algorithm=SHA512withEC pki_audit_signing_key_size=nistp521 pki_audit_signing_signing_algorithm=SHA512withEC pki_sslserver_nickname=sslserver pki_sslserver_key_type=ecc pki_sslserver_key_algorithm=SHA512withEC pki_sslserver_key_size=nistp521 pki_subsystem_nickname=subsystem pki_subsystem_key_type=ecc pki_subsystem_key_algorithm=SHA512withEC pki_subsystem_key_size=nistp521
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [KRA] pki_admin_cert_file=ca_admin.cert pki_admin_email=kraadmin@example.com pki_admin_name=kraadmin pki_admin_nickname=kraadmin pki_admin_password=Secret.123 pki_admin_uid=kraadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com pki_ds_database=kra pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_storage_nickname=kra_storage pki_storage_key_type=rsa pki_storage_key_algorithm=SHA512withRSA pki_storage_key_size=2048 pki_storage_signing_algorithm=SHA512withRSA pki_transport_nickname=kra_transport pki_transport_key_type=rsa pki_transport_key_algorithm=SHA512withRSA pki_transport_key_size=2048 pki_transport_signing_algorithm=SHA512withRSA pki_audit_signing_nickname=kra_audit_signing pki_audit_signing_key_type=ecc pki_audit_signing_key_algorithm=SHA512withEC pki_audit_signing_key_size=nistp521 pki_audit_signing_signing_algorithm=SHA512withEC pki_sslserver_nickname=sslserver pki_sslserver_key_type=ecc pki_sslserver_key_algorithm=SHA512withEC pki_sslserver_key_size=nistp521 pki_subsystem_nickname=subsystem pki_subsystem_key_type=ecc pki_subsystem_key_algorithm=SHA512withEC pki_subsystem_key_size=nistp521
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f kra.cfg -s KRA
$ pkispawn -f kra.cfg -s KRA
它会在 Tomcat 实例中安装 KRA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/kra/alias
7.4.2.4.2. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CT,C,C
kra_transport u,u,u
kra_storage u,u,u
subsystem u,u,u
kra_audit_signing u,u,Pu
sslserver u,u,u
7.4.2.4.3. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 KRA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin kra-user-show kraadmin
$ pki -c Secret.123 -n caadmin kra-user-show kraadmin -------------- User "kraadmin" -------------- User ID: kraadmin Full name: kraadmin Email: kraadmin@example.com Type: adminType State: 1
7.4.2.5. 使用 HSM 安装 KRA
按照以下步骤安装 KRA 子系统,其中系统证书及其密钥存储在 HSM 中。
在安装前,请确保配置了 安装前提条件。
7.4.2.5.1. 安装 KRA 子系统
准备包含部署配置的文件,如
kra.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [KRA] pki_admin_cert_file=ca_admin.cert pki_admin_email=kraadmin@example.com pki_admin_name=kraadmin pki_admin_nickname=kraadmin pki_admin_password=Secret.123 pki_admin_uid=kraadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com pki_ds_database=kra pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_storage_nickname=kra_storage pki_transport_nickname=kra_transport pki_audit_signing_nickname=kra_audit_signing pki_sslserver_nickname=sslserver/pki.example.com pki_subsystem_nickname=subsystem
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [KRA] pki_admin_cert_file=ca_admin.cert pki_admin_email=kraadmin@example.com pki_admin_name=kraadmin pki_admin_nickname=kraadmin pki_admin_password=Secret.123 pki_admin_uid=kraadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com pki_ds_database=kra pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_storage_nickname=kra_storage pki_transport_nickname=kra_transport pki_audit_signing_nickname=kra_audit_signing pki_sslserver_nickname=sslserver/pki.example.com pki_subsystem_nickname=subsystem
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f kra.cfg -s KRA
$ pkispawn -f kra.cfg -s KRA
它会在 Tomcat 实例中安装 KRA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/kra/alias
7.4.2.5.2. 验证系统证书
验证内部令牌是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI ca_signing CT,C,C kra_audit_signing ,,P
验证 HSM 是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI HSM:kra_transport u,u,u HSM:kra_storage u,u,u HSM:subsystem u,u,u HSM:kra_audit_signing u,u,Pu HSM:sslserver/pki.example.com u,u,u
7.4.2.5.3. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 KRA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin kra-user-show kraadmin
$ pki -c Secret.123 -n caadmin kra-user-show kraadmin --------------- User "kraadmin" --------------- User ID: kraadmin Full name: kraadmin Email: kraadmin@example.com Type: adminType State: 1
7.4.2.5.4. 验证 KRA 连接器
验证 KRA 连接器是否在 CA 子系统中配置:
pki -c Secret.123 -n caadmin ca-kraconnector-show
$ pki -c Secret.123 -n caadmin ca-kraconnector-show
Host: pki.example.com:8443
Enabled: true
Local: false
Timeout: 30
URI: /kra/agent/kra/connector
Transport Cert:
<base-64 certificate>
7.4.2.6. 使用 LDAPS 连接安装 KRA
按照以下步骤安装带有安全数据库连接的 KRA 子系统。
在安装前,请确保配置了 安装前提条件。
7.4.2.6.1. DS 配置
配置上述先决条件后,如果您选择在 DS 实例创建过程中使用 DS bootstrap 证书,请将 bootstrap 自签名证书导出到 ds_signing.crt
中,如下所示:
certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
$ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
7.4.2.6.2. 安装 KRA 子系统
准备包含部署配置的文件,如
kra.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_server_database_password=Secret.123 [KRA] pki_admin_cert_file=ca_admin.cert pki_admin_email=kraadmin@example.com pki_admin_name=kraadmin pki_admin_nickname=kraadmin pki_admin_password=Secret.123 pki_admin_uid=kraadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldaps://localhost.localdomain:636 pki_ds_secure_connection_ca_nickname=ds_signing pki_ds_secure_connection_ca_pem_file=ds_signing.crt pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com pki_ds_database=kra pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_storage_nickname=kra_storage pki_transport_nickname=kra_transport pki_audit_signing_nickname=kra_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
[DEFAULT] pki_server_database_password=Secret.123 [KRA] pki_admin_cert_file=ca_admin.cert pki_admin_email=kraadmin@example.com pki_admin_name=kraadmin pki_admin_nickname=kraadmin pki_admin_password=Secret.123 pki_admin_uid=kraadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldaps://localhost.localdomain:636 pki_ds_secure_connection_ca_nickname=ds_signing pki_ds_secure_connection_ca_pem_file=ds_signing.crt pki_ds_base_dn=dc=kra,dc=pki,dc=example,dc=com pki_ds_database=kra pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_storage_nickname=kra_storage pki_transport_nickname=kra_transport pki_audit_signing_nickname=kra_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f kra.cfg -s KRA
$ pkispawn -f kra.cfg -s KRA
它会在 Tomcat 实例中安装 KRA 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/kra/alias
7.4.2.6.3. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ds_signing CT,C,C
ca_signing CT,C,C
kra_transport u,u,u
kra_storage u,u,u
subsystem u,u,u
kra_audit_signing u,u,Pu
sslserver u,u,u
7.4.2.6.4. 验证数据库配置
验证 KRA 数据库是否配置了安全连接:
pki-server kra-db-config-show
$ pki-server kra-db-config-show
Hostname: pki.example.com
Port: 636
Secure: true
Authentication: BasicAuth
Bind DN: cn=Directory Manager
Bind Password Prompt: internaldb
Database: kra
Base DN: dc=kra,dc=pki,dc=example,dc=com
Multiple suffix: false
Maximum connections: 15
Minimum connections: 3
7.4.2.6.5. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 KRA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin kra-user-show kraadmin
$ pki -c Secret.123 -n caadmin kra-user-show kraadmin --------------- User "kraadmin" --------------- User ID: kraadmin Full name: kraadmin Email: kraadmin@example.com Type: adminType State: 1
7.4.2.6.6. 验证 KRA 连接器
验证 KRA 连接器是否在 CA 子系统中配置:
pki -c Secret.123 -n caadmin ca-kraconnector-show
$ pki -c Secret.123 -n caadmin ca-kraconnector-show
Host: pki.example.com:8443
Enabled: true
Local: false
Timeout: 30
URI: /kra/agent/kra/connector
Transport Cert:
<base-64 certificate>
7.4.2.6.7. 从 CA 获取真实 DS 证书
如果需要,请按照以下步骤 获取 CA 发布的实际 DS 证书。
7.4.2.7. 安装独立 KRA
按照以下步骤安装独立 KRA 子系统。
在 常规的 KRA 安装中,CA 会自动发布 KRA 证书,KRA 将加入 CA 的安全域。
在独立 KRA 安装中,KRA 证书被手动发布,KRA 有自己的安全域。
安装过程由多个步骤组成:
- 生成证书请求
- 发布证书
- 使用证书完成安装
7.4.2.7.1. 生成证书请求
准备包含第一个部署配置的文件,如
kra-standalone-step1.cfg
。部署配置示例位于 /usr/share/pki/server/examples/installation/kra-standalone-step1.cfg。
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f kra-standalone-step1.cfg -s KRA
$ pkispawn -f kra-standalone-step1.cfg -s KRA
它在 /var/lib/pki/pki-tomcat/alias
中创建 NSS 数据库,并在指定的路径中生成 CSR。
7.4.2.7.2. 发布证书
通过向外部 CA 提交 CSR 以发布 KRA 系统证书,使用 CSR 获取 KRA 证书。在以下部分中,假设 KRA 系统证书存储在以下文件中:
- kra_storage.crt
- kra_transport.crt
- subsystem.crt
- sslserver.crt
- kra_audit_signing.crt
- kra_admin.crt
7.4.2.7.3. 完成安装
准备另一个文件,如
kra-standalone-step2.cfg
,其中包含第二个部署配置。文件可以从第一个文件(即kra-standalone-step1.cfg
)创建,其更改如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_external_step_two=True
pki_external_step_two=True
使用以下参数指定证书文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_storage_cert_path=kra_storage.crt pki_transport_cert_path=kra_transport.crt pki_subsystem_cert_path=subsystem.crt pki_sslserver_cert_path=sslserver.crt pki_audit_signing_cert_path=kra_audit_signing.crt pki_admin_cert_path=kra_admin.crt
pki_storage_cert_path=kra_storage.crt pki_transport_cert_path=kra_transport.crt pki_subsystem_cert_path=subsystem.crt pki_sslserver_cert_path=sslserver.crt pki_audit_signing_cert_path=kra_audit_signing.crt pki_admin_cert_path=kra_admin.crt
每个证书文件都可以包含单个 PEM 证书或 PKCS #7 证书链。
使用以下参数指定 CA 证书链:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_cert_chain_nickname=ca_signing pki_cert_chain_path=ca_signing.crt
pki_cert_chain_nickname=ca_signing pki_cert_chain_path=ca_signing.crt
CA 证书链文件也可以包含单个 PEM 证书或 PKCS #7 证书链。
部署配置示例位于 /usr/share/pki/server/examples/installation/kra-standalone-step2.cfg。
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f kra-standalone-step2.cfg -s KRA
$ pkispawn -f kra-standalone-step2.cfg -s KRA
7.4.2.7.4. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki pkcs12-import \ --pkcs12 kra_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki pkcs12-import \ --pkcs12 kra_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 KRA 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -n kraadmin kra-user-show kraadmin
$ pki -n kraadmin kra-user-show kraadmin --------------- User "kraadmin" --------------- User ID: kraadmin Full name: kraadmin Email: kraadmin@example.com Type: adminType State: 1
7.4.3. 安装 OCSP 子系统
7.4.3.1. 安装 OCSP
按照以下步骤安装 OCSP 子系统。
在安装前,请确保配置了 安装前提条件。
7.4.3.1.1. 安装 OCSP 子系统
-
准备包含部署配置的文件,如
ocsp.cfg
。部署配置示例位于 /usr/share/pki/server/examples/installation/ocsp.cfg。 执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ocsp.cfg -s OCSP
$ pkispawn -f ocsp.cfg -s OCSP
它会在 Tomcat 实例中安装 OCSP 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/ocsp/alias
当在没有其他子系统的新系统上安装 OCSP 时,需要提供 CA 的 root 证书。在 pki_cert_chain_path
中指定 CA PKCS Serial7 PEM 文件的路径。这允许服务器在联系安全域时验证 CA 的 SSL 服务器证书。在 OCSP 安装前,管理员最多可安全地将 CA root 证书(仅限公钥)传输到系统。
7.4.3.1.2. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CT,C,C
ocsp_signing u,u,u
subsystem u,u,u
ocsp_audit_signing u,u,Pu
sslserver u,u,u
7.4.3.1.3. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 OCSP 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin
$ pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin ---------------- User "ocspadmin" ---------------- User ID: ocspadmin Full name: ocspadmin Email: ocspadmin@example.com Type: adminType State: 1
7.4.3.1.4. 验证 OCSP 客户端
将 CA 中的 CRL 发布到目录服务器,如下所示:
- 进入 CA Agent UI (https://pki.example.com:8443/ca/agent/ca/)。
- 单击 Update Directory Server。
- 选择 将证书撤销列表更新为目录。
- 单击 Update Directory。
验证 OCSPClient 是否可用于验证证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OCSPClient \ -d /var/lib/pki/pki-tomcat/conf/alias \ -h pki.example.com \ -p 8080 \ -t /ocsp/ee/ocsp \ -c ca_signing \ --serial 1
$ OCSPClient \ -d /var/lib/pki/pki-tomcat/conf/alias \ -h pki.example.com \ -p 8080 \ -t /ocsp/ee/ocsp \ -c ca_signing \ --serial 1 CertID.serialNumber=1 CertStatus=Good
7.4.3.2. 使用 ECC 安装 OCSP
按照以下步骤使用 ECC 安装 OCSP 子系统。
支持的 ECC curves:
- nistp256
- nistp384
- nistp521
支持的 ECC 密钥算法:
- SHA256withEC
- SHA384withEC
- SHA512withEC
在安装前,请确保配置了 安装前提条件。
7.4.3.2.1. 安装 OCSP 子系统
准备包含部署配置的文件,如
ocsp.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [OCSP] pki_admin_cert_file=ca_admin.cert pki_admin_email=ocspadmin@example.com pki_admin_name=ocspadmin pki_admin_nickname=ocspadmin pki_admin_password=Secret.123 pki_admin_uid=ocspadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com pki_ds_database=ocsp pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_ocsp_signing_nickname=ocsp_signing pki_ocsp_signing_key_type=ecc pki_ocsp_signing_key_algorithm=SHA512withEC pki_ocsp_signing_key_size=nistp521 pki_audit_signing_nickname=ocsp_audit_signing pki_audit_signing_key_type=ecc pki_audit_signing_key_algorithm=SHA512withEC pki_audit_signing_key_size=nistp521 pki_audit_signing_signing_algorithm=SHA512withEC pki_sslserver_nickname=sslserver pki_sslserver_key_type=ecc pki_sslserver_key_algorithm=SHA512withEC pki_sslserver_key_size=nistp521 pki_subsystem_nickname=subsystem pki_subsystem_key_type=ecc pki_subsystem_key_algorithm=SHA512withEC pki_subsystem_key_size=nistp521
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [OCSP] pki_admin_cert_file=ca_admin.cert pki_admin_email=ocspadmin@example.com pki_admin_name=ocspadmin pki_admin_nickname=ocspadmin pki_admin_password=Secret.123 pki_admin_uid=ocspadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com pki_ds_database=ocsp pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_ocsp_signing_nickname=ocsp_signing pki_ocsp_signing_key_type=ecc pki_ocsp_signing_key_algorithm=SHA512withEC pki_ocsp_signing_key_size=nistp521 pki_audit_signing_nickname=ocsp_audit_signing pki_audit_signing_key_type=ecc pki_audit_signing_key_algorithm=SHA512withEC pki_audit_signing_key_size=nistp521 pki_audit_signing_signing_algorithm=SHA512withEC pki_sslserver_nickname=sslserver pki_sslserver_key_type=ecc pki_sslserver_key_algorithm=SHA512withEC pki_sslserver_key_size=nistp521 pki_subsystem_nickname=subsystem pki_subsystem_key_type=ecc pki_subsystem_key_algorithm=SHA512withEC pki_subsystem_key_size=nistp521
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ocsp.cfg -s OCSP
$ pkispawn -f ocsp.cfg -s OCSP
它会在 Tomcat 实例中安装 OCSP 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/kra/alias
7.4.3.2.2. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CT,C,C
subsystem u,u,u
ocsp_audit_signing u,u,Pu
ocsp_signing u,u,u
sslserver u,u,u
7.4.3.2.3. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 OCSP 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin
$ pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin -------------- User "ocspadmin" -------------- User ID: ocspadmin Full name: ocspadmin Email: ocspadmin@example.com Type: adminType State: 1
7.4.3.3. 使用 HSM 安装 OCSP
按照以下步骤安装一个 OCSP 子系统,系统证书及其密钥存储在 HSM 中。
在安装前,请确保配置了 安装前提条件。
7.4.3.3.1. 安装 OCSP 子系统
准备包含部署配置的文件,如
ocsp.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [OCSP] pki_admin_cert_file=ca_admin.cert pki_admin_email=ocspadmin@example.com pki_admin_name=ocspadmin pki_admin_nickname=ocspadmin pki_admin_password=Secret.123 pki_admin_uid=ocspadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com pki_ds_database=ocsp pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_ocsp_signing_nickname=ocsp_signing pki_audit_signing_nickname=ocsp_audit_signing pki_sslserver_nickname=sslserver/pki.example.com pki_subsystem_nickname=subsystem
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [OCSP] pki_admin_cert_file=ca_admin.cert pki_admin_email=ocspadmin@example.com pki_admin_name=ocspadmin pki_admin_nickname=ocspadmin pki_admin_password=Secret.123 pki_admin_uid=ocspadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com pki_ds_database=ocsp pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_ocsp_signing_nickname=ocsp_signing pki_audit_signing_nickname=ocsp_audit_signing pki_sslserver_nickname=sslserver/pki.example.com pki_subsystem_nickname=subsystem
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ocsp.cfg -s OCSP
$ pkispawn -f ocsp.cfg -s OCSP
它会在 Tomcat 实例中安装 OCSP 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/ocsp/alias
7.4.3.3.2. 验证系统证书
验证内部令牌是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI ca_signing CT,C,C ocsp_audit_signing ,,P
验证 HSM 是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI HSM:ocsp_signing u,u,u HSM:subsystem u,u,u HSM:ocsp_audit_signing u,u,Pu HSM:sslserver/pki.example.com u,u,u
7.4.3.3.3. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 OCSP 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin
$ pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin ---------------- User "ocspadmin" ---------------- User ID: ocspadmin Full name: ocspadmin Email: ocspadmin@example.com Type: adminType State: 1
7.4.3.3.4. 验证 OCSP 客户端
将 CA 中的 CRL 发布到目录服务器,如下所示:
- 进入 CA Agent UI (https://pki.example.com:8443/ca/agent/ca/)。
- 单击 Update Directory Server。
- 选择 将证书撤销列表更新为目录。
- 单击 Update Directory。
验证 OCSPClient 是否可用于验证证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OCSPClient \ -d /var/lib/pki/pki-tomcat/conf/alias \ -h pki.example.com \ -p 8080 \ -t /ocsp/ee/ocsp \ -c ca_signing \ --serial 1
$ OCSPClient \ -d /var/lib/pki/pki-tomcat/conf/alias \ -h pki.example.com \ -p 8080 \ -t /ocsp/ee/ocsp \ -c ca_signing \ --serial 1 CertID.serialNumber=1 CertStatus=Good
7.4.3.4. 使用 LDAPS 连接安装 OCSP
按照以下步骤安装带有安全数据库连接的 OCSP 子系统。
在安装前,请确保配置了 安装前提条件。
7.4.3.4.1. DS 配置
完成上述先决条件后,如果您选择在 DS 实例创建过程中使用 DS bootstrap 证书,请将 bootstrap 自签名证书导出到 ds_signing.crt
中,如下所示
certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
$ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
7.4.3.4.2. 安装 OCSP 子系统
准备包含部署配置的文件,如
ocsp.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [OCSP] pki_admin_cert_file=ca_admin.cert pki_admin_email=ocspadmin@example.com pki_admin_name=ocspadmin pki_admin_nickname=ocspadmin pki_admin_password=Secret.123 pki_admin_uid=ocspadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldaps://localhost.localdomain:636 pki_ds_secure_connection_ca_nickname=ds_signing pki_ds_secure_connection_ca_pem_file=ds_signing.crt pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com pki_ds_database=ocsp pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_ocsp_signing_nickname=ocsp_signing pki_audit_signing_nickname=ocsp_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [OCSP] pki_admin_cert_file=ca_admin.cert pki_admin_email=ocspadmin@example.com pki_admin_name=ocspadmin pki_admin_nickname=ocspadmin pki_admin_password=Secret.123 pki_admin_uid=ocspadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldaps://localhost.localdomain:636 pki_ds_secure_connection_ca_nickname=ds_signing pki_ds_secure_connection_ca_pem_file=ds_signing.crt pki_ds_base_dn=dc=ocsp,dc=pki,dc=example,dc=com pki_ds_database=ocsp pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_ocsp_signing_nickname=ocsp_signing pki_audit_signing_nickname=ocsp_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ocsp.cfg -s OCSP
$ pkispawn -f ocsp.cfg -s OCSP
它会在 Tomcat 实例中安装 OCSP 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/ocsp/alias
7.4.3.4.3. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ds_signing CT,C,C
ca_signing CT,C,C
ocsp_signing u,u,u
subsystem u,u,u
ocsp_audit_signing u,u,Pu
sslserver u,u,u
7.4.3.4.4. 验证数据库配置
验证 OCSP 数据库是否配置了安全连接:
pki-server ocsp-db-config-show
$ pki-server ocsp-db-config-show
Hostname: pki.example.com
Port: 636
Secure: true
Authentication: BasicAuth
Bind DN: cn=Directory Manager
Bind Password Prompt: internaldb
Database: ocsp
Base DN: dc=ocsp,dc=pki,dc=example,dc=com
Multiple suffix: false
Maximum connections: 15
Minimum connections: 3
7.4.3.4.5. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 OCSP 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin
$ pki -c Secret.123 -n caadmin ocsp-user-show ocspadmin ---------------- User "ocspadmin" ---------------- User ID: ocspadmin Full name: ocspadmin Email: ocspadmin@example.com Type: adminType State: 1
7.4.3.4.6. 验证 OCSP 客户端
将 CA 中的 CRL 发布到目录服务器,如下所示:
- 进入 CA Agent UI (https://pki.example.com:8443/ca/agent/ca/)。
- 单击 Update Directory Server。
- 选择 将证书撤销列表更新为目录。
- 单击 Update Directory。
验证 OCSPClient 是否可用于验证证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OCSPClient \ -d /var/lib/pki/pki-tomcat/conf/alias \ -h pki.example.com \ -p 8080 \ -t /ocsp/ee/ocsp \ -c ca_signing \ --serial 1
$ OCSPClient \ -d /var/lib/pki/pki-tomcat/conf/alias \ -h pki.example.com \ -p 8080 \ -t /ocsp/ee/ocsp \ -c ca_signing \ --serial 1 CertID.serialNumber=1 CertStatus=Good
7.4.3.4.7. 从 CA 获取真实 DS 证书
如果需要,请按照以下步骤 获取 CA 发布的实际 DS 证书。
7.4.3.5. 安装独立 OCSP
按照以下步骤安装独立 OCSP 子系统。
在常规 OCSP 安装中,CA 会自动发布 OCSP 证书,OCSP 将加入 CA 的安全域。
在独立 OCSP 安装过程中,会手动发布 OCSP 证书,OCSP 有自己的安全域。
安装过程由多个步骤组成:
- 生成证书请求
- 发布证书
- 使用证书完成安装
7.4.3.5.1. 生成证书请求
准备一个文件,如
ocsp-standalone-step1.cfg
,其中包含第一个部署配置。部署配置示例位于 /usr/share/pki/server/examples/installation/ocsp-standalone-step1.cfg。
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ocsp-standalone-step1.cfg -s OCSP
$ pkispawn -f ocsp-standalone-step1.cfg -s OCSP
它在 /var/lib/pki/pki-tomcat/alias
中创建 NSS 数据库,并在指定的路径中生成 CSR。
7.4.3.5.2. 发布证书
使用 CSR 将 CSR 提交给外部 CA 来获取 OCSP 证书,以发布 KRA 系统证书。在以下部分中,假设 KRA 系统证书存储在以下文件中:
- ocsp_signing.crt
- subsystem.crt
- sslserver.crt
- ocsp_audit_signing.crt
- ocsp_admin.crt
7.4.3.5.3. 完成安装
准备另一个文件,如
ocsp-standalone-step2.cfg
,其中包含第二个部署配置。文件可以从第一个文件(即ocsp-standalone-step1.cfg
)创建,其更改如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_external_step_two=True
pki_external_step_two=True
使用以下参数指定证书文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_ocsp_signing_cert_path=ocsp_signing.crt pki_subsystem_cert_path=subsystem.crt pki_sslserver_cert_path=sslserver.crt pki_audit_signing_cert_path=ocsp_audit_signing.crt pki_admin_cert_path=ocsp_admin.crt
pki_ocsp_signing_cert_path=ocsp_signing.crt pki_subsystem_cert_path=subsystem.crt pki_sslserver_cert_path=sslserver.crt pki_audit_signing_cert_path=ocsp_audit_signing.crt pki_admin_cert_path=ocsp_admin.crt
每个证书文件都可以包含单个 PEM 证书或 PKCS #7 证书链。
使用以下参数指定 CA 证书链:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki_cert_chain_nickname=ca_signing pki_cert_chain_path=ca_signing.crt
pki_cert_chain_nickname=ca_signing pki_cert_chain_path=ca_signing.crt
CA 证书链文件也可以包含单个 PEM 证书或 PKCS #7 证书链。
部署配置示例位于 /usr/share/pki/server/examples/installation/ocsp-standalone-step2.cfg。
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f ocsp-standalone-step2.cfg -s OCSP
$ pkispawn -f ocsp-standalone-step2.cfg -s OCSP
7.4.3.5.4. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki pkcs12-import \ --pkcs12 ocsp_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki pkcs12-import \ --pkcs12 ocsp_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 OCSP 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -n ocspadmin ocsp-user-show ocspadmin
$ pki -n ocspadmin ocsp-user-show ocspadmin ---------------- User "ocspadmin" ---------------- User ID: ocspadmin Full name: ocspadmin Email: ocspadmin@example.com Type: adminType State: 1
7.4.4. 安装 TKS 子系统
7.4.4.1. 安装 TKS
按照以下步骤安装 TKS 子系统。
在安装前,请确保配置了 安装前提条件。
7.4.4.1.1. 安装 TKS 子系统
-
准备包含部署配置的文件,如
tks.cfg
。部署配置示例位于 /usr/share/pki/server/examples/installation/tks.cfg。 执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f tks.cfg -s TKS
$ pkispawn -f tks.cfg -s TKS
它会在 Tomcat 实例中安装 TKS 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/tks/alias
当在没有其他子系统的新系统上安装 TKS 时,需要提供 CA 的 root 证书。在 pki_cert_chain_path
中指定 CA PKCS Serial7 PEM 文件的路径。这允许服务器在联系安全域时验证 CA 的 SSL 服务器证书。在 TKS 安装前,管理员最多安全地将 CA root 证书(仅限公钥!)传输到系统。
7.4.4.1.2. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CT,C,C
subsystem u,u,u
tks_audit_signing u,u,Pu
sslserver u,u,u
7.4.4.1.3. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 TKS 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin tks-user-show tksadmin
$ pki -c Secret.123 -n caadmin tks-user-show tksadmin --------------- User "tksadmin" --------------- User ID: tksadmin Full name: tksadmin Email: tksadmin@example.com Type: adminType State: 1
7.4.4.2. 使用 HSM 安装 TKS
按照以下步骤安装存储在 HSM 中的系统证书及其密钥的 TKS 子系统。
在安装前,请确保配置了 安装前提条件。
7.4.4.2.1. 安装 TKS 子系统
准备包含部署配置的文件,如
tks.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [TKS] pki_admin_cert_file=ca_admin.cert pki_admin_email=tksadmin@example.com pki_admin_name=tksadmin pki_admin_nickname=tksadmin pki_admin_password=Secret.123 pki_admin_uid=tksadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=tks,dc=pki,dc=example,dc=com pki_ds_database=tks pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_audit_signing_nickname=tks_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [TKS] pki_admin_cert_file=ca_admin.cert pki_admin_email=tksadmin@example.com pki_admin_name=tksadmin pki_admin_nickname=tksadmin pki_admin_password=Secret.123 pki_admin_uid=tksadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=tks,dc=pki,dc=example,dc=com pki_ds_database=tks pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_audit_signing_nickname=tks_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f tks.cfg -s TKS
$ pkispawn -f tks.cfg -s TKS
它会在 Tomcat 实例中安装 TKS 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/tks/alias
7.4.4.2.2. 验证系统证书
验证内部令牌是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI ca_signing CT,C,C tks_audit_signing ,,P
验证 HSM 是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI HSM:subsystem u,u,u HSM:tks_audit_signing u,u,Pu HSM:sslserver u,u,u
7.4.4.2.3. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 TKS 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin tks-user-show tksadmin
$ pki -c Secret.123 -n caadmin tks-user-show tksadmin --------------- User "tksadmin" --------------- User ID: tksadmin Full name: tksadmin Email: tksadmin@example.com Type: adminType State: 1
7.4.4.3. 使用 LDAPS 连接安装 TKS
按照以下步骤安装带有安全数据库连接的 TKS 子系统。
在安装前,请确保配置了 安装前提条件。
7.4.4.3.1. DS 配置
完成上述先决条件后,如果您选择在 DS 实例创建过程中使用 DS bootstrap 证书,请将 bootstrap 自签名证书导出到 ds_signing.crt
中,如下所示:
certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
$ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
7.4.4.3.2. 安装 TKS 子系统
准备包含部署配置的文件,如
tks.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [TKS] pki_admin_cert_file=ca_admin.cert pki_admin_email=tksadmin@example.com pki_admin_name=tksadmin pki_admin_nickname=tksadmin pki_admin_password=Secret.123 pki_admin_uid=tksadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldaps://localhost.localdomain:636 pki_ds_secure_connection_ca_nickname=ds_signing pki_ds_secure_connection_ca_pem_file=ds_signing.crt pki_ds_base_dn=dc=tks,dc=pki,dc=example,dc=com pki_ds_database=tks pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_audit_signing_nickname=tks_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [TKS] pki_admin_cert_file=ca_admin.cert pki_admin_email=tksadmin@example.com pki_admin_name=tksadmin pki_admin_nickname=tksadmin pki_admin_password=Secret.123 pki_admin_uid=tksadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldaps://localhost.localdomain:636 pki_ds_secure_connection_ca_nickname=ds_signing pki_ds_secure_connection_ca_pem_file=ds_signing.crt pki_ds_base_dn=dc=tks,dc=pki,dc=example,dc=com pki_ds_database=tks pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_audit_signing_nickname=tks_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f tks.cfg -s TKS
$ pkispawn -f tks.cfg -s TKS
它会在 Tomcat 实例中安装 TKS 子系统(默认为 pki-tomcat),并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/tks/alias
7.4.4.3.3. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ds_signing CT,C,C
ca_signing CT,C,C
subsystem u,u,u
tks_audit_signing u,u,Pu
sslserver u,u,u
7.4.4.3.4. 验证数据库配置
验证 TKS 数据库是否已配置有安全连接:
pki-server tks-db-config-show
$ pki-server tks-db-config-show
Hostname: pki.example.com
Port: 636
Secure: true
Authentication: BasicAuth
Bind DN: cn=Directory Manager
Bind Password Prompt: internaldb
Database: tks
Base DN: dc=tks,dc=pki,dc=example,dc=com
Multiple suffix: false
Maximum connections: 15
Minimum connections: 3
7.4.4.3.5. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 TKS 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin tks-user-show tksadmin
$ pki -c Secret.123 -n caadmin tks-user-show tksadmin --------------- User "tksadmin" --------------- User ID: tksadmin Full name: tksadmin Email: tksadmin@example.com Type: adminType State: 1
7.4.4.3.6. 从 CA 获取真实 DS 证书
如果需要,请按照以下步骤 获取 CA 发布的实际 DS 证书。
7.4.5. 安装 TPS 子系统
7.4.5.1. 安装 TPS
按照此流程安装 TPS 子系统。
在安装前,请确保配置了 安装前提条件。
7.4.5.1.1. 安装 TPS 子系统
-
准备包含部署配置的文件,如
tps.cfg
。部署配置示例位于 /usr/share/pki/server/examples/installation/tps.cfg。 执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f tps.cfg -s TPS
$ pkispawn -f tps.cfg -s TPS
它在 Tomcat 实例(默认为 pki-tomcat)中安装 TPS 子系统,并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/tps/alias
当在没有其他子系统的新系统上安装 TPS 时,需要提供 CA 的 root 证书。在 pki_cert_chain_path
中指定 CA PKCS Serial7 PEM 文件的路径。这允许服务器在联系安全域时验证 CA 的 SSL 服务器证书。在 TPS 安装之前,管理员最多可安全地将 CA root 证书(仅限公钥)传输到系统。
7.4.5.1.2. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ca_signing CT,C,C
subsystem u,u,u
tps_audit_signing u,u,Pu
sslserver u,u,u
7.4.5.1.3. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 TPS 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin tps-user-show tpsadmin
$ pki -c Secret.123 -n caadmin tps-user-show tpsadmin --------------- User "tpsadmin" --------------- User ID: tpsadmin Full name: tpsadmin Email: tpsadmin@example.com Type: adminType State: 1 TPS Profiles: All Profiles
7.4.5.2. 使用 HSM 安装 TPS
按照以下步骤安装一个 TPS 子系统,其中系统证书及其密钥存储在 HSM 中。
在安装前,请确保配置了 安装前提条件。
7.4.5.2.1. 安装 TPS 子系统
准备包含部署配置的文件,如
tps.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [TPS] pki_admin_cert_file=ca_admin.cert pki_admin_email=tpsadmin@example.com pki_admin_name=tpsadmin pki_admin_nickname=tpsadmin pki_admin_password=Secret.123 pki_admin_uid=tpsadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=tps,dc=pki,dc=example,dc=com pki_ds_database=tps pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_audit_signing_nickname=tps_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 pki_hsm_enable=True pki_hsm_libfile=/usr/lib64/pkcs11/libsofthsm2.so pki_hsm_modulename=softhsm pki_token_name=HSM pki_token_password=Secret.HSM [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [TPS] pki_admin_cert_file=ca_admin.cert pki_admin_email=tpsadmin@example.com pki_admin_name=tpsadmin pki_admin_nickname=tpsadmin pki_admin_password=Secret.123 pki_admin_uid=tpsadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldap://localhost.localdomain:389 pki_ds_base_dn=dc=tps,dc=pki,dc=example,dc=com pki_ds_database=tps pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_audit_signing_nickname=tps_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f tps.cfg -s TPS
$ pkispawn -f tps.cfg -s TPS
它在 Tomcat 实例(默认为 pki-tomcat)中安装 TPS 子系统,并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/tps/alias
7.4.5.2.2. 验证系统证书
验证内部令牌是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI ca_signing CT,C,C tps_audit_signing ,,P
验证 HSM 是否包含以下证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias -h HSM -f HSM.pwd Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI HSM:subsystem u,u,u HSM:tps_audit_signing u,u,Pu HSM:sslserver u,u,u
7.4.5.2.3. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 TPS 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin tps-user-show tpsadmin
$ pki -c Secret.123 -n caadmin tps-user-show tpsadmin --------------- User "tpsadmin" --------------- User ID: tpsadmin Full name: tpsadmin Email: tpsadmin@example.com Type: adminType State: 1 TPS Profiles: All Profiles
7.4.5.3. 使用 LDAPS 连接安装 TPS
按照此流程安装 TPS 子系统,一个安全数据库连接。
在安装前,请确保配置了 安装前提条件。
7.4.5.3.1. DS 配置
完成上述先决条件后,如果您选择在 DS 实例创建过程中使用 DS bootstrap 证书,请将 bootstrap 自签名证书导出到 ds_signing.crt
中,如下所示:
certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
$ certutil -L -d /etc/dirsrv/slapd-localhost -n Self-Signed-CA -a > ds_signing.crt
7.4.5.3.2. 安装 TPS 子系统
准备包含部署配置的文件,如
tps.cfg
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [TPS] pki_admin_cert_file=ca_admin.cert pki_admin_email=tpsadmin@example.com pki_admin_name=tpsadmin pki_admin_nickname=tpsadmin pki_admin_password=Secret.123 pki_admin_uid=tpsadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldaps://localhost.localdomain:636 pki_ds_secure_connection_ca_nickname=ds_signing pki_ds_secure_connection_ca_pem_file=ds_signing.crt pki_ds_base_dn=dc=tps,dc=pki,dc=example,dc=com pki_ds_database=tps pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_audit_signing_nickname=tps_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
[DEFAULT] pki_instance_name=pki-tomcat pki_https_port=8443 pki_http_port=8080 pki_server_database_password=Secret.123 [Tomcat] pki_ajp_port=8009 pki_tomcat_server_port=8005 [TPS] pki_admin_cert_file=ca_admin.cert pki_admin_email=tpsadmin@example.com pki_admin_name=tpsadmin pki_admin_nickname=tpsadmin pki_admin_password=Secret.123 pki_admin_uid=tpsadmin pki_client_pkcs12_password=Secret.123 pki_ds_url=ldaps://localhost.localdomain:636 pki_ds_secure_connection_ca_nickname=ds_signing pki_ds_secure_connection_ca_pem_file=ds_signing.crt pki_ds_base_dn=dc=tps,dc=pki,dc=example,dc=com pki_ds_database=tps pki_ds_password=Secret.123 pki_security_domain_name=EXAMPLE pki_security_domain_user=caadmin pki_security_domain_password=Secret.123 pki_audit_signing_nickname=tps_audit_signing pki_sslserver_nickname=sslserver pki_subsystem_nickname=subsystem
执行以下命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkispawn -f tps.cfg -s TPS
$ pkispawn -f tps.cfg -s TPS
它在 Tomcat 实例(默认为 pki-tomcat)中安装 TPS 子系统,并创建以下 NSS 数据库:
- 服务器 NSS 数据库: /var/lib/pki/pki-tomcat/conf/alias
- 管理 NSS 数据库: ~/.dogtag/pki-tomcat/tps/alias
7.4.5.3.3. 验证系统证书
验证服务器 NSS 数据库是否包含以下证书:
certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
$ certutil -L -d /var/lib/pki/pki-tomcat/conf/alias
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
ds_signing CT,C,C
ca_signing CT,C,C
subsystem u,u,u
tps_audit_signing u,u,Pu
sslserver u,u,u
7.4.5.3.4. 验证数据库配置
验证 TPS 数据库是否配置了安全连接:
pki-server tps-db-config-show
$ pki-server tps-db-config-show
Hostname: pki.example.com
Port: 636
Secure: true
Authentication: BasicAuth
Bind DN: cn=Directory Manager
Bind Password Prompt: internaldb
Database: tps
Base DN: dc=tps,dc=pki,dc=example,dc=com
Multiple suffix: false
Maximum connections: 15
Minimum connections: 3
7.4.5.3.5. 验证管理证书
导入 CA 签名证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
$ pki nss-cert-import --cert ca_signing.crt --trust CT,C,C ca_signing
使用以下命令将 admin 证书和密钥导入到客户端 NSS 数据库(默认为 ~/.dogtag/nssdb):
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
$ pki -c Secret.123 pkcs12-import \ --pkcs12 ca_admin_cert.p12 \ --pkcs12-password Secret.123
运行以下命令,验证 admin 证书是否可用于访问 TPS 子系统:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki -c Secret.123 -n caadmin tps-user-show tpsadmin
$ pki -c Secret.123 -n caadmin tps-user-show tpsadmin --------------- User "tpsadmin" --------------- User ID: tpsadmin Full name: tpsadmin Email: tpsadmin@example.com Type: adminType State: 1 TPS Profiles: All Profiles
7.4.5.3.6. 从 CA 获取真实 DS 证书
如果需要,请按照以下步骤 获取 CA 发布的实际 DS 证书。
7.4.6. 安装 EST 子系统
7.4.6.1. 安装 EST
按照以下步骤安装 EST 子系统。
EST 子系统 需要在运行实例的服务器上安装软件包 dogtag-pki-est
:
dnf install dogtag-pki-est
# dnf install dogtag-pki-est
7.4.6.1.1. 先决条件
在 CA 上,为 EST RA 帐户创建用户组(EST RA Agents),以及一个 EST RA 帐户(est-ra-1)。EST 子系统使用此帐户向 CA 子系统进行身份验证,并代表 EST 客户端发布证书。
请注意:以下命令假设 CA 在带有默认端口的同一主机上运行,nssdb 位于 ~/.dogtag/nssdb
中。要指向不同主机上的 CA,或者具有不同端口的 CA 使用 options -h <hostname> ,
-p &
lt;port_number> or-U <CA_uri
。要使用不同的 nssdb,请使用选项 < ;nssdb_path>
。
pki -n caadmin ca-group-add "EST RA Agents" pki -n caadmin ca-user-add \ est-ra-1 --fullName "EST RA 1" --password password4ESTUser pki -n caadmin ca-group-member-add "EST RA Agents" est-ra-1
# pki -n caadmin ca-group-add "EST RA Agents"
---------------------------
Added group "EST RA Agents"
---------------------------
Group ID: EST RA Agents
# pki -n caadmin ca-user-add \
est-ra-1 --fullName "EST RA 1" --password password4ESTUser
---------------------
Added user "est-ra-1"
---------------------
User ID: est-ra-1
Full name: EST RA 1
# pki -n caadmin ca-group-member-add "EST RA Agents" est-ra-1
-----------------------------
Added group member "est-ra-1"
-----------------------------
User: est-ra-1
添加并启用 EST 注册配置集 estServiceCert.cfg
,它包括在 /usr/share/pki/ca/profiles/ca
中(如果安装了 dogtag-pki-ca 软件包):
pki -n caadmin ca-profile-add --raw /usr/share/pki/ca/profiles/ca/estServiceCert.cfg pki -n caadmin ca-profile-enable estServiceCert
# pki -n caadmin ca-profile-add --raw /usr/share/pki/ca/profiles/ca/estServiceCert.cfg
----------------------------
Added profile estServiceCert
----------------------------
# pki -n caadmin ca-profile-enable estServiceCert
--------------------------------
Enabled profile "estServiceCert"
--------------------------------
注:在启用配置集前,请验证选项是否满足部署要求。
EST 子系统具有自己的域身份验证,具有单独的用户 DB。支持基于 LDAP,支持基于PostreSQL 和文件的 DB。为了进行身份验证,必须提前准备 DB。在 Configure EST Realm DB 中提供了设置用户 DB 的说明。
7.4.6.1.2. 安装 EST 子系统
安装有两个选项:
-
使用
pkispawn
进行基本安装。请参阅 安装 EST pkispawn; -
使用
pki-server
进行高级安装。请参阅 安装 EST pki-server。它需要更多手动配置,但提供对安装过程的更多控制,因为可以验证每个步骤并最终自定义并重复。
7.4.6.1.3. 验证 EST
在注册证书前,EST 用户必须在用户数据库中添加。用户管理不是 EST 命令的一部分,必须在 EST 之外完成。有关如何在每个数据库平台上添加用户的信息,请参阅管理指南中的。
使用 curl
验证 EST 子系统 是否已部署,并且能够与 CA 子系统 通信。
以下命令输出从服务器获取的 CA 签名证书:
curl --cacert ./ca_signing.crt https://<EST_HOSTNAME>:<EST_PORT>/.well-known/est/cacerts | openssl base64 -d | openssl pkcs7 -inform der -print_certs | openssl x509 -text -noout
$ curl --cacert ./ca_signing.crt https://<EST_HOSTNAME>:<EST_PORT>/.well-known/est/cacerts | openssl base64 -d | openssl pkcs7 -inform der -print_certs | openssl x509 -text -noout
将 $EST_HOSTNAME
和 $EST_PORT
分别替换为 EST 子系统 的主机名和端口。
如果成功,在标准输出中打印服务器 CA 证书链,命令将以状态 0 (成功)退出。
要使用 curl 测试注册,请生成 CSR 并使用与域关联的 EST 用户 DB 的用户提交。以下命令将执行注册并打印最终证书:
pki nss-cert-request --csr testServer.csr \ --ext /usr/share/pki/server/certs/sslserver.conf --subject 'CN=test.example.com' openssl req -in testServer.csr -outform der | openssl base64 -out testServer.p10 curl --cacert ./ca_signing.crt --anyauth -u est-test-user:Secret.123 \ --data-binary @testServer.p10 -H "Content-Type: application/pkcs10" \ -o newCert.p7 https://<EST_HOSTNAME>:<EST_PORT>/.well-known/est/simpleenroll openssl base64 -d -in newCert.p7 | openssl pkcs7 -inform der -print_certs | openssl x509 -text -noout
$ pki nss-cert-request --csr testServer.csr \
--ext /usr/share/pki/server/certs/sslserver.conf --subject 'CN=test.example.com'
$ openssl req -in testServer.csr -outform der | openssl base64 -out testServer.p10
$ curl --cacert ./ca_signing.crt --anyauth -u est-test-user:Secret.123 \
--data-binary @testServer.p10 -H "Content-Type: application/pkcs10" \
-o newCert.p7 https://<EST_HOSTNAME>:<EST_PORT>/.well-known/est/simpleenroll
$ openssl base64 -d -in newCert.p7 | openssl pkcs7 -inform der -print_certs | openssl x509 -text -noout
注: testServer.p10
文件是一个 base64 编码 pkcs10 DER,没有标头/页脚。
如果注册是使用上述 curl
命令中的 mutual TLS 身份验证完成的,则必须将凭证替换为证书和相关密钥,如下所示:
curl --cacert ./ca_signing.crt --cert cert.pem --key key-x-x.pem \ --data-binary @testServer.p10 -H "Content-Type: application/pkcs10"
$ curl --cacert ./ca_signing.crt --cert cert.pem --key key-x-x.pem \
--data-binary @testServer.p10 -H "Content-Type: application/pkcs10"
-o newCert.p7 https://<EST_HOSTNAME>:<EST_PORT>/.well-known/est/simpleenroll
执行 mutual TLS 身份验证时,CSR 主题和 SAN 必须匹配用于身份验证的证书的主题和 SAN,才能获得授权。不同的是,使用基本身份验证,CSR 主题和 SAN 将使用用户全名或用户 ID 进行验证。对于 simpleenroll 操作,可以禁用此检查。要禁用此检查,请在文件 /etc/pki/<instance_name>/est/authorizer.conf 文件中添加以下选项
:
enrollMatchTLSSubjSAN=false
enrollMatchTLSSubjSAN=false
7.4.6.2. 使用 pkispawn
安装
配置了 安装 EST 中的先决条件后,就可以安装 EST。
7.4.6.2.1. 安装
/usr/share/pki/server/examples/installation/est.cfg
中提供了一个 pkispawn
安装配置示例,其中包含以下内容:
[DEFAULT] pki_server_database_password=Secret.123 pki_admin_setup=False [EST] est_realm_type=ds est_realm_url=ldap://localhost.localdomain:389 est_realm_bind_password=Secret.123 est_ca_user_name=est-ra-1 est_ca_user_password=Secret.est pki_sslserver_nickname=sslserver
[DEFAULT]
pki_server_database_password=Secret.123
pki_admin_setup=False
[EST]
est_realm_type=ds
est_realm_url=ldap://localhost.localdomain:389
est_realm_bind_password=Secret.123
est_ca_user_name=est-ra-1
est_ca_user_password=Secret.est
pki_sslserver_nickname=sslserver
以下命令将 EST 子系统安装到已具有 CA 子系统的 PKI 服务器实例上。默认情况下,PKI 服务器实例称为 pki-tomcat
,它使用 HTTP 端口 8080
和 HTTPS 端口 8443
。要使用不同的实例名称或端口号,请参阅命令的 man page。
要在 CA 的同一实例和 DS 域中安装 EST,请运行以下命令:
pkispawn \ -f /usr/share/pki/server/examples/installation/est.cfg \ -s EST \ -D est_realm_url=ldap://estds.example.com:389 \ -v
# pkispawn \
-f /usr/share/pki/server/examples/installation/est.cfg \
-s EST \
-D est_realm_url=ldap://estds.example.com:389 \
-v
请注意,est_realm_url
指向用户 DB。可以根据部署修改的其他配置有:
est_ca_profile=estServiceCert est_ca_user_name= est_ca_user_password= est_ca_user_password_file= est_ca_user_certificate= est_realm_type= est_realm_custom= est_realm_url= est_realm_auth_type=BasicAuth est_realm_bind_dn=cn=Directory Manager est_realm_bind_password= est_realm_nickname= est_realm_user= est_realm_username= est_realm_password= est_realm_users_dn=ou=people,dc=est,dc=pki,dc=example,dc=com est_realm_groups_dn=ou=groups,dc=est,dc=pki,dc=example,dc=com est_realm_statements=/usr/share/pki/est/conf/realm/postgresql/statements.conf est_authorizer_exec_path=/usr/share/pki/est/bin/estauthz
est_ca_profile=estServiceCert
est_ca_user_name=
est_ca_user_password=
est_ca_user_password_file=
est_ca_user_certificate=
est_realm_type=
est_realm_custom=
est_realm_url=
est_realm_auth_type=BasicAuth
est_realm_bind_dn=cn=Directory Manager
est_realm_bind_password=
est_realm_nickname=
est_realm_user=
est_realm_username=
est_realm_password=
est_realm_users_dn=ou=people,dc=est,dc=pki,dc=example,dc=com
est_realm_groups_dn=ou=groups,dc=est,dc=pki,dc=example,dc=com
est_realm_statements=/usr/share/pki/est/conf/realm/postgresql/statements.conf
est_authorizer_exec_path=/usr/share/pki/est/bin/estauthz
est_ca
swig 提供与 EST 子系统的 CA 中配置的用户和配置文件相关的信息。
est_authorizer_exec_path
是负责验证授权的可执行文件的路径。默认脚本 estauthz
是一个一个简单的授权示例,它只检查用户是否具有 estclient 角色。
est_realm
swig 选项允许一个来自定义域。可能的类型有: ds、postgresql 和 in-memory。
例如,要使用 PostgreSQL 安装 EST,该命令为:
pkispawn \ -f /usr/share/pki/server/examples/installation/est.cfg \ -s EST \ -D est_realm_url="jdbc:postgresql://postgresql.example.com:5432/est?ssl=true&sslmode=require" \ -D est_realm_type=postgresql \ -D est_realm_user=est \ -D est_realm_password=mysecretpassword \ -v
# pkispawn \
-f /usr/share/pki/server/examples/installation/est.cfg \
-s EST \
-D est_realm_url="jdbc:postgresql://postgresql.example.com:5432/est?ssl=true&sslmode=require" \
-D est_realm_type=postgresql \
-D est_realm_user=est \
-D est_realm_password=mysecretpassword \
-v
est_realm_custom
是 Tomcat 的自定义域配置的路径,如果提供,它将覆盖所有其他域相关配置。
7.4.6.2.1.1. 使用证书在单独的实例上安装
EST 也可以安装在与 CA 分开的 Tomcat 实例上。
除了以上配置外,在单独的实例中安装 EST 还需要一些额外的步骤来配置证书。
请注意:以下命令假设 CA 在带有默认端口的同一主机上运行,nssdb 位于 ~/.dogtag/nssdb
中。要指向不同主机上的 CA,或者具有不同端口的 CA 使用 options -h <hostname> ,
-p &
lt;port_number> or-U <CA_uri
。要使用不同的 nssdb,请使用选项 < ;nssdb_path>
。
EST 服务器证书(以及要与 CA 连接的子系统证书)必须预先发布,并提供给 pkispawn
带有它的完整链(通过 pki_server_pkcs12
swig 参数在 pkispawn
命令行中提供的完整链),如下所示。
务必要确保 PKCSmtc 中的证书别名与 EST 使用的别名匹配。对于 SSL 证书,est.cfg
中配置的别名是 sslserver
,但可以修改。
要使用证书创建 PKCS12,可以从 CA 请求 EST 的服务器证书(之后是 RA 用户证书),然后导出它们,如下所示:
pki nss-cert-request --csr estSSLServer.csr \ --ext /usr/share/pki/server/certs/sslserver.conf --subject 'CN=est.example.com' pki -n caadmin \ ca-cert-issue \ --csr-file estSSLServer.csr \ --profile caServerCert \ --output-file estSSLServer.crt pki nss-cert-import --cert estSSLServer.crt sslserver pki pkcs12-cert-import sslserver --pkcs12-file $SHARED/est_server.p12 --pkcs12-password Secret.123
# pki nss-cert-request --csr estSSLServer.csr \
--ext /usr/share/pki/server/certs/sslserver.conf --subject 'CN=est.example.com'
# pki -n caadmin \
ca-cert-issue \
--csr-file estSSLServer.csr \
--profile caServerCert \
--output-file estSSLServer.crt
# pki nss-cert-import --cert estSSLServer.crt sslserver
# pki pkcs12-cert-import sslserver --pkcs12-file $SHARED/est_server.p12 --pkcs12-password Secret.123
同样,为 EST 生成子系统证书,与以前在 CA 中配置的 EST RA 用户(est-ra-1)关联,并在 SSL 服务器证书中的同一 PKCS12 中添加:
pki nss-cert-request --csr est-ra-1.csr \ --ext /usr/share/pki/server/certs/admin.conf \ --subject 'CN=EST Subsystem Certificate,OU=pki-tomcat,O=EXAMPLE' pki -n caadmin -cert-issue \ --csr-file est-ra-1.csr \ --profile caSubsystemCert \ --output-file est-ra-1.crt pki nss-cert-import --cert est-ra-1.crt "est-ra-1" pki -n caadmin ca-user-cert-add est-ra-1 --input est-ra-1.crt pki pkcs12-cert-import "est-ra-1" --pkcs12-file $SHARED/est_server.p12 --pkcs12-password Secret.123 --append
# pki nss-cert-request --csr est-ra-1.csr \
--ext /usr/share/pki/server/certs/admin.conf \
--subject 'CN=EST Subsystem Certificate,OU=pki-tomcat,O=EXAMPLE'
# pki -n caadmin -cert-issue \
--csr-file est-ra-1.csr \
--profile caSubsystemCert \
--output-file est-ra-1.crt
# pki nss-cert-import --cert est-ra-1.crt "est-ra-1"
# pki -n caadmin ca-user-cert-add est-ra-1 --input est-ra-1.crt
# pki pkcs12-cert-import "est-ra-1" --pkcs12-file $SHARED/est_server.p12 --pkcs12-password Secret.123 --append
使用生成的 PKCS vmcore 捆绑包,部署 EST 的命令是:
pkispawn \ -f /usr/share/pki/server/examples/installation/est.cfg \ -s EST \ -D est_realm_url=ldap://estds.example.com:389 \ -D pki_ca_uri=https://ca.example.com:8443 \ -D est_ca_user_password= \ -D est_ca_user_certificate=est-ra-1 \ -D pki_server_pkcs12_path=est_server.p12 \ -D pki_server_pkcs12_password=Secret.123 \ -v
# pkispawn \
-f /usr/share/pki/server/examples/installation/est.cfg \
-s EST \
-D est_realm_url=ldap://estds.example.com:389 \
-D pki_ca_uri=https://ca.example.com:8443 \
-D est_ca_user_password= \
-D est_ca_user_certificate=est-ra-1 \
-D pki_server_pkcs12_path=est_server.p12 \
-D pki_server_pkcs12_password=Secret.123 \
-v
7.4.6.2.1.2. 在没有证书的独立实例上安装
如果没有为 pkispawn
提供 PKCSburst 捆绑包证书,在安装过程中,会自动使用为 EST 配置的配置集发布 EST 服务器证书。与 CA 的连接使用配置文件中提供的凭证(用户名/密码)。在这种情况下,需要 CA 签名证书。可以通过以下命令在 CA 服务器中检索证书:
pki-server cert-export ca_signing --cert-file ca_signing.crt
# pki-server cert-export ca_signing --cert-file ca_signing.crt
使用以下命令可以安装 EST :
pkispawn \ -f /usr/share/pki/server/examples/installation/est.cfg \ -s EST \ -D est_realm_url=ldap://estds.example.com:389 \ -D pki_ca_uri=https://ca.example.com:8443 \ -D pki_cert_chain_path=ca_signing.crt \ -D pki_cert_chain_nickname=caSigning \ -v
# pkispawn \
-f /usr/share/pki/server/examples/installation/est.cfg \
-s EST \
-D est_realm_url=ldap://estds.example.com:389 \
-D pki_ca_uri=https://ca.example.com:8443 \
-D pki_cert_chain_path=ca_signing.crt \
-D pki_cert_chain_nickname=caSigning \
-v
安装后,如果 EST 发布的证书不适用于服务器,则可以使用其他配置文件更新 EST 服务器证书。另外,TLS 身份验证的证书可以在 EST nssdb 中添加,并在文件 /var/lib/pki/pki-tomcat/conf/est/backend.conf
中配置。
7.4.6.2.2. 删除 EST
要删除 EST 子系统,可以使用 pkidestroy
命令,如下所示:
pkidestroy -s EST -v
# pkidestroy -s EST -v
注意:配置和日志文件夹不会被删除。要删除所有内容,请添加选项 :--remove-conf--
remove-logs
。
7.4.6.3. 使用 pki-server
进行 EST 安装
配置了 安装 EST 的先决条件后,就可以安装 EST。
PKI Tomcat 实例必须已经可用,如果不存在,则可以创建一个具有 pki-server create
的新实例(请参见 此处的更多详情)。
在 pki 服务器实例内创建 EST 子系统 :
pki-server est-create
# pki-server est-create
配置 issuance 后端。类 org.dogtagpki.est.DogtagRABackend
用于 EST 实例与 CA 通信。这要求:
- 指向 CA 子系统的 url 参数;
EST RA 帐户的凭证使用以下任一方法来授权帐户使用配置的注册配置文件来请求证书:
- 如果 EST RA 帐户为 username 和 password ;
- 属于 EST RA 帐户的 TLS 客户端证书。
- 注册 资料.
cat >/var/lib/pki/pki-tomcat/conf/est/backend.conf <<EOF class=org.dogtagpki.est.DogtagRABackend url=https://$(hostname):8443 profile=estServiceCert username=est-ra-1 password=password4ESTUser EOF
# cat >/var/lib/pki/pki-tomcat/conf/est/backend.conf <<EOF
class=org.dogtagpki.est.DogtagRABackend
url=https://$(hostname):8443
profile=estServiceCert
username=est-ra-1
password=password4ESTUser
EOF
注意:要使用 TLS mutual 身份验证,而不是 用户名/密码,需要:
- 从 CA 获取 TLS 客户端证书颁发,使用 EST 实例的加密令牌在实例别名目录中生成密钥和 CSR;
- 将证书导入到 EST 实例的加密令牌 ;
- 将 nickname 分配给参数 nickname (保留 用户名和密码 );
- 将证书添加到 CA 上的 EST RA 用户帐户。
有关如何获取证书并使用 TLS mutual 配置配置 EST 的示例,请参见 此处的 pkispawn
安装指南中。
配置请求授权。类 org.dogtagpki.est.ExternalProcessRequestAuthorizer
允许将授权委托给使用参数 可执行文件 配置的外部进程:
cat >/var/lib/pki/pki-tomcat/conf/est/authorizer.conf <<EOF class=org.dogtagpki.est.ExternalProcessRequestAuthorizer executable=/usr/share/pki/est/bin/estauthz EOF
# cat >/var/lib/pki/pki-tomcat/conf/est/authorizer.conf <<EOF
class=org.dogtagpki.est.ExternalProcessRequestAuthorizer
executable=/usr/share/pki/est/bin/estauthz
EOF
本例中的可执行脚本对用户角色执行简单的检查,它位于 /usr/share/pki/est/bin/estauthz
。如果需要采用更为复杂的授权框架,则可以替换它。
部署 EST 应用程序:
pki-server est-deploy
# pki-server est-deploy
配置身份验证。身份验证允许使用 Tomcat 的域或为 dogtag 开发的域。例如,我们在内存域中使用:
cat >/var/lib/pki/pki-tomcat/conf/est/realm.conf <<EOF class=com.netscape.cms.realm.PKIInMemoryRealm username=alice password=4me2Test roles=estclient EOF
# cat >/var/lib/pki/pki-tomcat/conf/est/realm.conf <<EOF
class=com.netscape.cms.realm.PKIInMemoryRealm
username=alice
password=4me2Test
roles=estclient
EOF
最后,重启服务器:
pki-server restart --wait
# pki-server restart --wait
7.4.6.4. 配置 EST Realm DB
7.4.6.4.1. 准备 DS DB
如果您已选择在添加用户前使用 LDAP 实例进行用户管理,请确保您配置了目录服务器并添加基本条目。目录服务器设置说明可在 安装前提条件 中找到。
用户 DB 需要一个组节点用于人,另一个用于组。一个简单的 ldif
文件位于 /usr/share/pki/est/conf/realm/ds/create.ldif
中。此基本 DN 为 dc=pki,dc=example,dc=com
,但可以修改,并在以下 EST 安装过程中指定的新值。您可以使用以下命令导入该文件:
ldapadd -x -H ldap://<ds_server_hostname>:<ds_server_port> \ -D "cn=Directory Manager" -w Secret.123 \ -f /usr/share/pki/est/conf/realm/ds/create.ldif
ldapadd -x -H ldap://<ds_server_hostname>:<ds_server_port> \
-D "cn=Directory Manager" -w Secret.123 \
-f /usr/share/pki/est/conf/realm/ds/create.ldif
该命令还会创建组 EST Users,它用作访问 EST 用户的默认组。使用不同的组需要修改授权脚本 /usr/share/pki/est/bin/estauthz
。
7.4.6.4.2. 准备 PostgreSQL 数据库
如果您选择使用 PostgreSQL 进行用户管理,您首先需要准备一个数据库,例如,以访问数据库。可在此处找到 安装说明。
安装后,使用以下命令验证数据库连接:
psql -U est -d est
$ psql -U est -d est
要使用 PostreSQL DB,应该使用 /usr/share/pki/est/conf/realm/postgresql/create.sql
中提供的 sql 文件创建用户表,然后使用用户信息填充。这些表可以使用以下命令创建:
psql -U est -t -A -f /usr/share/pki/est/conf/realm/postgresql/create.sql
$ psql -U est -t -A -f /usr/share/pki/est/conf/realm/postgresql/create.sql
该命令还会创建组 EST Users,它用作访问 EST 用户的默认组。使用不同的组需要修改授权脚本 /usr/share/pki/est/bin/estauthz
。
可以使用不同的架构,但在这种情况下,必须提供自定义 statement.conf
文件(在同一文件夹中提供)才能检索来自 DB 的用户信息。
另外,PostgreSQL 的 Java 驱动程序需要安装在 EST 服务器中,并链接到 pki 的库文件夹中:
dnf install -y postgresql-jdbc ln -s /usr/share/java/postgresql-jdbc/postgresql.jar /usr/share/pki/server/common/lib ln -s /usr/share/java/ongres-scram/client.jar /usr/share/pki/server/common/lib ln -s /usr/share/java/ongres-scram/common.jar /usr/share/pki/server/common/lib ln -s /usr/share/java/ongres-stringprep/saslprep.jar /usr/share/pki/server/common/lib/ ln -s /usr/share/java/ongres-stringprep/stringprep.jar /usr/share/pki/server/common/lib/
# dnf install -y postgresql-jdbc
# ln -s /usr/share/java/postgresql-jdbc/postgresql.jar /usr/share/pki/server/common/lib
# ln -s /usr/share/java/ongres-scram/client.jar /usr/share/pki/server/common/lib
# ln -s /usr/share/java/ongres-scram/common.jar /usr/share/pki/server/common/lib
# ln -s /usr/share/java/ongres-stringprep/saslprep.jar /usr/share/pki/server/common/lib/
# ln -s /usr/share/java/ongres-stringprep/stringprep.jar /usr/share/pki/server/common/lib/