13.5.2. 在目录服务器中使用证书系统发布的证书
要在安装证书系统时使用加密连接,需要使用外部证书颁发机构(CA)或自签名证书签发的证书。但是,在设置证书系统 CA 后,管理员通常希望用证书系统发布的证书替换此证书。
将目录服务器使用的 TLS 证书替换为证书系统发布的证书:
- 在 Directory Server 主机上:
- 停止 Directory 服务器实例:
systemctl stop dirsrv@instance_name
# systemctl stop dirsrv@instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 生成证书签名请求(CSR)。例如,生成一个使用 2048 位 RSA 加密的 CSR,并将其存储在
~/ds.csr
文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 启动 Directory 服务器实例,以启用 CA 来处理请求:
systemctl start dirsrv@instance_name
# systemctl start dirsrv@instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将 CSR 提交到证书系统的 CA。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 在证书系统主机上:
- 将 CA 代理证书导入到网络安全服务(NSS)数据库中以签署 CMC 完整请求:
- 创建新目录。例如:
mkdir ~/certs_db/
# mkdir ~/certs_db/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在新创建的目录中初始化数据库:
certutil -N -d ~/certs_db/
# certutil -N -d ~/certs_db/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 显示 CA 签名证书的序列号:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用上一步中的序列号,将 CA 签名证书下载到
~/certs_db/CA.pem
文件中:pki -p 8080 ca-cert-show 0x87bbe2d --output ~/certs_db/CA.pem
# pki -p 8080 ca-cert-show 0x87bbe2d --output ~/certs_db/CA.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将 CA 签名证书导入到 NSS 数据库中:
pki -d ~/certs_db/ -c password client-cert-import "CA Certificate" --ca-cert ~/certs_db/CA.pem
# pki -d ~/certs_db/ -c password client-cert-import "CA Certificate" --ca-cert ~/certs_db/CA.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 导入代理证书:
pk12util -d ~/certs_db/ -i ~/.dogtag/instance_name/ca_admin_cert.p12
# pk12util -d ~/certs_db/ -i ~/.dogtag/instance_name/ca_admin_cert.p12 Enter Password or Pin for "NSS FIPS 140-2 Certificate DB": password Enter password for PKCS12 file: password pk12util: PKCS12 IMPORT SUCCESSFUL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 通过 CMS(CMC)请求创建证书管理:
- 创建一个配置文件,如
~/sslserver-cmc-request.cfg
,其中包含以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建 CMC 请求:
CMCRequest ~/sslserver-cmc-request.cfg
# CMCRequest ~/sslserver-cmc-request.cfg ... The CMC enrollment request in base-64 encoded format: ... The CMC enrollment request in binary format is stored in ~/sslserver-cmc-request.bin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 提交 CMC 请求:
- 创建一个配置文件,如
~/sslserver-cmc-submit.cfg
,其中包含以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 提交请求:
HttpClient sslserver-cmc-submit.cfg
# HttpClient sslserver-cmc-submit.cfg ... The response in binary format is stored in ~/sslserver-cmc-response.bin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - (可选)验证结果:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 显示 Directory 服务器证书的序列号:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用上一步中的序列号下载证书:
pki -p 8080 ca-cert-show 0xc3eeb0c --output ~/ds.crt
# pki -p 8080 ca-cert-show 0xc3eeb0c --output ~/ds.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将 Directory Server 和 CA 证书的证书复制到 Directory Server 主机上。例如:
scp ~/ds.crt ~/certs_db/CA.pem ds.example.com:~/
# scp ~/ds.crt ~/certs_db/CA.pem ds.example.com:~/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 停止证书系统:
systemctl stop pki-tomcatd@instance_name.service
# systemctl stop pki-tomcatd@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 在 Directory Server 主机上:
- 停止 Directory 服务器实例:
systemctl stop dirsrv@instance_name
# systemctl stop dirsrv@instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 替换证书。详情请查看 Red Hat Directory Server Administration Guide 中的对应部分:
- 删除旧的证书和密钥 CA 证书。请参阅 删除证书。
- 安装证书系统发布的 CA 证书。请参阅安装 CA 证书。
- 为证书系统发布的目录服务器安装证书。请参阅安装证书。
- 启动 Directory 服务器实例:
systemctl start dirsrv@instance_name
# systemctl start dirsrv@instance_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 启动证书系统:
systemctl stop pki-tomcatd@instance_name.service
# systemctl stop pki-tomcatd@instance_name.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 另外,还可配置基于证书的身份验证。详情请查看 第 13.5.3 节 “使用内部数据库启用 SSL/TLS 客户端身份验证”。