将本身的站点升级成HTTPS的(疯狂踩坑)过程

前言

又是一个阴雨天没有课的下午@( ̄- ̄)@html

和舍友打完两把英雄联盟,又打开了掘金开始刷面经。(实习面试很慌啊!)面试

看到HTTP协议和HTTPS的区别apache

  • HTTPS就是身披 SSL( Secure Socket Layer )外壳的 HTTP,运行于 SSL 上,SSL 运行于 TCP 之上,是添加了加密和认证机制的 HTTP。就是在HTTP(应用层)和TCP(传输层)之间添加了一层SSL协议。
  • HTTPS默认运行在443端口,而HTTP默认运行在80端口。
  • HTTPS因为须要证书的加密机制,因此安全性更高,但同时CPU和内存的消耗也更多。
  • HTTPS使用共享密钥加密和公开密钥加密并用的混合加密机制
  • 百度和谷歌也会优先收录HTTPS站点哦~

看到这里我不由想起来,我每次打开本身的站点时候都会看到地址栏旁边有个不安全的标志,看着但是着实让人难受,不如来搞个HTTPS吧!安全

准备SSL证书

我购买的是阿里云的服务器,经过谷歌了解到阿里云是提供免费的SSL证书的,在以下的界面购买便可 bash

配置Apache支持HTTPS

前面一顿操做,将得到的证书文件下载到了本身的电脑上 服务器

下面开始重头戏,也是踩了很多坑的地方 也放一下 阿里云官方的配置文档 然而咱们本身安装的Apache目录和官方的是不同,许多配置文件都分散到了各个文件中。

开启Ubuntu的OpenSSL使Apache加载SSL模块

使用命令sudo a2enmod ssl加载Apache的SSL模块。编辑器

Apache加载SSL模块后,会在/etc/apache2/sites-available下生成default-ssl.conf文件,咱们在终端使用sudo权限,经过vi编辑器打开。 ide

这个文件须要作如下修改:

  1. 第一个VirtualHost标签 改为 *:443
  2. ServerName 换成本身的域名
  3. SSLCertificateFile、SSLCertificateKeyFile、SSLCertificateChainFile对应的分别是刚刚下载下来的三个文件。

完成后:wq退出测试

而后须要把default-ssl.conf映射至/etc/apache2/sites-enabled文件夹网站

使用命令sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf进行创建软连接操做。

官方文档中

SSLProtocol all -SSLv2 -SSLv3    
# 添加SSL协议支持协议,去掉不安全的协议。
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM    
# 使用此加密套件。
SSLHonorCipherOrder on
复制代码

/etc/apache2/mods-available/ssl.conf中修改

最后从新加载Apache配置文件:sudo /etc/init.d/apache2 force-reload

重启Apache服务:sudo /etc/init.d/apache2 restart

HTTP重定向至HTTPS

使用命令:sudo a2enmod rewrite加载Apache的rewrite模块

打开 /etc/apache2/apache2.conf修改以下代码

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride ALL
        Require all granted
</Directory>
复制代码

而后进入你的网站根目录,使用命令touch.htaccess来建立.htaccess文件

修改以下:

RewriteEngine on
RewriteCond  %{HTTPS} !=on
RewriteRule  ^(.*) https://%{SERVER_NAME}$1 [L,R]
复制代码

而后重启服务器,测试个人博客网站咯~

嘻嘻,大功告成!
相关文章
相关标签/搜索