其实给网站加上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等级?
下面的步骤,是用于在网站上开启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,然后再试试检测看,搞定~