如何使Apache 80端口安全?

我有远程VPS上的apache服务器。 我只有端口80和443打开。 我目前使用SSH的端口443和HTTP的80。

我想让端口80使用HTTPS而不是HTTP。 我看到的所有解决scheme都是像这样将HTTPredirect到HTTPS:

Redirect permanent / https://mywebsite.com/ 

但我不认为这会奏效。

如果你在端口443上保留ssh,它将不起作用,但是如果你把它移到另外一个端口上,它就会工作。

当然,您可以将Apacheconfiguration为在端口80上使用HTTPS,但是这意味着您的用户必须明确指定要使用的端口,例如https://www.example.com:80/yourfile.html,因为通常情况下,浏览器希望在端口80上讨论http,在端口443上讨论https。另外,用户可能遇到防火墙的问题,这些防火墙会做出相同的假设,并在端口80上阻塞https。

如果您在端口80上设置HTTPS,这将打破大多数Web浏览器。 HTTPS应该在443上。如果有人会去“ HTTPS://example.com ”; 它不会工作; 同样,如果他们去“ HTTP://example.com ”也不会工作。 只有当他们去“ HTTPS://example.com:80 ”才能工作。 因此,可以通过deviseselect来拒绝这种configuration。

改变你的SSH端口到别的东西。 老实说,我保持在默认的22 – 我觉得没有理由改变这一点,即使很多人build议改变它。 如果你改变它,确实很难找出SSH端口,但这不是不可能的。

此外,您需要在80(http)上提供Apache,并在443(HTTPS)上提供Apache SSL。 如果你想通过在Apache端设置一个redirect来强制redirectHTTP-> HTTPS,但是如果你不想强制http-> https,你只需要确保在Apache上configuration并启用了SSL (如果您不强制使用http – > https,则不需要redirect)。

默认端口:

  22  - > SSH
 80  - > HTTP
 443  - > HTTPS

build议:
切勿将服务设置为使用其他服务的众所周知的端口。

只需设置一个虚拟主机来处理来自端口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安全(通过使不安全地访问它的任何人不能这样做)。

注意:redirect方法仍然会将您的用户暴露给MITM攻击。