给网站换上HTTPS
对于https的介绍什么的就免了吧,不知道的出门左拐百度。本文记录下在给博客换上https的经历,由于网站通过frp穿透,所以最后配置会多一点,仅作参考。
参考链接:
- https://www.zhihu.com/question/19577317 HTTP和HTTPS的比较
- https://www.zhihu.com/question/22120030 SSL证书的简单比较
- http://www.live-in.org/archives/1290.html CentOS下Apache安装SSL
- https://segmentfault.com/a/1190000009220479 使用阿里云免费SSL证书实现HTTPS
- http://www.hishenyi.com/archives/556 Centos7中配置apache支持SSL的注意点
由于frp的坑,我参考了无数的链接……这里只列几个帮助比较大的吧。
要换HTTPS首先肯定是要有SSL证书的,可以像12306那样自己给自己搞个证书,不过那么low的操作不适合我。
因此我选择申请一个免费的证书~~!哈哈。
具体选择哪家的什么证书自己酌情选择,这里我选择阿里和Symantec合作颁发的免费DV证书。本来都注册好准备用又拍云的免费证书了,后来想想还是Symantec比较溜一点。(在我第二天第二次登录又拍云后,没一会就有工作人员打我电话问是否需要帮助,不得不说售前做的不错,然而这样让我有点小害怕啊,隐私何在~~!)
阿里云免费SSL的申请申请网址:https://common-buy.aliyun.com/?commodityCode=cas#/buy
只有DV(目前我看到的全部机构也只有DV是免费的)是免费的。DV证书从申请到颁发都很快,我从申请到颁发只用了20分钟。如果有二级域名在申请时注意DV证书只能对一个域名使用,多个二级域名请用多个DV证书,或者换用OV证书。颁发后下载证书压缩包,同时阿里也给出了相应的安装方法。
不过我实际操作时发现不太一样,可能Apache的版本不一样吧,所以阿里的教程仅供参考就好。
我的系统和版本如下:
[root@centos-rpi3 httpd]# uname -a
Linux centos-rpi3 4.9.35-v7.1.el7 #1 SMP Sun Jul 2 07:34:05 UTC 2017 armv7l armv7l armv7l GNU/Linux
[root@centos-rpi3 httpd]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Apr 12 2017 17:30:50
证书上传到服务器上的路径参照阿里的教程就行,然后就是系统要使用Apache服务器的话必须要安装mod_ssl模块(关于mod_ssl详情参见modssl官网)。
$ yum install mod_ssl
网上很多教程中提到安装openssl
,那个是自己生成证书才用安装的(像12306那样),如果使用第三方证书不用装openssl。
安装了mod_ssl后在/etc/httpd/conf.d/
下会多一个ssl.conf
文件,没安装是没有这个文件的。然后编辑这个文件:
我已经把需要改的地方框出来了。
上面这几个是证书文件,按照自己文件的路径和名称写,具体配置的值可以参考阿里的教程。
然后再修改Apache的配置文件/etc/httpd/conf/httpd.conf
在阿里给的教程中是要加上LoadModule ssl_module modules/mod_ssl.so
的,但是我在配置了之后,Apache的日志里总是有句警告,说是mod_ssl模块已经加载。这里我们注意到包含了conf.modules.d
文件夹下的所有配置文件,我在查看后发现其中已经包含了这一句,所以这里配置中我给注释了,然后警告就没了。不过不管也没关系,Apache会自动跳过已经加载的模块的,这里只是告诉给喜欢no warning的程序员(like me~~!哈哈)。
然后就是ServerName的配置,这个很重要,要和ssl.conf
还有申请证书时填的域名三者一致!!
接下来保存配置文件并重启Apache服务器就行了。不通过绑定的域名访问网站时就会出现不安全的提示
不过在写博客时通过https外网访问体验太差了,所以这里还是通过内网的方式写~~!至此正常的Apache的服务器应该都能通过https访问了。
接下来是我折腾的故事了。。。
由于博客在我的树莓派上,是通过VPS上的frp穿透内网链接到公网的。我在配置好了后怎么访问都不行,HTTP还是可以正常访问,但是HTTPS总是失败,我一开始以为是SSL的配置有问题,但是总是搞不定。在参考了无数的博文后,时间来到了2017年8月20日凌晨4点,上海 雨,困。
忽然~~!
灵光乍现,是不是我frp的配置有问题??看了下服务端的配置
转发了443端口的,没有问题啊……那客户端呢?
果然,少了https的转发,啊啊啊啊啊啊啊啊啊,我的内心当时就崩溃了。加上红框中的配置后再访问就可以用https了。
2017年8月20日14点,继续折腾!现在博客是HTTP和HTTPS共存,两种方式都可以访问,有些网站是你请求HTTP的会自动跳转到HTTPS,这种怎么搞呢?非常简单!这里给出一种(这是302重定向,需要301重定向请参考本站《通过frp穿透内网》):
可以看到一个很简单的重定向就搞定了,当然还有其他的方法,如修改.htaccess
文件或者使用mod_rewrite
,具体参考:https://wiki.apache.org/httpd/RedirectSSL
最后,在网站支持https后可以通过这个网站:https://www.ssllabs.com/ssltest/index.html检测下https的强度如何,权当给自己折腾的一个心里安慰吧~~!