建站安全之–申请SSL证书-开启全站https

HTTPS 作为一种协议,可以对网站的数据流进行加密处理,而在HTTP协议下,网站内容是明文的。HTTPS不是绝对地安全,但可以为用户提供一个相对安全的环境.Google,百度也相继开启了HTTPS,搜索引擎对HTTPS还是友好的。HTTPS是大势所趋。下面简单介绍一下如何开启HTTPS

申请SSL证书

市面上有收费的,也有免费的,谷歌,Mozilla已宣布停止信任WoSign,所以申请时也要注意,其他可用免费SSL证书有StartSSL,Let’s Encrypt,和Cloudfare.今天主要介绍后两种。

Cloudfare有两种形式,一种是使用他们的cdn,他们会自动配置多域名通配符证书。一种是他们提供的证书,可以配置在别的服务器上,最长有效期15年。

1.先注册各账号:https://www.cloudflare.com/a/sign-up

2.添加自己的主域名 example.com

3.添加DNS记录(Add DNS Records)

4.选计划 (Select Plan)Free Website ,土豪请随意。

5.去自己域名服务商那儿把 NS记录改为Cloudfare所给的,注意是NS.如果是万网就在DNS基本管理下边,一般是vip1.alidns.com,vip2.alidns.com

如果解析成功了,Cloudfare面板overview页面status会变为Active,如果没有,请等10分钟,解析可能需要时间,也可能是自己没解析对,自己排查。

然后在Crypto页面 SSL等级选full,Always use HTTPS打开,Automatic HTTPS Rewrites打开。如果自行给服务器配证书可以自己生成,同样在此页面,Origin Certificates标题下,点击生成(create certificate).默认不用改,点Next即可,生成的证书上面的保存为xxx.pem文件,下面的保存为xxx.key文件。

Let’s Encrypt证书有效期只有三个月,但可以通过工具自动续期。详见官网https://certbot.eff.org/

选择软件和系统后会给出安装命令。按照命令提示安装就行了

也可以自己安装

# wget https://dl.eff.org/certbot-auto # chmod R 744 /root/cerbot-auto # ./certbot-auto --help 生成证书有两种方式 一种是 # certbot-auto certonly --webroot -w /home/wwwroot/example -d example.com -d www.example.com 这种方式通过在网站目录下生成 ./well-know,验证网站所有权。 另一种是 # certbot-auto certonly --standalone -d example.com -d www.example.com 这种方式需要先关闭443端口,lnmp stop即可。 最后会在/etc/letsencrypt/live/下生成证书和密钥。

通过执行以下命令自动续期

# certbot-auto renew --dry-run # certbot-auto renew 手动更新 # ./certbot-auto renew -v 自动更新 # ./certbot-auto renew --quiet --no-self-upgrade 设置定时任务 # crontab -e 打开编辑,输入a进入编辑模式 输入 15 2 * */2 * certbot-auto renew --pre-hook "lnmp stop" --post-hook "lnmp restart" 按ESC,输入:wq 退出保存.

 

配置HTTPS

上一步已经把证书生成,下面以nginx为例,Apache类似。

打开/usr/local/nginx/conf/vhost/www.example.com.conf, 这是我的nginx配置文件路径,其他请自行寻找。在server { 中这样配置。保存。

server { listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/letsencrypt/live/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; add_header Strict-Transport-Security max-age=15768000; ssl_stapling on; ssl_stapling_verify on;

重要的是 ssl_certificate 和 ssl_certificate_key

把路径设置好,保存,重启nginx, lnmp restart

其实对于nginx更完整的配置可以看这里   ,这个网站有最安全的配置。然后可以去这个网站检测一下安全程度  ,A+就很好了。

本文谢绝转载

本文链接:https://www.theseyears.org/431.html

 

 

 

 

发表评论