我一直在尝试使用 Apache 2.4 制作具有自签名证书的虚拟主机。我尝试了许多设置组合,但无论如何,我在 Firefox 中尝试的每个虚拟主机都会直接进入默认主机(清除缓存后)。我得到的唯一错误消息是在 Apache error.log 中(所有子域虚拟主机日志都没有错误消息):
[Mon Jun 17 19:32:48.866641 2019] [ssl:debug] [pid 3084] ssl_engine_kernel.c(2122): [client 192.168.1.100:57956] AH02044: No matching SSL virtual host for servername subdomain.7d.net found (使用默认/第一个虚拟主机)
当前设置是基于 IP 的虚拟主机(一个物理 IP 地址由默认主机使用,许多虚拟 IP 地址用于许多虚拟主机,一对一)。在此之前,Apache 使用基于名称的虚拟主机,只有一个物理 IP 地址具有相同的行为。
每个虚拟主机都使用自己的自签名证书,在此之前所有虚拟主机都使用一个。由于 SSL 证书,未报告任何错误消息。每个证书都与其对应的名称匹配。OpenSSL 1.1.0用于生成证书。
除了自签名证书 Apache 正在使用Starfield Class 2 Certificate Authority
.
没有安装 DNS 服务器,只有一个/etc/hosts
文件,每个 IP 地址和主机名都运行良好。
Apache 2.4.25在Debian GNU/Linux «Stretch»上运行。
ports.conf(我尝试将Listed 443
指令放在条件块之外,但行为是相同的)。
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
001-默认-ssl.conf
<IfModule mod_ssl.c>
#<VirtualHost 192.168.1.201:443>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName triplecero.7d.net
#ServerAlias www.7d.net
DocumentRoot /var/www/html
LogLevel info ssl:debug
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include conf-available/serve-cgi-bin.conf
SSLEngine On
SSLCertificateFile /etc/ssl/localcerts/triplecero.7d.net.crt
SSLCertificateKeyFile /etc/ssl/localcerts/triplecero.7d.net.key
SSLCACertificateFile /etc/ssl/certs/Starfield_Class_2_CA.pem
SSLVerifyClient optional
SSLVerifyDepth 10
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
</IfModule>
子域.conf
<VirtualHost 192.168.1.210:433>
#<VirtualHost subdomain.7d.net:433>
ServerName subdomain.7d.net
DocumentRoot "/var/www/subdomain"
DirectoryIndex index.php
LogLevel info ssl:debug
CustomLog ${APACHE_LOG_DIR}/subdomain-access.log combined
ErrorLog ${APACHE_LOG_DIR}/subdomain-error.log
SSLEngine On
SSLCertificateFile "/etc/ssl/localcerts/subdomain.7d.net.crt"
SSLCertificateKeyFile "/etc/ssl/localcerts/subdomain.7d.net.key"
SSLCACertificateFile "/etc/ssl/certs/Starfield_Class_2_CA.pem"
SSLVerifyClient optional
SSLVerifyDepth 10
<Directory "/var/www/subdomain">
Redirect "http://subdomain.7d.net" "https://subdomain.7d.net"
Require all granted
AllowOverride All
</Directory>
</VirtualHost>
阿帕奇2状态:
Triplecero:~# apache2ctl -S 虚拟主机配置: 192.168.1.210:433 subdomain.7d.net (/etc/apache2/sites-enabled/grupoglobaleyr.conf:3) [许多其他虚拟主机省略] *:80 Triplecero.7d.net (/etc/apache2/sites-enabled/000-default.conf:2) *:443 是一个 NameVirtualHost 默认服务器 Triplecero.7d.net (/etc/apache2/sites-enabled/001-default-ssl.conf:3) 端口 443 namevhost Triplecero.7d.net (/etc/apache2/sites-enabled/001-default-ssl.conf:3) 端口 443 namevhost Triplecero.7d.net (/etc/apache2/sites-enabled/002-default-tls.conf:2) 服务器根目录:“/etc/apache2” 主文档根目录:“/var/www/html” 主要错误日志:“/var/log/apache2/error.log” 互斥锁默认:dir="/var/run/apache2/" 机制=默认 互斥体 mpm-accept: using_defaults 互斥体 fcgid 管道:using_defaults 互斥看门狗回调:using_defaults 互斥体重写映射:using_defaults Mutex ssl-stapling-refresh: using_defaults 互斥 gnutls-cache: using_defaults 互斥 gnutls-ocsp: using_defaults 互斥锁 fcgid-proctbl: using_defaults 互斥 ssl 装订:using_defaults 互斥代理: using_defaults 互斥 ssl 缓存:using_defaults PidFile:“/var/run/apache2/apache2.pid” 定义:DUMP_VHOSTS 定义:DUMP_RUN_CFG 用户:name="www-data" id=33 组:name="www-data" id=33 三重奏:~#
子域-error.log
[Tue Jun 18 00:05:46.274025 2019] [ssl:info] [pid 3050] AH01914:为 SSL 协议配置服务器 subdomain.7d.net:443 [2019 年 6 月 18 日星期二 00:05:46.274415] [ssl:debug] [pid 3050] ssl_engine_init.c(1756): AH02209: CA 证书: OU=Starfield Class 2 Certification Authority,O=Starfield Technologies\\, Inc., C=美国 [2019 年 6 月 18 日星期二 00:05:46.274481] [ssl:debug] [pid 3050] ssl_engine_init.c(413): AH01893: 配置 TLS 扩展处理 [Tue Jun 18 00:05:46.340584 2019] [ssl:debug] [pid 3050] ssl_util_ssl.c(443): AH02412: [subdomain.7d.net:443] 名称“subdomain.7d.net”的证书匹配 [主题:emailAddress=triplecerogmail.com,CN=subdomain.7d.net,OU=Development,O=ZZZ Corp.,L=Skycity,ST=Highstate,C=XX / 发行人:emailAddress=triplecerogmail.com,CN=subdomain。 7d.net,OU=Development,O=ZZZ Corp.,L=Skycity,ST=Highstate,C=XX / 序列号:B06BB41BBE840955 / 之前:格林威治标准时间 2019 年 6 月 16 日 22:00:11 / 之后:6 月 15 日 22:00:格林威治标准时间 2020 年 11 月] [Tue Jun 18 00:05:46.340606 2019] [ssl:info] [pid 3050] AH02568:从 /etc/ssl/localcerts/subdomain.7d.net 配置的证书和私钥 subdomain.7d.net:443:0。 crt 和 /etc/ssl/localcerts/subdomain.7d.net.key
重定向的原因是指令中设置了错误的逻辑端口(
433
相反443
)VirtualHost
(实际上,在每个虚拟主机中)。Apache 文件中从未声明过 433 端口
ports.conf
,因此未找到任何虚拟主机,导致重定向到默认 SSL 虚拟主机。感谢@Freddy 发现了“小错误”。
“(所有子域虚拟主机日志都没有错误消息)”
那是(应该是)你的线索。:) 这里有几个(conf)文件在起作用。我猜你已经(基本上)省略了
extra/httpd-vhosts.conf
. 它定义了所有/任何虚拟主机。2.4 版变得比它的前辈更加模块化。因此,大多数旧方法要么不起作用,要么已被移动。
apache24/httpd.conf
保存全局配置和主要主机/IP 的东西。apache24/extra/httpd-vhosts.conf
常见的虚拟主机定义。好的,现在我们继续查看各个V主机
.conf
文件apache24/extra/hosts/*.conf
这就是文件中满足 apache(2.4) 所需的所有相关信息。如您所见,我 1) 使用“letsencrypt”作为我的证书提供者,2) 我正在分享我的一个 BSD 盒子中的示例。但这只会改变Apache 安装路径的根目录。来自
apache24
(包括文件夹)的所有内容都apache24
应该是相同的。所以如果你跟着,你应该设置。这并不能保证您的证书会通过集合。但这是针对不同的线程。:)
高温高压