我按照本指南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>
我哪里错了?
您似乎在虚拟主机配置中侦听端口 80 而不是端口 443。
第一行应该是:
可能还有另一个问题。您提到以下内容:
然而,您还提到您正在使用服务器的 IP 地址访问您的站点。
这种方法是行不通的,你不能让多个虚拟主机在同一个主机上监听,只有一个可以工作。
例如,假设您有以下两个虚拟主机:
example.conf
kopakabana.conf
当您通过 Apache 访问您的服务器时,它需要确定它需要服务的站点。它不能同时为两者服务。
由于您通过 IP 访问您的站点,因此 Apache 将为第一个匹配的虚拟主机提供服务。在您的情况下,它可能会解析为默认配置文件。
您需要做的是实际为您的虚拟主机分配一个服务器名称。如果您想使用相同的证书运行它们,您可以将它们创建为子域并为其分配通配符证书。
例如,考虑以下虚拟主机:
example.conf
kopakabana.conf
在这种情况下,您将为它们创建一个证书
*.mymachine.local
并在它们上使用它。接下来,只需
/etc/hosts
在您自己的计算机上编辑该文件并将以下内容附加到它,以便您的浏览器可以正确解析域。最后,
https://192.168.1.202
您将访问https://kopakabana.mymachine.local
or ,而不是访问https://example.mymachine.local
。