typecho从http转https

实现https首先需要购买ssl证书,比如通过阿里云购买了dv ssl证书。下载ssl文件解压后会得到214965547810841.key214965547810841.pemchain.pempublic.pem 共4个文件。

文件说明:

  1. 证书文件214965547810841.pem,包含两段内容,请不要删除任何一段内容。
  2. 如果是证书系统创建的CSR,还包含:证书私钥文件214965547810841.key、证书公钥文件public.pem、证书链文件chain.pem

一、预前配置设置

1.创建/etc/httpd/cert目录

cert目录的目的是用来存放以上4个文件。

1
2
# cd /etc/httpd/
# mkdir cert

2.通过xftp等工具将以上4个文件存送到cert目录。

3.安装openssl和mod_ssl

1
# yum install openssl mod_ssl

二、配置证书

完成以上安装后,会自动生成 /etc/httpd/conf.d/ssl.conf(也可能是/etc/httpd/conf/extra/httpd-ssl.conf,这与操作系统及安装方式有关,此种情况请参考阿里云的说明文档), 在配置文件中查找以下配置语句,配置public.pem214965547810841.keychain.pem的路径。

1
2
3
4
5
6
7
8
9
10
11
# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3
# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 证书公钥配置
SSLCertificateFile /etc/httpd/cert/public.pem
# 证书私钥配置
SSLCertificateKeyFile /etc/httpd/cert/214965547810841.key
# 证书链配置,如果该属性开头有 '#'字符,请删除掉
SSLCertificateChainFile /etc/httpd/cert/chain.pem

除此之外还要添加433端口的虚拟目录,找到ssl.conf里的 <VirtualHost _default_:443>,然后另起一行,添加如下代码:

1
2
DocumentRoot "/var/www/html/typecho/"  
ServerName luoyui.top:443

三、重启 Apache

1
# service httpd restart

四、安全组设置

需要登录阿里云,安全组添加并开放433端口。

五、typecho网站修复和配置

阿里云安全组设置好后就可以通过 https 方式访问您的站点了。但你会发现你的typecho博客加载不出图片或者不能访问,原因有两个原因:

1、typecho没有开启https;

解决:

进入typecho博客web根目录

1
2
# cd /var/www/html/typecho/   #路径根据自己情况而定
#vim config.inc.php

找到以下代码

1
2
/** 定义根目录 */
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));

在以上代码的上面另起2行,然后输入以下代码:

1
2
/** 开启HTTPS */
define('__TYPECHO_SECURE__',true);

然后保存退出

2、你原本的typecho数据库只存了http类型的域名地址,你需要将http类型的域名地址修改为https类型的域名地址。

解决:

很简单,打开终端工具登录服务器的mysql。然后输入如下:

1
2
3
mysql> use typecho; 
mysql> UPDATE `typecho_options` SET `value` = 'https://luoyui.top' WHERE `typecho_options`.`name` = 'siteUrl' AND `typecho_options`.`user` =0;
mysql> UPDATE `typecho_contents` SET text = REPLACE(text, 'http://blog.luoyui.top', 'https://luoyui.top') WHERE INSTR(text,'http://blog.luoyui.top') > 0;
1
2
3
4
5
6
注解:
typecho #数据库名,名字可能不一样
https://luoyui.top #更换前使用的http类型的域名地址
https://luoyui.top #更换后使用的https类型的域名地址,当然你也可以更具情况改为https://www.luoyui.top
typecho_options #表名,有的人表头不一样需要修改 比如:abc_options
typecho_contents #表名,有的人表头不一样需要修改 比如:abc_contents

然后再刷新https链接的博客就出现图片了,当然还要登录博客管理员到后台对一些个人偏好的地址路径做相应更改。

六、强制转http为https(如果你需要)

其实就是强制转80端口为433端口,即让80端口重定向到443端口。

在这里我们通过修改虚拟目录来实现。

1
# vim /etc/httpd/conf.d/vhost.conf

这里的vhost.conf配置文件你可能没有,如何配置可参考《centos7 apache2.4.6配置单ip多域名》。在vhost.conf配置文件的相应位置添加以下三行代码来实现该功能。

1
2
3
RewriteEngine on       # url重定向开启
RewriteCond %{SERVER_PORT} !^443$ # 指定跳转至443端口
RewriteRule ^/?(.*)$ https://www.%{SERVER_NAME}/$1 [L,R] # 跳转至https://www.域名.com的url

以下我的的配置可供参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
<VirtualHost *:80>
DocumentRoot "/var/www/html/typecho"
ServerName luoyui.top
ServerAlias www.luoyui.top
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*)$ https://www.%{SERVER_NAME}/$1 [L,R]
<Directory "/var/www/html/typecho">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

配置好后按:wq保存并退出。

重启apache服务

1
# service httpd restart


----------- 本文结束 -----------




如果你觉得我的文章对你有帮助,你可以打赏我哦~
0%