Nginx之5金钟罩 - (SSL),


SSL加密连接

在此分享前,思考几个问题。
Q1.为什么服务器要启用SSL加密数据连接?
Q2.如何使用SSL?
Q3.启用SSL的优势、劣势?

A1. HTTP协议在传输过程中,对于数据是不加密的,如果有恶意截取、伪造的情况是非常危险的。HTTPS就是基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护。目前Chorme浏览器已经默认将HTTP的站点当成不安全的网站类型,全站SSL将会而且必须是发展的趋势。
A2. 流程很简单,申请SSL证书,配置应用服务器支持SSL,测试网站SSL有效性。
A3. SSL优势对服务器及客户端交互的数据进行加密,保护数据安全。但凸显出来对性能是有一定的下降的(因为传统的TCP连接经历了三次握手即可传输数据,但在HTTPS场景下,还需要对RSA签名校验,对ECC秘钥交换、计算、加密、解密等等)。但在不同场景,HTTP及HTTPS有不同的应用,例如在文件分发只读的情况,无需启用HTTPS,例如在购物车等场景,必须启用HTTPS。

功能配置

1.申请SSL证书,我们采用linuxboy云盾的免费单域名证书。然后下载证书存放到ECS服务器上。
image

2.在Nginx上,ngx_http_ssl_module模块为HTTPS提供必要的支持,默认是不开启的,如果需要Nginx支持SSL,需要在编译时加入--with-http_ssl_module编译选项,该模块依赖OpenSSL库。编辑nginx.conf文件增加SSL相关的配置信息。

server {
    listen 443 ssl;
    server_name nginx.yekangming.com;
    ssl_certificate /data/certificate/public.crt;
    ssl_certificate_key /data/certificate/private.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        root /data/webroot/nginx;
        index index.html;
    }
}
ssl on; #旧版本的写法

配置详解

ssl_certificate /data/certificate/public.crt; #证书
ssl_certificate_key /data/certificate/private.key; #私钥
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #协议
ssl_ciphers HIGH:!aNULL:!MD5; #加密套件

访问效果
在Chorme浏览器访问,可以在左上角见到有锁头代表已经加密了连接使用了SSL。
image

小技巧

用户在访问时习惯性只会输入域名,而我们浏览器则会自动补齐协议http://
一般情况下都会配置跳转,让用户的请求从HTTP从定向到HTTPS。

相关内容