SSL证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
目前,网上也有一些有效时间较长的免费的证书,以SSL FOR FREE为例
申请好后,下载完成将得到3个文件ca_bundle.crt、certificate.crt以及私钥private.key,值得注意的是,如果我们要把证书配置到Nginx,按照官方说法,则需要把ca_bundle.crt、certificate.crt文件合并。
我们先把文件上传到服务器,然后执行如下命令
cat certificate.crt ca_bundle.crt
然后,我们把得到的新文件certificate.crt和私钥private.key放到Nginx对应的证书目录上,然后,修改nginx的配置文件,以我的网站为例,(location反向代理的跳转部分可以忽略)
server {
listen 80;
server_name www.tzqutao.top tzqutao.top;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name www.tzqutao.top tzqutao.top;
ssl_certificate /var/log/nginx/certificate.crt;
ssl_certificate_key /var/log/nginx/private.key;
access_log /var/log/nginx/www.tzqutao.top.access.log;
error_log /var/log/nginx/www.tzqutao.top.error.log;
location / {
proxy_pass http://172.17.0.3;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
此处,我们需要确保服务器对外的80端口和443端口是通畅的,如果Nginx是在DOCKER中,则还要保证容器的端口和本地80端口和443端口是有存在映射的,完成之后,重启Nginx即可
下面,我们来具体说明WordPress网站,如何启用Https,证书安装好后,我们进入到WordPress根目录的\wp-includes\functions.php,找到代码 require( ABSPATH . WPINC . ‘/option.php’ );大概在第8行。在下方添加以下代码:
add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2); function agnostic_script_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); }
add_filter('style_loader_src', 'agnostic_style_loader_src', 20,2); function agnostic_style_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); }
打开网站根目录\wp-config.php文件找到代码,在下方添加如下代码:
*
* @package WordPress
*/
$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
此时,我们登录到WordPress后台,把WordPress站点地址修改为HTTPS的路径,就完成了HTTP到HTTPS的迁移