Apache 2.4 SSL _default_覆盖虚拟主机

我有一个Apache 2.4服务器,我已经创build了一个自签名证书,用于testinghttps与新的客户端站点。 我遇到的问题是,当我尝试转到在单独的vhosts.conf文件中设置的定义的虚拟主机时,始终为我的站点加载ssl.conf文件。

有人可以帮我理解为什么所需的虚拟主机永远不会加载,只有默认是?

我的ssl.conf内容

Listen 443 https SSL Global Context SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog SSLSessionCache shmcb:/run/httpd/sslcache(512000) SSLSessionCacheTimeout 300 SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin SSLCryptoDevice builtin <VirtualHost _default_:443> DocumentRoot "/var/www/html" ServerName localhost:443 ErrorLog logs/default_ssl_error_log TransferLog logs/default_ssl_access_log LogLevel warn SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> 

我的虚拟主机文件内容

 <VirtualHost demo.ffh.com:443> ServerAdmin [email protected] ServerName demo.ffh.com DocumentRoot "/var/www/vhosts/ffh/public" RewriteEngine On # And THIS doesn't seem to be working at all! LogLevel debug rewrite:trace8 <Directory "/var/www/vhosts/ffh/public/"> AllowOverride all SSLOptions +StdEnvVars #Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all SSLRequireSSL On </Directory> SSLEngine on SSLCertificateKeyFile /etc/httpd/ssl/ssl.key/demo_ffh.key SSLCertificateFile /etc/httpd/ssl/ssl.crt/demo_ffh.crt <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 CustomLog logs/ssl_ffh-access.log combined ErrorLog logs/ssl_ffh-error.log </VirtualHost> 

有没有人看到为什么vhosts.conf网站被忽略,有利于默认? 我该如何解决这个问题? 一整天,我的头撞在墙上。

注意:“可能值得大声呼唤,我已经尝试了vhost.conf中的IP地址和*:443,而不是域名,但仍然没有爱情。

好的…我想我已经修好了 吴

我不确定这件作品到底是什么,但是我做的最后几件事是:

  1. 我创build了一个新的自签名证书,并设置了vhostconfiguration以使用它和相应的密钥。
  2. 然后,我将虚拟主机configuration更改为*:443。
  3. 重新启动Apache服务器。 和VIOLA! 是什么赋予了?!

噢,也许这里学到的教训?

我一直有这个问题,有四个解决scheme

  1. 直接在/etc/httpd/conf.d/ssl.conf中更改指向我的证书和密钥(以及任何其他中间证书?)的path

如果您只有一个SSL证书的整个机器,这是好的。

  1. 从ssl.conf中删除整个默认的虚拟主机条目,

这给了我在SSL.conf中的configuration,并允许我为多个SSL证书确定自己的VirtualHost条目(如有必要)

  1. 把ssl.conf(按字母顺序)放在我想要的conf文件后面,我把它命名为“vhosts.conf”(我将ssl.conf改为“vv.conf”来testing)

这也适用于我的vhosts.conf文件中的多个SSL证书,但是让我感觉很脏,因为我正在更改名称。 我想可以使用010-vhosts.conf 020-ssl.conf的conf.modules.d-meets-sitesenabled语法,并且感觉稍微不太脏。

  1. 把我自己的证书和密钥放在/etc/pki/tls/certs/localhost.crt和/etc/pki/tls/private/localhost.key

呃…也许对一些人来说..虽然我不喜欢那样。