nginx 使用SSL对流量进行加密

说白了就是将我们常用的http请求转变成https请求,那么这两个之间的区别简单的来说两个都是HTTP协议,只不过https是身披SSL外壳的http.

HTTPS是一种通过计算机网络进行安全通信的传输协议。它经由HTTP进行通信,利用SSL/TLS建立全通信,加密数据包,确保数据的安全性。

SSL(Secure Sockets Layer)安全套接层

TLS(Transport Layer Security)传输层安全

上述这两个是为网络通信提供安全及数据完整性的一种安全协议,TLS和SSL在传输层和应用层对网络连接进行加密。

总结来说为什么要使用https:

http协议是明文传输数据,存在安全问题,而https是加密传输,相当于 http+ssl,并且可以防止流量劫持。

Nginx要想使用SSL,需要满足一个条件即需要添加一个模块–with- http_ssl_module ,而该模块在编译的过程中又需要OpenSSL的支持.

nginx添加SSL的支持

(1)完成 --with-http_ssl_module模块的增量添加

将原有/usr/local/nginx/sbin/nginx进行备份 
拷贝nginx之前的配置信息 
在nginx的安装源码进行配置指定对应模块 ./configure --with-http_ssl_module 
通过make模板进行编译将objs下面的nginx移动到/usr/local/nginx/sbin下 
在源码目录下执行 make upgrade进行升级,这个可以实现不停机添加新模块的功能 

Nginx的SSL相关指令

ssl:该指令用来在指定的服务器开启HTTPS,可以使用 listen 443 ssl,后面这种方式更通用些。

语法ssl on | off;
默认值ssl off;
位置http,server
server{ 
  listen 443 ssl; 
} 

ssl_certifificate:为当前这个虚拟主机指定一个带有PEM格式证书的证书。

语法ssl_certifificate file;
默认值
位置http,server

ssl_certificate_key:该指令用来指定PEM secret key文件的路径

语法ssl_ceritifificate_key file;
默认值
位置http,server

ssl_session_cache:该指令用来配置用于SSL会话的缓存

语法ssl_sesion_cache off|none|[builtin[:size]]
[shared:name:size]
默认值ssl_session_cache none;
位置http、server

off:禁用会话缓存,客户端不得重复使用会话

none:禁止使用会话缓存,客户端可以重复使用,但是并没有在缓存中存储会话参数

builtin:内置OpenSSL缓存,仅在一个工作进程中使用。

shared:所有工作进程之间共享缓存,缓存的相关信息用name和size来指定

ssl_session_timeout:开启SSL会话功能后,设置客户端能够反复使用储存在缓存中的会话参数时间。

语法ssl_session_timeout time;
默认值ssl_session_timeout 5m;
位置http、server

ssl_ciphers:指出允许的密码,密码指定为OpenSSL支持的格式

语法ssl_ciphers ciphers;
默认值ssl_ciphers HIGH:!aNULL:!MD5;
位置http、server

可以使用openssl ciphers查看openssl支持的格式。

ssl_prefer_server_ciphers:该指令指定是否服务器密码优先客户端密码

语法ssl_perfer_server_ciphers on| off;
默认值ssl_perfer_server_ciphers off;
位置http、server

生成证书

方式一:使用阿里云/腾讯云等第三方服务进行购买。

方式二:使用openssl生成证书

先要确认当前系统是否有安装openssl

openssl version

安装下面的命令进行生成

mkdir /root/cert 
cd /root/cert 
openssl genrsa -des3 -out server.key 1024 
openssl req -new -key server.key -out server.csr 
cp server.key server.key.org 
openssl rsa -in server.key.org -out server.key 
openssl x509 -req -days 365 -in server.csr -signkey 
server.key -out server.crt 

开启SSL实例

server { 
  listen 443 ssl; 
  server_name localhost; 
  ssl_certificate server.cert; 
  ssl_certificate_key server.key; 
  ssl_session_cache shared:SSL:1m; 
  ssl_session_timeout 5m; 
  ssl_ciphers HIGH:!aNULL:!MD5; 
  ssl_prefer_server_ciphers on; 
  location / { 
    root html; 
    index index.html index.htm; 
  }
}

最后验证。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值