前言
又是一个阴雨天没有课的下午@( ̄- ̄)@
和舍友打完两把英雄联盟,又打开了掘金开始刷面经。(实习面试很慌啊!)
看到HTTP协议和HTTPS的区别:
- HTTPS就是身披 SSL( Secure Socket Layer )外壳的 HTTP,运行于 SSL 上,SSL 运行于 TCP 之上,是添加了加密和认证机制的 HTTP。就是在HTTP(应用层)和TCP(传输层)之间添加了一层SSL协议。
- HTTPS默认运行在443端口,而HTTP默认运行在80端口。
- HTTPS由于需要证书的加密机制,所以安全性更高,但同时CPU和内存的消耗也更多。
- HTTPS使用共享密钥加密和公开密钥加密并用的混合加密机制
- 百度和谷歌也会优先收录HTTPS站点哦~
看到这里我不禁想起来,我每次打开自己的站点时候都会看到地址栏旁边有个不安全的标志,看着可是着实让人难受,不如来搞个HTTPS吧!
准备SSL证书
我购买的是阿里云的服务器,通过谷歌了解到阿里云是提供免费的SSL证书的,在如下的界面购买即可
配置Apache支持HTTPS
前面一顿操作,将获得的证书文件下载到了自己的电脑上
开启Ubuntu的OpenSSL使Apache加载SSL模块
使用命令sudo a2enmod ssl
加载Apache的SSL模块。
Apache加载SSL模块后,会在/etc/apache2/sites-available下生成default-ssl.conf文件,我们在终端使用sudo权限,通过vi编辑器打开。
- 第一个VirtualHost标签 改成 *:443
- ServerName 换成自己的域名
- 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]
复制代码
然后重启服务器,测试我的博客网站咯~