这是一个非常简单的问题。
我托管了几个网站。有些是 HTTP,有些是 HTTP 和 HTTPS。它们都正常工作。
但是,如果我将一个域名指向尚未设置 SSL 配置的服务器,从而搞乱了一个 SSL 网站,它将重定向到另一个网站,而不是显示错误。在最坏的情况下,一个域名可能会重定向到竞争对手的网站。这可不妙。
为了更好地说明这个问题,假设我有两个公司站点。
- A公司
- B公司
假设我有A公司完全设置。我迁移B公司的内容 - 但我还没有设置 SSL 配置。所以我只是移过 HTTP 配置文件。当我重新加载 Apache 时,它将开始提供 HTTP 请求 - 但对于 SSL,它将“失败”,请求最终到达第一个配置了 SSL 的网站(按字母顺序排序)。
我想要的和条目一样<VirtualHost *:80>
。
一个默认的后备<VirtualHost *:443>
条目。
我尝试将其放入000-default.conf
:
<VirtualHost *:443>
SSLEngine On
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
但这只会导致错误,并且几乎所有托管网站都会崩溃。我该怎么做?我甚至不介意默认在 443 上抛出错误,因为我甚至不想弄乱主机本身的证书。但我该怎么做呢?
答案1
这有效:
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- 将其添加到默认/最顶层配置文件。
- 确保已安装“snakeoil”证书。在 Ubuntu/Debian 上,这是软件包
ssl-cert
。我已经安装了它 - 您可能也已经安装了它。 - 请记住在添加指令后重新加载 Apache2。始终测试其他站点。
如果 SSL 站点配置错误或无法加载,这将加载默认的 Ubuntu / Debian / 任何欢迎页面。仍然比回到实际真实但完全不相关的网站要好。(: