网站搜索

如何在 RHEL/CentOS 7.0 上为 Apache 创建自签名 SSL 证书和密钥


SSL安全套接字层)是一种加密协议,允许使用由证书颁发机构签名的数字证书,使用对称/非对称密钥在服务器与其客户端之间实现安全数据流(加利福尼亚州)。

要求

  1. RHEL/CentOS 7.0 上的基本 LAMP 安装

本教程提供了如何在 Red Hat Enterprise Linux/CentOS 7.0< 中安装的 Apache Web 服务器上设置安全套接字层 (SSL) 通信加密协议的方法/strong>,并在 bash 脚本的帮助下生成自签名证书和密钥,这大大简化了整个过程。

第 1 步:安装并配置 Apache SSL

1. 要在 Apache HTTP Server 上启用 SSL,请使用以下命令安装 SSL/TLS 支持所需的 SSL 模块和 OpenSSL 工具包。

yum install mod_ssl openssl

2. 安装 SSL 模块后,重新启动 HTTPD 守护程序并添加新的防火墙规则,以确保 SSL 端口 – 443 – 打开您的计算机上的外部连接处于侦听状态。

systemctl restart httpd
firewall-cmd --add-service=https   ## On-fly rule

firewall-cmd --permanent  --add-service=https   ## Permanent rule – needs firewalld restart

3. 要测试 SSL 连接,请打开远程浏览器并使用 https://server_IP 上的 HTTPS 协议导航到您的服务器 IP 地址。

第 2 步:创建 SSL 证书和密钥

4. 之前服务器和客户端之间的 SSL 通信是使用安装时自动生成的默认证书和密钥完成的。为了生成新的私钥和自签名证书对,请在可执行系统路径 (` PATH) 上创建以下 bash 脚本。

对于本教程,选择了 /usr/local/bin/ 路径,确保脚本设置了可执行位,然后将其用作在 /etc/ 上创建新 SSL 对的命令httpd/ssl/ 作为证书和密钥的默认位置。

nano /usr/local/bin/apache_ssl

使用以下文件内容。

#!/bin/bash
mkdir /etc/httpd/ssl
cd /etc/httpd/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Apache SSL Certificate and Key!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The Certificate and Key for $cert has been generated!\nPlease link it to Apache SSL available website!"
ls -all /etc/httpd/ssl
exit 0

5. 现在使该脚本可执行并启动它,为您的 Apache SSL 虚拟主机生成一对新的证书和密钥。

填写您的信息,并注意通用名称值以匹配您的服务器 FQDN,或者在虚拟主机的情况下,以匹配您在连接到安全网站时将访问的网址。

chmod +x /usr/local/bin/apache_ssl
apache_ssl

6. 生成证书和密钥后,脚本将显示存储在 /etc/httpd/ssl/ 位置中的所有 Apache SSL 对的长列表。

7. 生成 SSL 证书和密钥的其他方法是在系统上安装 crypto-utils 软件包并使用 genkey 命令生成对,该命令可以会带来一些问题,尤其是在 Putty 终端屏幕上使用时。

因此,我建议仅当您直接连接到屏幕显示器时才使用此方法。

yum install crypto-utils
genkey your_FQDN

8. 要将新证书和密钥添加到您的 SSL 网站,请打开您的网站配置文件,并将 SSLCertificateFileSSLCertificateKeyFile 语句替换为新对相应的位置和名称。

9. 如果证书不是由受信任的 CA – 证书颁发机构颁发的,或者证书中的主机名与建立连接的主机名不匹配,则您的浏览器上会出现错误,您必须手动接受证书。

就是这样!现在您可以在 RHEL/CentOS 7.0 上使用 apache_ssl 作为命令行来生成所需的多对自签名证书和密钥,并且所有内容都将保存在 /etc/httpd/ 上ssl/ 路径,其中密钥文件受 700 权限保护。