我读到过,解决这个问题的一般方法是添加
NameVirtualHost *:80
和
NameVirtualHost *:443
到 VirtualHosts。但是 Apache 2.4 告诉我:
AH00548:NameVirtualHost 无效,将在下一版本中删除
我不知道该怎么做:
我的端口.conf:
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
添加
<IfModule mod_ssl.c>
Listen 443
</IfModule>
而不是上面的 ssl_module 部分不会改变任何东西。
我的 VirtualHost 看起来像
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName www.example.org
DocumentRoot /var/www/htdocs/mw/
...
<IfModule mod_ssl.c>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.org/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.org/chain.pem
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNUL$
</IfModule>
...
</VirtualHost>
我不知道为什么为 SSL 添加 VirtualHost 如此痛苦。我相信我已经遵循了说明。
谢谢你的时间。
答案1
关于这个有很多内容堆栈溢出有趣的是,这里的解决方案与那里的建议完全相反。我不得不改变
<VirtualHost *:443>
到
<VirtualHost example.org:443>
这真是令人困惑。我想知道当我添加第二个域时会发生什么。让我们拭目以待吧。
另一个问题:是否有解决方案可以
<VirtualHost *:443>
在每个 VirtualHost 中,而不是指定域。我怀疑我不会得到这个问题的答案。
答案2
您不能在同一个 IP 地址上拥有多个命名主机,或者如果拥有,则需要一个证书来涵盖所有地址。您收到的错误与 SSL 协商有关。当稍后(在 SSL 协商之后)发送主机名时,如何选择正确的证书?apache wiki 在此处有更多信息: http://wiki.apache.org/httpd/NameBasedSSLVHosts