我在远程 VPS 上有一个 Apache 服务器。我只打开了端口 80 和 443。我目前使用端口 443 进行 SSH,使用端口 80 进行 HTTP。
我想让端口 80 使用 HTTPS 而不是 HTTP。我看到的所有解决方案都是将 HTTP 重定向到 HTTPS,如下所示:
Redirect permanent / https://mywebsite.com/
但我不认为这会起作用。
答案1
如果您将 ssh 保留在端口 443 上,它将无法工作,但是如果您将其移动到另一个端口,它就会工作。
当然,你可以将 Apache 配置为在端口 80 上使用 HTTPS,但这意味着你的用户必须明确指定要使用的端口,例如https://www.example.com:80/yourfile.html因为通常浏览器会期望在端口 80 上使用 http 而在端口 443 上使用 https。此外,用户可能会遇到防火墙问题,防火墙会做出同样的假设并阻止端口 80 上的 https。
答案2
将 SSH 端口更改为其他端口。老实说,我保留默认端口 22 - 我觉得没有理由更改它,尽管很多人建议更改它。如果更改它,确实很难找出 SSH 端口,但这并非不可能。
此外,您需要在 80 (http) 上为 Apache 提供服务,在 443 (HTTPS) 上为 Apache SSL 提供服务。如果您想通过在 Apache 端设置重定向来强制将 HTTP 重定向到 HTTPS,但是,如果您不尝试强制将 http 重定向到 https,则只需确保在 Apache 上配置并启用了 SSL(如果您不强制将 http 重定向到 https,则无需重定向)。
默认端口:
22->SSH 80->HTTP 443->HTTPS
推荐:
切勿将服务设置为使用众所周知另一项服务的端口。
答案3
只需设置一个虚拟主机来处理来自端口 80 的所有传入请求。如下所示:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/apache2/pathtocert/Cert
SSLCertificateKeyFile /etc/apache2/pathtoprivateKey/Privk
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
虽然这会破坏传入的 HTTP 请求,但它可以实现确保端口 80 安全的目的(通过使任何倾向于以不安全的方式访问该端口的人无法这样做)。
笔记:重定向方法仍然会使您的用户遭受 MITM 攻击。