httpd (apache?)
我正在尝试为我实验室内部托管的网站上的 HTTPS/SSL配置运行 (2.4.37-21) 的 Centos 8 (8.1.1911) VM 。
我的实验室由离线根(Windows)和在线中间(Windows)组成。
遵循的步骤如下:
使用以下方式安装 ssl 模块
yum install mod_ssl
生成私钥:
openssl genpkey -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out priv.key
openssl req -new -nodes -key priv.key -config csrconfig.txt -out cert.csr
使用以下配置文件生成 CSR :
csrconfig.txt
[ req ]
default_md = sha256
prompt = no
req_extensions = req_ext
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
commonName = <REDACTED>
countryName = <REDACTED>
stateOrProvinceName = <REDACTED>
localityName = <REDACTED>
organizationName = <REDACTED>
[ req_ext ]
keyUsage=critical,digitalSignature,keyEncipherment
extendedKeyUsage=serverAuth,clientAuth
basicConstraints=critical,CA:false
subjectAltName = @alt_names
[ alt_names ]
DNS.0 = <REDACTED-FQDN>
DNS.1 = <REDACTED-HOSTNAME>
IP.0 = <REDACTED-IP>
使用“Web 服务器”模板将内容提交
cert.csr
到在线 Windows 中级 CA。下载 base64 编码的证书链
将 3 个证书(根证书、中间证书、Web 服务器证书)分别提取到单独的文件中
连接:
-----BEGIN CERTIFICATE-----
WEB-SERVER-CERT
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
INTERMEDIATE-CA-CERT
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
ROOT-CA-CERT
-----END CERTIFICATE-----
创建
/etc/ssl/<REDACTED>/
目录我将 pem 格式的证书文件和密钥文件放入上述目录中
附加以下内容至
/etc/httpd/httpd.conf
:
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf
- 在下方创建虚拟服务器文件
sites-available
并将其符号链接到sites-enabled
(请参阅下面的目录列表和内容):
[root@wiki httpd]# ls -l sites*
sites-available:
total 8
-rw-r--r--. 1 root root 148 Sep 27 13:20 wiki-docs.conf
sites-enabled:
total 0
lrwxrwxrwx. 1 root root 41 Sep 22 20:40 wiki-docs.conf -> /etc/httpd/sites-available/wiki-docs.conf
[root@wiki httpd]# cat sites-available/wiki-docs.conf
<VirtualHost *:443>
ServerName <REDACTED>
ServerAlias <REDACTED>
DocumentRoot /var/www/wiki-docs/site
SSLEngine on
SSLCertificateFile /etc/ssl/<REDACTED>/<REDACTED>.pem
SSLCertificateKeyFile /etc/ssl/<REDACTED>/priv.key
</VirtualHost>
- 使用以下代码重启 httpd
systemctl restart httpd
我面临以下两个问题:
- 由于 Apache 没有通过浏览器将完整的证书链与证书一起包含在内,因此该网站被视为不受信任,它显示证书是由其自身签名的?两个证书(Web 服务器和明显的发行人相同):
- 提供的网页是原始网页,而不是目标文件。请注意,如果我从上面的块中删除 SSL 语句并将端口 443 切换回 80(http 而不是 https),
Apache HTTP Server Test Page powered by CentOS
则此操作完全正常。VirtualServer
会不会存在问题,因为我使用的是实验室中构建的自定义根 CA,而这个根 CA 不会作为受信任的根 CA 安装到这个 CentOS 机器上?很难弄清楚是什么原因导致了上述问题。