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 数据库中的证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在下一步中需要证书的别名。
要提取私钥,您必须临时将密钥导出到一个 PKCS #12 文件:
使用与私钥关联的证书的别名,将密钥导出到一个 PKCS #12 文件:
pk12util -o /etc/pki/tls/private/export.p12 -d /etc/httpd/alias/ -n "Example Server Certificate"
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,您必须在 PKCS #12 文件中设置一个密码。下一步需要这个密码。
从 PKCS #12 文件中导出私钥:
openssl pkcs12 -in /etc/pki/tls/private/export.p12 -out /etc/pki/tls/private/server.key -nocerts -nodes
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除临时 PKCS #12 文件:
rm /etc/pki/tls/private/export.p12
# rm /etc/pki/tls/private/export.p12
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
对
/etc/pki/tls/private/server.key
设置权限,以确保只有root
用户才可以访问该文件:chown root:root /etc/pki/tls/private/server.key chmod 0600 /etc/pki/tls/private/server.key
# chown root:root /etc/pki/tls/private/server.key # chmod 0600 /etc/pki/tls/private/server.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 NSS 数据库中的服务器证书的别名导出 CA 证书:
certutil -d /etc/httpd/alias/ -L -n "Example Server Certificate" -a -o /etc/pki/tls/certs/server.crt
# certutil -d /etc/httpd/alias/ -L -n "Example Server Certificate" -a -o /etc/pki/tls/certs/server.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对
/etc/pki/tls/certs/server.crt
设置权限,以确保只有root
用户才可以访问该文件:chown root:root /etc/pki/tls/certs/server.crt chmod 0600 /etc/pki/tls/certs/server.crt
# chown root:root /etc/pki/tls/certs/server.crt # chmod 0600 /etc/pki/tls/certs/server.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 NSS 数据库中 CA 证书的别名导出 CA 证书:
certutil -d /etc/httpd/alias/ -L -n "Example CA" -a -o /etc/pki/tls/certs/ca.crt
# certutil -d /etc/httpd/alias/ -L -n "Example CA" -a -o /etc/pki/tls/certs/ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 按照 在 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
。
-
将