仅允许 Apache 进行 https 访问?

仅允许 Apache 进行 https 访问?

我想在 Raspbian 上的 Apache 服务器上仅允许 https,但每次我尝试编辑 /ect/apache2/ 中的 ports.conf 以监听端口 443 并将 sites-available/000-default.conf 设置为:

<VirtualHost *:443>

服务器不再重新启动并且日志告诉我:

You configured HTTP(80) on the standard HTTPS(443) port!

我还缺少什么需要编辑吗?

答案1

错误消息非常直观:您仅配置了端口,而不是 TLS。您应该先阅读SSL/TLS 强加密:操作方法

您的 SSL 配置至少需要包含以下指令。

LoadModule ssl_module modules/mod_ssl.so

Listen 443 

<VirtualHost *:443>
    ServerName www.example.com
    SSLEngine on
    SSLCertificateFile "/path/to/www.example.com.cert"
    SSLCertificateKeyFile "/path/to/www.example.com.key" 
</VirtualHost>

httpd.conf您正在使用的发行版将配置拆分为不同文件夹中的不同文件,因此将所有这些文件添加到或中并不是明智之举apache2.conf,而应该将其添加到包含它们的目的地中。

您正在修改默认非 SSL 站点来自sites-available/,但它们实际上是从与sites-enabled/进行符号链接的位置包含的a2ensite(或ln -s)。sites-available/default与 链接到 一样sites-enabled/000-default, 中的示例配置sites-available/default-ssl应先修改,然后链接到sites-enabled/000-default-ssl。类似地,在使用 命令创建到 的符号链接后LoadModule来自。modules-enabled/modules-available/a2enmod ssl

但当然这还不是全部。TLS 还需要证书和密钥,它们不仅仅是配置文件中的几行,还需要创建和签名。所以是的,你错过了很多

对于懒人来说,这里有各种各样的教程5 分钟内为 Apache 服务器启用 SSL。尽管是 2012-2014 年的,但看起来基本准确。您选择的发行版的手册可能也有自己的页面,这样会更准确。

答案2

仅运行端口 443 并不能实现 HTTPS;它只是告诉 Apache 监听该端口。您需要告诉它对该虚拟主机使用 SSL,并提供必要的 SSL 参数。

例如,对于名为“www.mysite.org”的网站,其网站根目录位于 /var/www/vhost/www.mysite.org/ 且证书密钥存储在“/etc/pki/tls/”下,您可以创建如下配置文件:

LoadModule ssl_module modules/mod_ssl.so

Listen 443
<VirtualHost *:443>
    ServerName www.mysite.org
    DocumentRoot /var/www/vhost/www.mysite.org/

    SSLEngine on
    SSLCertificateFile "/etc/pki/tls/certs/www.mysite.org.cert"
    SSLCertificateKeyFile "/etc/pki/tls/private/www.mysite.org.key"

    # This implements weaker encryption, use it if you have old web clients that can't handle modern strong encryption
    #SSLProtocol      all -SSLv3
    #SSLCipherSuite   HIGH:!aNULL:!MD5

    # This implements strong encryption, disabling everything but TLSv1.2 (and 1.3 when that is implemented)
    SSLProtocol      all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite   ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
</VirtualHost>

如果您的 Apache 配置默认加载 ssl 模块(很可能如此),则可能不需要第一行。我还为您提供了两种加密强度选择,其中较弱的一组被注释掉。请根据需要进行调整。您还可以采取其他措施来增强安全性(例如使用 HSTS)并根据需要自定义网站,但您可以自行查找这些内容(如有必要)。

(如果您有兴趣,可以在此处找到有关 SSL 安全性的良好参考资料https://wiki.mozilla.org/Security/Server_Side_TLS

相关内容