Redhat - 安装后运行命令以生成默认的 localhost.crt?

Redhat - 安装后运行命令以生成默认的 localhost.crt?

我克隆了一个虚拟机,SSL 证书有旧主机名。我需要生成一个新的 SSL 证书。

我的问题是服务器使用什么方法来创建初始证书?这是作为 RPM 的后期安装的一部分完成的吗?如果没有可以运行的生成脚本,我将使用 openssl。谢谢!

答案1

如果您关心保留当前的localhost.crt,请将其从目录中移出,然后输入:

make testcert

/etc/pki/tls/certs

答案2

回答 OP 的问题(而不是提供生成 localhost.crt 的方法):这取决于 Linux 发行版和版本。有许多发行版使用 RPM,但我将提到两种最广泛使用的发行版。

CentOS 7/RHEL 7,它是在安装后包的 scriptlet mod_ssl。运行以下命令查看完整的 scriptlet:

rpm -q --scripts mod_ssl

实际创建证书的部分是这样的:

cat << EOF | /usr/bin/openssl req -new -key /etc/pki/tls/private/localhost.key \
         -x509 -sha256 -days 365 -set_serial $RANDOM -extensions v3_req \
         -out /etc/pki/tls/certs/localhost.crt 2>/dev/null

Fedora 29,事情有点复杂:

  • httpd服务(/usr/lib/systemd/system/httpd.service)对httpd-初始化服务
  • httpd-初始化服务( /usr/lib/systemd/system/httpd-init.service) 是该包的一部分mod_ssl
  • httpd-初始化服务执行/usr/libexec/httpd-ssl-gencerts,使用 生成证书sscg

相关部分如下/usr/libexec/httpd-ssl-gencerts

sscg -q                                                             \
     --cert-file           /etc/pki/tls/certs/localhost.crt         \
     --cert-key-file       /etc/pki/tls/private/localhost.key       \
     --ca-file             /etc/pki/tls/certs/localhost.crt         \
     --lifetime            365                                      \
     --hostname            $FQDN                                    \
     --email               root@$FQDN

sscg工具是一个小型独立程序(不是脚本)。引用 Fedora 软件包描述:

帮助创建更安全的“自签名”证书的实用程序。此工具创建的证书以创建 CA 证书的方式生成,该证书可以安全地导入到客户端计算机中以信任服务证书,而无需设置完整的 PKI 环境,也不会使计算机面临服务证书的虚假签名风险。

答案3

您可以使用以下命令快速生成新的自签名证书和私钥,并按照提示操作即可。

openssl req -new -x509 -newkey rsa:2048 -keyout server.key -nodes -days 3650 -out server.crt

当我不关心证书的属性而只希望主机名匹配时,我发现非常有用的一件事是,你可以将属性导入到 openssl 中,只需更改测试.示例.tld在下面的命令中匹配您想要使用的任何主机名。它将保留所有属性为空白,您最终将在当前目录中获得 server.crt 和 server.key:

echo -e "XX\n\n \n \n\ntest.example.tld\n\n" | openssl req -new -x509 -newkey rsa:2048 -keyout server.key -nodes -days 3650 -out server.crt &> /dev/null

相关内容