证书文件:
.pem:证书文件。PEM文件的扩展名为CRT格式。
.key:证书的密钥文件。
1.证书申请和下载
笔者是在阿里云注册的域名,因此也在阿里云进行了SSL证书的申请。具体申请方法,可以参考阿里云-SSL证书控制台。进去之后,选择个人免费证书,然后点击购买(0元)。
之后点击申请(填写域名和个人信息)-验证-部署。接着,很快就可以获取到可用的证书,然后点击下载,选择nginx服务器。这时候可以下载到一个压缩包,打开后有.pem和.key文件。将文件传到服务器。
2.在Nginx安装目录下创建cert目录,并将下载的证书文件和密钥文件拷贝到cert目录中。
3.打开Nginx安装目录 > conf文件夹 > nginx.conf文件,在nginx.conf文件中找到以下属性:
# HTTPS serverserver{listen443;server_namelocalhost;sslon;ssl_certificatecert.pem;ssl_certificate_keycert.key;ssl_session_timeout5m;ssl_protocolsTLSv1 TLSv1.1TLSv1.2;ssl_ciphersALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;ssl_prefer_server_cipherson;location/ {
更改为:
# 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
listen 443;
server_name pmhuiyilu.cn www.pmhuiyilu.cn; # localhost修改为您证书绑定的域名。
ssl on; #设置为on启用SSL功能。
index index.php index.html index.htm;
ssl_certificate /etc/nginx/cert/pmhuiyilu.cn.pem; #将domain name.pem替换成您证书的文件名
。
ssl_certificate_key /etc/nginx/cert/pmhuiyilu.cn.key; #将domain name.key替换成您证书的密
钥文件名。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location / {
root /web/web-aliyun; #站点目录。
index index.php index.html index.htm;
}
location ~ \.php$ {
root /web/web-aliyun;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.html;
fastcgi_param SCRIPT_FILENAME /web/web-aliyun$fastcgi_script_name;
include fastcgi_params;
}
}
}
4.设置http请求自动跳转https,将原server{}转换为以下语句:
server {
listen 80 default_server;
server_name pmhuyilu.cn www.pmhuiyilu.cn;
rewrite ^(.*)$ https://$host$1 permanent;
location / {
index index.php index.html index.htm;
}
}
保存nginx.conf文件后退出。重启nginx。
5.设置php解析.css等文件,找到php-fpm的配置文件,我的在/etc/php-fpm.d/www.conf中。找到并编辑:
security.limit_extensions = .php .php3 .php4 .php5 .html
重启php-fpm服务
6.设置iptables,开放443端口。
7.这时候打开网站,可以看到网站是没有样式的,因为wordpress还没有设置ssl。
打开网站根目录文件\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文件找到代码:
**@packageWordPress*/
在下方添加:
$_SERVER['HTTPS']='on';define('FORCE_SSL_LOGIN',true);define('FORCE_SSL_ADMIN',true);
8.这时https网址小锁上有个黄色小叹号(此内面部分内容不安全、如图像)https证书存在错误,可能网站文章内容页的图片链接地址还是http://开头,也有可能是外部链接没https化。这时需要通过PHPMyadmin面板运行SQL进行批量替换图片地址。
打开数据库,使用替换语句进行替换,也可以使用phpMyadmin进行操作。
UPDATE wp_posts set guid=REPLACE(guid,'http://www.pmhuiyilu.com','https://www.pmhuiyilu.com');
UPDATE wp_posts set post_content=REPLACE(post_content,'http://www.pmhuiyilu.com','https://www.pmhuiyilu.com');
UPDATE wp_options set option_value=REPLACE(option_value,'http://www.pmhuiyilu.com','https://www.pmhuiyilu.com');
9.如果你之前配置过七牛云,那么现在你的页面一定还不是绿色的小锁标志,因为页面上有七牛云的非HTTPS的链接。因此我们需要将七牛云里的域名配置成HTTPS:进入七牛云,选择对象存储---域名管理,开启HTTPS,大概需要10分钟的审核时间,开启成功。
现在,再次刷新你的页面,应该已经显示出完美的小绿锁了。
----------------------------------------------
完。