16
May

为WordPress加上SSL证书

分类: 技术分享   |  标签: ,   |  共有: 1,108 次浏览 , 暂无评论

SSL

其实给网站加上SSL证书这个事情,其实以前就想做了,但是一直懒着。前两天看到有朋友说起微信小程序的事情,才又动起了这个念头。本文是记录了整个过程,以备以后参考,也希望能给其他朋友提供帮助。

1. 安装cerbot:因为虚拟主机是CentOS7,所以直接运行下面代码:

yum install epel-release

yum install certbot

2. 配置nginx准备验证:需要在虚拟主机配置文件里面加入一个目录进行验证,在我的网站上是在axmemo.com.conf 的文件里面

location ^~ /.well-known/acme-challenge/
{
default_type “text/plain”;
root     /home/wwwroot/axmemo.com/;
}

location = /.well-known/acme-challenge/
{
return 404;
}

3. 重启nginx,开始申请证书:根据向导完成证书的申请操作,申请完成的证书会位于/etc/letsencrypt/live/ 目录下面

certbot certonly –webroot -w /home/wwwroot/axmemo.com -d  axmemo.com

4. 修改nginx配置,改为SSL访问模式:在配置文件里面进行如下修改

listen 443 ssl;

….

ssl_certificate      /etc/letsencrypt/live/axmemo.com/fullchain.pem;

ssl_certificate_key  /etc/letsencrypt/live/axmemo.com/privkey.pem;

5.对原有的http访问增加301跳转:

server
{   listen 80;
server_name axmemo.com www.axmemo.com *.axmemo.com;
return 301 https://$server_name$request_uri;    }

6. 重启nginx,修改Wordpress配置:进入Wordpress后台,将站点的地址改为https://axmemo.com,然后再重新启动一次nginx

7. 修改数据库内部静态链接:把原来的http指向全部改为https就可以了。

8. 测试自动刷新证书的操作:运行下面语句

certbot renew –dry-run

9. 添加定时运行脚本,每周运行一次:

sudo crontab –e

然后添加下面内容

01 1 * * 0 /usr/bin/certbot renew >> /var/log/ssl-renew.log

06 1 * * 0 lnmp nginx restart

10. 到SSL检测网站去看看安全情况:咦,怎么是B等级?

https://www.ssllabs.com/ssltest/analyze.html

下面的步骤,是用于在网站上开启SSL的强加密步骤:

1. 生成Diffie-Hellman组:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

2. 添加配置文件:也放到vhost目录下,nginx会自动加载,随便命名一个conf

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers “EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH”;
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# disable HSTS header for now
#add_header Strict-Transport-Security “max-age=63072000; includeSubDomains; preload”;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

ssl_dhparam /etc/ssl/certs/dhparam.pem;

3. 重启nginx,然后再试试检测看,搞定~

SSL2

参考的文章:这里,还有 这里,以及这里




在下方发表关于本文的评论...