将 http 重定向到 https

将 http 重定向到 https

我有一个小问题无法解决。我在 Ubuntu 16.04 上运行 Apache,在安装 Let's encrypt 证书后,除了这个之外,其他一切都正常...

当我输入 mydomain.com 时,它会自动转到https://mydomain.com

当我输入 www.mydomain.com 时,它会自动转到https://mydomain.com

当我输入 mydomain.com 时,它会自动转到https://mydomain.com

当我输入http://我的域名.com,它会自动转到https://mydomain.com

当我打字时http://www.mydomain.com,它仍然处于不安全状态http://www.mydomain.com

这是配置文件...

nuc@nuc:~$ cat /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
    ServerName mydomain.com
    ServerAlias www.mydomain.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =mydomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

和...

nuc@nuc:~$ cat /etc/apache2/sites-available/000-default-le-ssl.conf 
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName mydomain.com
    ServerAlias www.mydomain.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined


Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
</VirtualHost>
</IfModule>

任何帮助将不胜感激... :-)

答案1

除了使用 mod_rewrite,还可以直接使用

Redirect / https://mydomain.com/

答案2

由于我遇到了一些麻烦,因此关于如何进行的完整详细答案虽然非常简单:
一旦你从 Let's encrypt 获得了 3 个证书(private.key、c​​ertificate.crt、ca_bundle.crt)或https://www.sslforfree.com/

1/ 将其上传到远程服务器:
在您连接的远程服务器上(注意:显然您可以选择其他名称甚至位置而不是“证书”,只要保持一致即可):

mkdir /etc/ssl/certificates

在您的机器上(假设您解压缩了 sslforfree 文件夹中的 3 个文件):

scp  ~/Downloads/sslforfree/* ubuntu@{replace with you server adress, if aws you can use the elastic IP}:/etc/ssl/certificates

或者,您可以使用一些 ftp 软件(如 filezilla)或使用 rsync。我认为 scp myfiles[电子邮件保护]:/etc/ssl/certificates 如果你在自己的计算机上使用 ubuntu,那么非常简单。

2/ 编辑服务器上位于 /etc/apache2/sites-available 的配置文件

cd /etc/apache2/sites-available && chmod 777 *

然后使用您最喜欢的编辑器,您可以在 000-default.conf 中替换:

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

(假设你的站点 DNS 是 mysite.com):

ServerName http.mysite.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Redirect permanent / https://mysite.com/

3/ 然后编辑 default-ssl.conf (奖励:第 4 项将启用位于 /var/www/html 的网站图标,如果您经历了获取 SSL 的麻烦,这显然也是您想要的,请按 ctrl+shirt+R 强制浏览器的缓存稍后加载它):

ServerAdmin webmaster@localhost
ServerName mysite.com
DocumentRoot /var/www/html
AddType image/x-icon .ico

并通过先更改两个路径并删除标签并更改第三项的路径来启用 SSL:

SSLCertificateFile  /etc/ssl/certificates/certificate.crt
SSLCertificateKeyFile /etc/ssl/certificates/private.key

#   Server Certificate Chain:
#   Point SSLCertificateChainFile at a file containing the
#   concatenation of PEM encoded CA certificates which form the
#   certificate chain for the server certificate. Alternatively
#   the referenced file can be the same as SSLCertificateFile
#   when the CA certificates are directly appended to the server
#   certificate for convinience.
SSLCertificateChainFile /etc/ssl/certificates/ca_bundle.crt

4/ 启用模块 default-ssl.conf 并最后重新加载 apache2 服务器的配置:

sudo a2enmod ssl &&
sudo a2ensite default-ssl.conf &&
sudo systemctl reload apache2

不要忘记将权限重置为默认值:chmod 644 *

您的网站现在已通过永久重定向到 https 得到保护!

相关内容