27.6. 在 Apache HTTP 服务器中添加 TLS 加密
您可以在 example.com
域的 Apache HTTP 服务器上启用 TLS 加密。
先决条件
- Apache HTTP 服务器已安装并运行。
私钥存储在
/etc/pki/tls/private/example.com.key
文件中。有关创建私钥和证书签名请求(CSR)的详细信息,以及如何从证书颁发机构(CA)请求证书,请参阅您的 CA 文档。
-
TLS 证书存储在
/etc/pki/tls/certs/example.com.crt
文件中。如果您使用其他路径,请调整该流程的对应步骤。 -
CA 证书存储在
/etc/pki/tls/certs/ca.crt
文件中。如果您使用其他路径,请调整该流程的对应步骤。 - 客户端和网页服务器会将服务器的主机名解析为 web 服务器的 IP 地址。
- 如果服务器运行 RHEL 9.2 或更高版本,并且启用了 FIPS 模式,则客户端必须支持 Extended Master Secret(EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅红帽知识库解决方案 强制实施 TLS 扩展"Extended Master Secret" 。
流程
安装
mod_ssl
软件包:dnf install mod_ssl
# dnf install mod_ssl
Copy to Clipboard Copied! 编辑
/etc/httpd/conf.d/ssl.conf
文件,并将以下设置添加到<VirtualHost _default_:443>
指令中:设置服务器名称:
ServerName example.com
ServerName example.com
Copy to Clipboard Copied! 服务器名称必须与证书的
Common Name
字段中设置的条目匹配。可选: 如果证书在
Subject Alt Names
(SAN)字段中包含额外的主机名,您可以配置mod_ssl
来为这些主机名提供 TLS 加密。要配置此功能,请添加具有对应名称的ServerAliases
参数:ServerAlias www.example.com server.example.com
ServerAlias www.example.com server.example.com
Copy to Clipboard Copied! 设置到私钥、服务器证书和 CA 证书的路径:
SSLCertificateKeyFile "/etc/pki/tls/private/example.com.key" SSLCertificateFile "/etc/pki/tls/certs/example.com.crt" SSLCACertificateFile "/etc/pki/tls/certs/ca.crt"
SSLCertificateKeyFile "/etc/pki/tls/private/example.com.key" SSLCertificateFile "/etc/pki/tls/certs/example.com.crt" SSLCACertificateFile "/etc/pki/tls/certs/ca.crt"
Copy to Clipboard Copied!
出于安全考虑,配置成只有
root
用户才可以访问私钥文件:chown root:root /etc/pki/tls/private/example.com.key chmod 600 /etc/pki/tls/private/example.com.key
# chown root:root /etc/pki/tls/private/example.com.key # chmod 600 /etc/pki/tls/private/example.com.key
Copy to Clipboard Copied! 警告如果私钥被设置为可以被未授权的用户访问,则需要撤销证书,然后再创建一个新私钥并请求一个新证书。否则,TLS 连接就不再安全。
验证
-
使用浏览器连接到
https://example.com
。