HTTPS A+在nginx下的配置方法

 

图片[1]-HTTPS A+在nginx下的配置方法-夏末浅笑

前言

现在已经到了遍地都是HTTPS网站的年代,浏览器的一些功能和接口也限制了HTTPS才能使用,如果你的网站还没有HTTPS,是时候看下这篇文章,动手配置一个了。

本文讲述如何在CentOS 6.4上,为使用Nginx的网站配置HTTPS。

操作

配置HTTPS前,需要有对应的证书。恰好,让我们加密提供了免费的SSL / TLS证书。

1.安装Certbot获取证书

下面获取证书的命令中,--email表示域名所有者的邮箱,域名多个用-d连接。

这里不多做介绍,可前往 https://certbot.eff.org/docs/查看对应文档信息。

Certbot会通过80端口检查域名的解析IP是否和请求的服务器IP一致,获取证书前,请确认你的域名解析正常。

# Certbot 在 EPEL 源里,需要先安装 EPEL。
yum install epel-release

# 安装 Certbot
yum install certbot-nginx

# 查看 80 端口是否被占用
lsof -i:80

# 如果是 Nginx 占用,停止 Nginx,释放 80 端口
nginx -s stop

# 获取证书
certbot certonly --standalone --email admin@example.com -d example.com -d www.example.com

# 更新证书
certbot renew

2.为Nginx配置A +级HTTPS

打开需要配置​​HTTPS的站点配置文件,将以下代码粘贴在服务器里,并根据注释修改其对应的内容。

listen 443 ssl;

# 开启 SSL 功能
ssl on;

# 修改这里,SSL 证书文件路径,由证书签发机构提供
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;

# 修改这里,SSL 密钥文件路径,由证书签发机构提供
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

# 修改这里,CA 根证书文件路径,由证书签发机构提供
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

# 修改这里,Diffie-Hellman 密钥文件路径,建议定期更改
# 生成方法: openssl dhparam -out dhparam.pem 4096
ssl_dhparam /etc/nginx/ssl/dhparam.pem;

# 修改这里,加密或解密 session_ticket 密钥文件路径,建议定期更改
# 生成方法: openssl rand 48 > session_ticket.key
ssl_session_ticket_key /etc/nginx/ssl/session_ticket.key;

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;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets on;
ssl_buffer_size 1400;
ssl_stapling on;
ssl_stapling_verify on;

# 修改这里,国内填 223.5.5.5 223.6.6.6,国外填 8.8.4.4 8.8.8.8
resolver 8.8.4.4 8.8.8.8 valid=300s;

resolver_timeout 5s;

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "DENY";
add_header X-XSS-Protection "1; mode=block";

如果你要使用HTTP2,就需要更新Nginx到1.9+,然后在listen后面加上http2,如下

listen 443 ssl http2;

如果你要SSL支持TLSv1.3,需要使用OpenSSL draft-18 +的分支,然后使用下面的配置:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers "TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256: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";

配置数据改好后,确认无误,重启下Nginx就行,到 https://myssl.com测下分数吧。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片
    • 头像测试邮件0