Nginx SSL模块

SSL和安全
Nginx通过SSL模块提供安全的HTTP功能,但也提供了另外一个叫Secure Link的模块。

SSL模块
SSL模块能够提供HTTPS的支持,尤其是在SSL/TLS上的HTTP。它能够通过提供证书来给网站提供安全访问,使用一个证书和下面的指令定义的其他参数就可以实现。

使用环境:http、server
ssl
ssl on;或ssl off;
在指定服务器开启HTTPS。该指令相当于对应的listen 443 ssl;或listen port ssl;但不如它们普遍。

ssl_certificate
ssl_certificate path;
设置PEM证书的路径

ssl_certificate_key
ssl_certificate path;
设置PEM secret key文件的路径

ssl_client_certificate
ssl_client_certificate path;
设置客户端PEM certificate的路径

ssl_dhparam
ssl_dhparam path;
设置 Diffie-Hellman参数文件的路径

ssl_protocols
ssl_protocols SSLv2 SSLv3 TSLv1;
指定使用的协议。

ssl_ciphers
ssl_ciphers  HIGH:!aNULL:!MD5;
指定使用的密码,密码可以由openssl ciphers生成

ssl_prefer_server_ciphers
ssl_prefer_server_ciphers [ on | off ];
指定是否服务器密码优先于客户端密码

ssl_verify_client
ssl_verify_client [ on | off ];
开启校验客户端提供的证书

ssl_verify_depth
ssl_verify_depth 1;
指定校验客户端证书链的深度,默认1

ssl_session_cache
ssl_session_cache [ off | none | builtin:size | shared:name:size ]
配置用于SSL会话的缓存

ssl_session_timeout
ssl_session_timeout 5m;
开启SSL会话功能后,该指令定义使用会话的期限(超时),默认5分钟

有效变量:
$ssl_cipher 指出当前请求使用的密码
$ssl_client_serial 指出客户端证书的序列号
$ssl_protocol 指出当前请求所使用的协议
$ssl_verify 如果客户端校验成功,那么设置该变量为SUCCESS
$ssl_client_s_dn和$ssl_client_i_dn 指出客户端证书的主题(subject)值和客户端证书发行者DN
$ssl_client_cert和$ssl_client_raw_cert 返回客户端证书数据

默认配置文件

# HTTPS server
    #
    #server {
    #    listen       443 ssl;  //在指定服务器开启HTTPS
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;   //设置PEM证书的路径
    #    ssl_certificate_key  cert.key; //设置PEM secret key文件的路径

    #    ssl_session_cache    shared:SSL:1m; //配置用于SSL会话的缓存
    #    ssl_session_timeout  5m; //开启SSL会话功能后,该指令定义使用会话的期限

    #    ssl_ciphers  HIGH:!aNULL:!MD5; //指定使用的密码
    #    ssl_prefer_server_ciphers  on;  //指定是否服务器密码优先于客户端密码

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

配置HTTPS参考:http://blog.51cto.com/gdutcxh/2113718

Secure link模块完全与SSL模块无关,该模块提供了一个基本的保护,其做法是在允许一个用户访问一个资源之前,在URL检查是否有一个特定的散列值
location /downloads/ {
secure_link_secret "secret";
if (secure_link= "") {
return 403;
}
rewrite ^ /downloads/$secure_link break;
}
通过这个配置,常规访问 /downloads/下的资源将以403的错误码返回
需要在文件名前带上MD5的值,MD5(文件名+secure_link_secret 指令值)

原文地址:http://blog.51cto.com/gdutcxh/2121507

时间: 2024-08-03 08:06:08

Nginx SSL模块的相关文章

nginx加ssl模块及添加ssl功能

在未安装nginx的情况下安装nginx第三方模块 1 2 3 4 5 6 7 8 # ./configure --prefix=/usr/local/nginx-1.4.1 \ --with-http_stub_status_module \ --with-http_ssl_module --with-http_realip_module \ --with-http_image_filter_module \ --add-module=../ngx_pagespeed-master --add

nginx使用ssl模块配置HTTPS支持

默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中.通常这个文件名类似libssl-dev. 生成证书 可以通过以下步骤生成一个简单的证书:首先,进入你想创建证书和私钥的目录,例如: $ cd /data 创建服务器私钥,命令会让你输入一个口令: $ openssl genrsa -des3 -out server.key 1024 创建签名请求的证书(C

nginx使用ssl模块配置HTTPS支持 <转>

默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中.通常这个文件名类似libssl-dev. 生成证书 可以通过以下步骤生成一个简单的证书:首先,进入你想创建证书和私钥的目录,例如: $ cd /usr/local/nginx/conf 创建服务器私钥,命令会让你输入一个口令: $ openssl genrsa -des3 -out server.key

nginx使用ssl模块配置支持HTTPS访问

默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译nginx时指定–with-http_ssl_module参数. 需求: 做一个网站域名为 www.localhost.cn 要求通过https://www.localhost.cn进行访问. 10.10.100.8 www.localhost.cn 实验步骤: 1.首先确保机器上安装了openssl和openssl-devel #yum install openssl #yum install openssl-devel 2.创建服务

nginx添加ssl模块

原已经安装好的nginx,现在需要添加一个未被编译安装的ssl模块: nginx -V 可以查看原来编译时都带了哪些参数 原来的参数:--prefix=/app/nginx 添加的参数: --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module 步骤如下: 1. 使用参数重新配置: ./configure --prefix=/app/nginx -user=nobody -group=nobod

修复OpenSSL漏洞 升级OpenSSL版本 nginx静态编译ssl模块

背景 OpenSSL全称为Secure Socket Layer,是Netscape所研发,利用数据加密(Encryption)作技术保障在Internet上数据传输的安全.可确保数据在网络上的传输不会被窃听及截取. 当然,OpenSSL是一个强大的密码库,我们在使用SSL协议的时候不一定非得采用OpenSSL,不过目前基本上都是用的OpenSSL,因为它更安全,使用起来也更简单. 通常出现的OpenSSL的漏洞需要升级版本解决 查看openssl版本 openssl version 进入存放源

开始Nginx的SSL模块

一:开始Nginx的SSL模块 1.1 Nginx如果未开启SSL模块,配置Https时提示错误 原因也很简单,nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块,其实也很简单,往下看: 做个说明:我的nginx的安装目录是/usr/local/nginx这个目录,我的源码包在/usr/local/src/nginx-1.6.2目录 1 nginx: [emerg]

nginx添加模块与https支持

实例1:为已安装nginx动态添加模块 以安装rtmp媒流模块为例: 1)下载第三方模块到 [[email protected] nginx-1.8.1]# git clone https://github.com/arut/nginx-rtmp-module.git 2)查看nginx编译安装时安装的模块 [[email protected] nginx-1.8.1]# nginx -V nginx version: nginx/1.8.1 built by gcc 4.4.7 2012031

Nginx 事件模块

概述 Nginx 是以事件的触发来驱动的,事件驱动模型主要包括事件收集.事件发送.事件处理(即事件管理)三部分.在Nginx 的工作进程中主要关注的事件是 IO 网络事件 和 定时器事件.在生成的 objs 目录文件中,其中ngx_modules.c 文件的内容是 Nginx 各种模块的执行顺序,我们可以从该文件的内容中看到事件模块的执行顺序为以下所示:注意:由于是在 Linux 系统下,所以支持具体的 epoll 事件模块,接下来的文章结构按照以下顺序来写. extern ngx_module