我按照本指南为本地开发服务器生成了自签名证书https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-18-04
当系统询问时,我将服务器 IP 设置为“通用名称”值。我没有设置防火墙。
一旦完成了指南建议的所有其他修改,我就可以https://192.168.1.202
问题在于
我有一些想要保护的虚拟主机,因此我尝试使用相同的证书通过 https 访问我的网站,但我总是被重定向到 apache 根页面。
这是我的配置文件
/etc/apache2/sites-enabled/kopakabana.conf
<VirtualHost *:80>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key`
....
</VirtualHost>
我哪里错了?
答案1
您似乎在虚拟主机配置中监听端口 80 而不是端口 443。
第一行应该是:
<VirtualHost *:443>
可能还存在其他问题。您提到了以下内容:
我有一些想要保护的虚拟主机,因此我尝试使用相同的证书通过 https [...] 访问我的网站。
然而,您还提到您正在使用服务器的 IP 地址访问您的网站。
这种方法不起作用,您不能让多个虚拟主机监听同一台主机,只有一个可以起作用。
例如,假设您有以下两个虚拟主机:
example.conf
kopakabana.conf
当您通过 Apache 访问您的服务器时,它需要确定需要为哪个站点提供服务。它无法同时为两个站点提供服务。
由于您通过 IP 访问您的网站,Apache 将为第一个匹配的虚拟主机提供服务。在您的情况下,它可能会解析为默认配置文件。
您需要做的是实际为虚拟主机分配一个服务器名称。如果您想使用相同的证书运行它们,您可以将它们创建为子域并为其分配通配符证书。
例如,考虑以下虚拟主机:
example.conf
<VirtualHost *:443> ServerName example.mymachine.local # [...] </VirtualHost>
kopakabana.conf
<VirtualHost *:443> ServerName kopakabana.mymachine.local # [...] </VirtualHost>
*.mymachine.local
在这种情况下,您可以为它们两者创建一个证书并在其上使用它。
接下来,只需在您自己的机器上编辑该/etc/hosts
文件并将以下内容附加到其中,以便您的浏览器可以正确解析域。
192.168.1.202 example.mymachine.local
192.168.1.202 kopakabana.mymachine.local
https://192.168.1.202
最后,您不是访问 ,而是访问https://kopakabana.mymachine.local
或https://example.mymachine.local
。