最近几年HTTPS取代HTTP已经成为大趋势,HTTP是超文本传输协议,信息是明文传输的,而HTTPS是安全超文本传输协议,需要证书和提供安全连接,换句话说,HTTPS是嵌套了SSL加密的HTTP连接,其内容由SSL先加密,然后再传输。
简单来讲,HTTPS是加过密的HTTP。由于网络上传输的数据是加密的,用户在浏览网页时,除了用户自己可以看到当前在看什么网页,其他第三方是无法得知用户在做什么的。比如用户在网上登录或输入其他敏感信息进行传输时一旦使用HTTPS,那么数据传输就不是明文了,对于第三方来讲就无法获取你的敏感信息。
那么既然去趋势,自己也尝试着将自己的博客由HTTP升级到HTTPS,特做下记录和总结。以防后续再用,或者给需要的人做参考。
SSL证书选择
可以选择腾讯云、阿里云合作的赛门铁克签署的证书,申请后可以免费使用一年,据说,一年后可以继续申请,再换个证书就行了,有待验证,具体可在如下页面做申请,这里也不过多描述,申请的时候都有详细的说明。
申请完成后,进行下载,里面有apache、nginx等对应服务的证书:
SSL证书的配置
可先参考:https://cloud.tencent.com/document/product/400/4143
Ubuntu下的apache2目录结构是:
– 默认站点在 /var/www/
– 配置文件在 /etc/apache2/
– 日志在 /var/log/apache/
– 启动脚本是 /etc/init.d/apache2
etc/apache2下的文件夹与文件
apache2.conf:Apache的主要配置文件,包含全局配置。
envvars:Apache2环境变量设置。
ports.conf:配置Apache监听的端口。
mods-available:这个目录包含模块和模块配置文件,不是所有的模块都有配置文件。
mods-enabled:持有/etc/apache2/mods-available目录下文件的链接,当该目录下有一个模块文件和其配置文件,那么Apache重启后该模块将生效。
sites-available:这个目录包含Apache虚拟主机的配置文件。虚拟主机允许Apache配置多个站点并为每个站点配置不同的参数。后面下面配置的时候会配置80端口的http重定向为443的https。
sites-enabled:持有/etc/apache2/sites-available目录下文件的链接。当Apache重启后,该目录中包含的站点将会被激活。
- 下面以apache为例,将对应apache目录下的文件上传到服务器某一目录文件,比如我的全部放在目录/etc/apache2/sslcert
- 安装openssl执行:
sudo apt-get install openssl
- 开启ssl模块执行:
sudo a2enmod ssl
- 进入/etc/apache2/ports.conf查看是否监听Listen 443,没有就加上
- 配置ssl虚拟站点,安装openssl后会在/etc/apache2/site-available目录下生成default-ssl文件,此时需要创建一个软连接到/etc/apache2/sites-enabled目录下:
sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf
如下软连接就建立好了:
- 修改 001-ssl.conf 配置
SSLEngine on
SSLCertificateFile /etc/apache2/sslcert/2_www.87testing.com.crt
SSLCertificateKeyFile /etc/apache2/sslcert/3_www.87testing.com.key
SSLCertificateChainFile /etc/apache2/sslcert/1_root_bundle.crt
- 配置好后重启:
sudo service apache2 restart
这时候访问https://87testing.com,就可以正常打开可信任了
设置HTTP重定向为HTTPS
- 启动重定向:
sudo a2enmod rewrite #启动rewrite mod - 设置http端口重定向,在网站根目录wordpress下新建.htaccess文件,在文件中输入内容:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.87testing.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^87testing.com [NC]
RewriteRule ^(.*)$ https://www.87testing.com/$1 [L,R=301]
将数据库写死的http修改为https
服务器上进入当前数据库:
Update wp_options set option_value = ‘https://87testing.com’ where option_id in(1,2);
update wp_posts set post_content = replace(post_content, 'http://87testing.com','https://87testing.com');
最后重启下apache服务:
sudo service apache2 restart
此时不管输入87testing.com就可以正常跳转到https://87testing.com,并且可信任了。。。