0%

Apache配置HTTPS

Apache配置HTTPS

总算是等到了管局审核结束,我可爱的网站终于可以开张了,在配置完了HTTPS之后,我发现了一个很不爽的问题,居然直接输入域名访问是默认以http形式访问的,而且还访问的上
也就是说我辛辛苦苦申请的在Chrome上的小锁没了,这显然不行,于是就开始了我与Apache的斗争。。。。

000-default.conf&default-ssl.conf

大部分网上的说法都是加htaccess,不是很想维护搞这么多花的,所以最后研究了一下怎么直接修改配置文件从根源解决

各操作系统和各版本Apache配置文件名字都不一样,我的Ubuntu16上的这版叫标题这两个名字,在/etc/apache/site-avaliable目录下
一开始只改了site-avaliable下面的000-default.conf,把Virtual host的端口直接改成443,然后在Directory标签里面加上这堆规则

<Directory "/var/www/html">
    RewriteEngine on
    RewriteCond   %{SERVER_PORT} !^443$
    RewriteRule   ^(.*)?$  https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</Directory>

发现。。。不太行
好像是能跳但是跳过去之后报一个ERR_SSL_PROTOCOL_ERROR,没法访问

后来发现ssl有一个单独配置文件default-ssl.conf,或者说我一开始的理解就有误
确切的配置方法是在000-default.conf中正常配置,提供http服务,端口设置为80,但是访问这个http服务就应该被重定向到https去,设置一个跳转规则
而在default-ssl.conf配置ssl engine,在443端口开https服务,配置证书,实现ssl
也就是说其实是开两个服务,80的http重定向到443的https

因为我还设置了两个网站,一个www和一个blog,他们共用一个443端口,但这并不是问题,在两个conf文件中都创建一个<VirtualHost *:80/443>,并且Document Root设置成对应的目录就行

sites-available&sites-enable

这个东西坑了我半天。。。虽然enable看起来就比较像应用的配置文件,但是之前修改
以前一直改的sites-available里的000-default.conf,并且改完了也能用,又sites-enable里没有default-ssl.conf,导致我错以为sites-available就是配置文件位置,浪费了几个小时在这上面。。。

最后发现sites-enable才是配置文件位置,里面的000-default.conf是个软链接,链接到了sites-available里的000-default.conf,所以再软链接一个default-ssl.conf重启Apache就算搞定了