httpd https/ssl 未发送证书链

httpd https/ssl 未发送证书链

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>
  • 使用以下代码重启 httpdsystemctl restart httpd

我面临以下两个问题:

  1. 由于 Apache 没有通过浏览器将完整的证书链与证书一起包含在内,因此该网站被视为不受信任,它显示证书是由其自身签名的?两个证书(Web 服务器和明显的发行人相同):

在此处输入图片描述 在此处输入图片描述

  1. 提供的网页是原始网页,而不是目标文件。请注意,如果我从上面的块中删除 SSL 语句并将端口 443 切换回 80(http 而不是 https),Apache HTTP Server Test Page powered by CentOS则此操作完全正常。VirtualServer

会不会存在问题,因为我使用的是实验室中构建的自定义根 CA,而这个根 CA 不会作为受信任的根 CA 安装到这个 CentOS 机器上?很难弄清楚是什么原因导致了上述问题。

相关内容