nginx启用https(SSL)配置,http跳转到https

2021-02-15 36点热度 0人点赞 0条评论

介绍

现在的大部分网站都启用了SSL加密(https),不加密的网站甚至被浏览器标记为『不安全』,所以有必要为我们的网站启用https加密,申请SSL证书的成本也很低(Let's Encrypt是免费的)

如何申请免费Let's Encrypt证书,详见我的另一篇博客:https://blog.terrynow.com/2021/02/14/acme-retrive-letsencrpt-https-ssl-cert-and-auto-renew/

如何安装Nginx,详见我的另一篇博客:https://blog.terrynow.com/2021/02/13/linux-nginx-tomcat-config-load-balance/

本文介绍如何配置nginx上启用SSL

先介绍一下dhparam,nginx的配置里会用到

openssl dhparam用于生成和管理dh文件。 dh(Diffie-Hellman)是著名的密钥交换协议,或称为密钥协商协议,它可以保证通信双方安全地交换密钥。 但注意,它不是加密算法,所以不提供加密功能,仅仅只是保护密钥交换的过程。

如何生成dhparam

#使用openssl生成,先which openssl确认openssl是否安装,没有安装的先安装
yum install openssl
#or
apt install openssl

#生成dhparam
mkdir /etc/nginx/cert/
openssl dhparam -out /etc/nginx/cert/dhparam.pem 4096

Nginx配置

# HTTPS server 设置
server {
    listen 443 ssl;
    ssl_certificate /etc/nginx/cert/cert.pem;
    ssl_certificate_key /etc/nginx/cert/key.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
    ssl_session_cache shared:SSL:50m;
    #openssl dhparam -rand /dev/urandom 4096 -out /dhparam.pem
    #or openssl dhparam -out dhparam.pem 4096
    #ssl_dhparam 可选,如果需要使用上面的命令生成dhparam.pem
    ssl_dhparam /etc/nginx/cert/dhparam.pem;
    ssl_prefer_server_ciphers on;
    server_name blog.terrynow.com;
    #server_name _;

    root /var/www/wordpress;
    index index.php index.html index.htm;
    client_max_body_size 100M;

    charset utf-8;

    access_log  logs/wordpress.access.log  mains;

    #强制跳转
    if ($host !~ ^blog.terrynow.com$){
        rewrite ^(.*)  https://blog.terrynow.com$1 permanent;
    }

    #其他设置省略
}

你还利用nginx的重定向可以将你的http流量导到https,配置如下

server {
    # 省略部分配置 ***
    listen 80;
    #rewrite all traffic to https
    #rewrite ^/(.*) https://blog.terrynow.com/$1 permanent;
    #or或者全部http转到https
    return 301  https://$host$request_uri;
}

配置好后,重启nginx,就完成了

打开SSL测试网站,https://www.ssllabs.com/ssltest/来看看我们的SSL加密得分

Terry

记录开发运维过程中遇到的坑以及解决方案,干货分享

文章评论

*

code