Dogtag 设置 - 用户指南¶
Dogtag 是 Red Hat 证书系统的开源上游社区版本,这是一个企业级证书管理系统,已部署在一些全球最大的 PKI 部署中。RHCS 已通过 FIPS 140-2 和通用标准认证。
Dogtag 证书颁发机构 (CA) 子系统会颁发、续订和撤销各种类型的证书。它可以作为 barbican 的私有 CA 后端使用,并通过 Dogtag CA 插件与 barbican 交互。
Dogtag KRA 子系统用于在被存储在软件 NSS 数据库或 HSM 中的存储密钥加密后安全地存储密钥。它可以作为 barbican 的密钥存储库,并通过 Dogtag KRA 插件与 barbican 核心交互。
在本指南中,我们将提供有关如何设置包含 CA 和 KRA 的基本 Dogtag 实例,以及如何配置 barbican 以使用此实例作为密钥存储库的说明。有关 Dogtag、其部署选项及其管理的更多详细信息,请参阅 RHCS 文档。
注意: 以下代码摘自 devstack Barbican-Dogtag gate 作业。您可以查看 contrib/devstack/lib/barbican 中的 Dogtag 函数来提取此代码。
安装 Dogtag 包¶
Dogtag 包在 Fedora/RHEL/Centos 以及 Ubuntu/Debian 发行版中可用。本指南将包含适用于 Fedora/RHEL/Centos 的说明。
如果安装在 Fedora 平台上,请使用至少 Fedora 21。要安装所需的包
dnf install pki-ca pki-kra 389-ds-base
为 Dogtag 内部数据库创建目录服务器实例¶
Dogtag CA 和 KRA 子系统使用 389 目录服务器作为内部数据库。按照以下方式配置
mkdir -p /etc/389-ds
cat > /etc/389-ds/setup.inf <<EOF
[General]
FullMachineName= localhost.localdomain
SuiteSpotUserID= nobody
SuiteSpotGroup= nobody
[slapd]
ServerPort= 389
ServerIdentifier= pki-tomcat
Suffix= dc=example,dc=com
RootDN= cn=Directory Manager
RootDNPwd= PASSWORD
EOF
setup-ds.pl --silent --file=/etc/389-ds/setup.inf
创建 Dogtag CA¶
以下 bash 代码使用一些合理的默认值设置 Dogtag CA,使其在 Apache Tomcat 实例上运行在端口 8373 和 8370 上。特定版本的详细文档与 Dogtag 包一起打包和安装为 Linux man 页面。有关如何自定义 Dogtag 实例的更多详细信息,请参阅 pkispawn 的 man 页面或查阅 RHCS 文档。
mkdir -p /etc/dogtag
cat > /etc/dogtag/ca.cfg <<EOF
[CA]
pki_admin_email=caadmin@example.com
pki_admin_name=caadmin
pki_admin_nickname=caadmin
pki_admin_password=PASSWORD
pki_admin_uid=caadmin
pki_backup_password=PASSWORD
pki_client_database_password=PASSWORD
pki_client_database_purge=False
pki_client_pkcs12_password=PASSWORD
pki_clone_pkcs12_password=PASSWORD
pki_ds_base_dn=dc=ca,dc=example,dc=com
pki_ds_database=ca
pki_ds_password=PASSWORD
pki_security_domain_name=EXAMPLE
pki_token_password=PASSWORD
pki_https_port=8373
pki_http_port=8370
pki_ajp_port=8379
pki_tomcat_server_port=8375
EOF
pkispawn -v -f /etc/dogtag/ca.cfg -s CA
创建 Dogtag KRA¶
以下 bash 代码在与上述相同的 Apache Tomcat 实例中设置 Dogtag KRA。在此简单示例中,即使仅将 KRA 用于密钥存储库,也需要设置 CA。
请注意,脚本中应使用机器的实际主机名(而不是 localhost),因为主机名用于 KRA 的 SSL 服务器证书的主题名称中。
mkdir -p /etc/dogtag
hostname=$(hostname)
cat > /etc/dogtag/kra.cfg <<EOF
[KRA]
pki_admin_cert_file=/root/.dogtag/pki-tomcat/ca_admin.cert
pki_admin_email=kraadmin@example.com
pki_admin_name=kraadmin
pki_admin_nickname=kraadmin
pki_admin_password=PASSWORD
pki_admin_uid=kraadmin
pki_backup_password=PASSWORD
pki_client_database_password=PASSWORD
pki_client_database_purge=False
pki_client_pkcs12_password=PASSWORD
pki_clone_pkcs12_password=PASSWORD
pki_ds_base_dn=dc=kra,dc=example,dc=com
pki_ds_database=kra
pki_ds_password=PASSWORD
pki_security_domain_name=EXAMPLE
pki_security_domain_user=caadmin
pki_security_domain_password=PASSWORD
pki_token_password=PASSWORD
pki_https_port=8373
pki_http_port=8370
pki_ajp_port=8379
pki_tomcat_server_port=8375
pki_security_domain_hostname=$hostname
pki_security_domain_https_port=8373
EOF
pkispawn -v -f /etc/dogtag/kra.cfg -s KRA
配置 Barbican 与 Dogtag CA 和 KRA 通信¶
为了使 barbican 与 Dogtag CA 和 KRA 交互,必须使用受信任的代理凭据创建一个 PEM 文件。
PASSWORD=password
USER=barbican
BARBICAN_CONF_DIR=/etc/barbican
openssl pkcs12 -in /root/.dogtag/pki-tomcat/ca_admin_cert.p12 -passin pass:PASSWORD \
-out $BARBICAN_CONF_DIR/kra_admin_cert.pem -nodes
chown $USER $BARBICAN_CONF_DIR/kra_admin_cert.pem
需要修改 barbican 配置文件 (/etc/barbican/barbican.conf)。以下修改将 Dogtag 插件设置为唯一启用的密钥存储库。进行这些更改后,请确保重新启动 barbican。
请注意,脚本中应使用机器的实际主机名(而不是 localhost),因为主机名用于 CA 的 SSL 服务器证书的主题名称中。
[dogtag_plugin]
pem_path = '/etc/barbican/kra_admin_cert.pem'
dogtag_host = $(hostname)
dogtag_port = 8373
nss_db_path = '/etc/barbican/alias'
nss_db_path_ca = '/etc/barbican/alias-ca'
nss_password = 'password'
simple_cmc_profile = 'caOtherCert'
approved_profile_list = 'caServerCert'
[secretstore]
namespace = barbican.secretstore.plugin
enabled_secretstore_plugins = dogtag_crypto
测试设置¶
TODO