1.14. 从 NSS 数据库导出私钥和证书,以便在 Apache Web 服务器配置中使用它们
RHEL 8 不再为 Apache web 服务器提供mod_nss
模块,红帽建议使用mod_ssl
模块。如果您将私钥和证书存储在网络安全服务(NSS)数据库中,例如,因为您将 web 服务器从 RHEL 7 迁移了到 RHEL 8,请按照以下步骤以 Privacy Enhanced Mail(PEM)格式提取密钥和证书。然后,您可以使用 mod_ssl
配置中的文件,如 在 Apache HTTP 服务器上配置 TLS 加密 中所述。
这个过程假设 NSS 数据库存储在 /etc/httpd/alias/
中,并将导出的私钥和证书存储在/etc/pki/tls/
目录中。
先决条件
- 私钥、证书和证书颁发机构(CA)证书存储在 NSS 数据库中。
流程
列出 NSS 数据库中的证书:
# certutil -d /etc/httpd/alias/ -L Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI Example CA C,, Example Server Certificate u,u,u
在下一步中需要证书的别名。
要提取私钥,您必须临时将密钥导出到一个 PKCS #12 文件:
使用与私钥关联的证书的别名,将密钥导出到一个 PKCS #12 文件:
# pk12util -o /etc/pki/tls/private/export.p12 -d /etc/httpd/alias/ -n "Example Server Certificate" Enter password for PKCS12 file: password Re-enter password: password pk12util: PKCS12 EXPORT SUCCESSFUL
请注意,您必须在 PKCS #12 文件中设置一个密码。下一步需要这个密码。
从 PKCS #12 文件中导出私钥:
# openssl pkcs12 -in /etc/pki/tls/private/export.p12 -out /etc/pki/tls/private/server.key -nocerts -nodes Enter Import Password: password MAC verified OK
删除临时 PKCS #12 文件:
# rm /etc/pki/tls/private/export.p12
对
/etc/pki/tls/private/server.key
设置权限,以确保只有root
用户才可以访问该文件:# chown root:root /etc/pki/tls/private/server.key # chmod 0600 /etc/pki/tls/private/server.key
使用 NSS 数据库中的服务器证书的别名导出 CA 证书:
# certutil -d /etc/httpd/alias/ -L -n "Example Server Certificate" -a -o /etc/pki/tls/certs/server.crt
对
/etc/pki/tls/certs/server.crt
设置权限,以确保只有root
用户才可以访问该文件:# chown root:root /etc/pki/tls/certs/server.crt # chmod 0600 /etc/pki/tls/certs/server.crt
使用 NSS 数据库中 CA 证书的别名导出 CA 证书:
#
certutil -d /etc/httpd/alias/ -L -n "Example CA" -a -o /etc/pki/tls/certs/ca.crt
按照 在 Apache HTTP 服务器上配置 TLS 加密 来配置 Apache web 服务器,并:
-
将
SSLCertificateKeyFile
参数设置为/etc/pki/tls/private/server.key
。 -
将
SSLCertificateFile
参数设置为/etc/pki/tls/certs/server.crt
。 -
将
SSLCACertificateFile
参数设置为/etc/pki/tls/certs/ca.crt
。
-
将
其它资源
-
certutil (1)
手册页 -
pk12util(1)
手册页 -
pkcs12(1ssl)
手册页