在国家发布安全红头文件后,安全已然成为一个明显业务趋势,当然web站点已一样,各大搜索引擎也将https站点权重加大。所以抽出一天时间把我的站点:https://www.datacenterfarm.com转换成https//www.datacenterfarm.com。
一、部署环境:
操作系统:linux (CentOS 7.2)
web服务器:Apache/2.4.6
二、部署步骤
1.SSL证书申请
SSL证书网上有很多免费的个人证书直接申请。也可自己使用工具手动生成,但会产生 “未授权访问被拒绝,或者安全性设置已到期,如/ :ERR_CERT_AUTHORITY_INVALID ”,不建议使用。
如果你是腾讯或阿里服务器的话,就比较方便可以直接在后台申请证书,我就是腾讯的服务器,腾讯有自动添加DNS功能,自动做证书映射。一般申请到的证书,会给你三个文件(2_www.datacenterfarm.com.crt、3_www.datacenterfarm.com.key、1_root_bundle.crt)。先将以上文件全部上传到服务器。上传到任何目录均可,不限制,可按照文中来,后续修改,我上传到/etc/httpd/ssl/目录下,如果没有SSL就新建一个。
2.编译安装mod_ssl.so模块。
这个模块必须安装,否则没有下面两个文件,会导致SSL无法安装成功。
yum安装方式:yum install mod_ssl。安装成功后会生成mod_ssl.so 且已加载。
3.配置SSL文件
(1)在 /etc/httpd/conf 目录下的 httpd.conf 配置文件找到 Include conf.modules.d/*.conf(用于加载配置 SSL 的配置目录)配置语句,并确认该配置语句未被注释。若已注释,请去掉首行的注释符号(#),保存配置文件。
(2)在 /etc/httpd/conf.modules.d 目录下的 00-ssl.conf 配置文件找到 LoadModule ssl_module modules/mod_ssl.so(用于加载 SSL模块)配置语句,并确认该配置语句未被注释,若已注释,请去掉首行的注释符号(#),保存配置文件。
(3)编辑vhost和ssl.conf文件
编辑 /etc/httpd/conf.d 目录下的 ssl.conf 配置文件。修改如下内容:
- <VirtualHost 0.0.0.0:443>
- DocumentRoot "/var/www/html/datacenterfarm"
- #填写证书名称
- ServerName www.datacenterfarm.com
- #启用 SSL 功能
- SSLEngine on
- #证书文件的路径
- SSLCertificateFile /etc/httpd/ssl/2_www.datacenterfarm.com.crt
- #私钥文件的路径
- SSLCertificateKeyFile /etc/httpd/ssl/3_www.datacenterfarm.com.key
- #证书链文件的路径
- SSLCertificateChainFile /etc/httpd/ssl/1_root_bundle.crt
- </VirtualHost>
编辑 /etc/httpd/conf.d 目录下的 virtual.conf 配置文件。修改如下内容:
- <VirtualHost *:443>
- ServerName www.datacenterfarm.com
- DocumentRoot "/var/www/html/datacenterfarm"
- SSLEngine on
- SSLCertificateFile /etc/httpd/ssl/2_www.datacenterfarm.com.crt
- SSLCertificateKeyFile /etc/httpd/ssl/3_www.datacenterfarm.com.key
- SSLCertificateChainFile /etc/httpd/ssl/1_root_bundle.crt
- </VirtualHost>
重启http服务(systemctl restart httpd.service),让其生效。SSL证书安装后,https版本就可以访问了。
4.全站URL转HTTPs。
(1)WordPress后台设置-常规,把博客地址改为https地址。
WordPress Address(URL):https://www.datacenterfarm.com
Site Address(URL):https://www.datacenterfarm.com
这样,绝大部分导航中的链接就由WP系统自动改为https版本了。但很可能还有一些导航性质的链接是硬编码在模板中的,
(2)在wordpress的主题文件中找到functions.php文件,增加替换内页https代码。
- //转换http为https
- function change_ssl(){
- if( is_ssl() ){
- function change_ssl_main ($content){
- $siteurl = get_option(‘siteurl’);
- $upload_dir = wp_upload_dir();
- $content = str_replace('http:'.strstr($siteurl, '//'), 'https:'.strstr($siteurl, '//'), $content);
- $content = str_replace('http:'.strstr($upload_dir[‘baseurl’], '//'), 'https:'.strstr($upload_dir[‘baseurl’], '//'), $content);
- return $content;
- }
- ob_start('change_ssl_main');
- }
- }
- add_filter(‘get_header’, ‘change_ssl’);
(3)全站301转向
全站做http到https的301转向。在.htaccess文件中加如下信息:
- # BEGIN rlrssslReallySimpleSSL rsssl_version[3.3]
- <IfModule mod_rewrite.c>
- RewriteEngine on
- RewriteCond %{HTTPS} !=on [NC]
- RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
- </IfModule>
- # END rlrssslReallySimpleSSL
这样全站转https就大功告成了。

