Nginx SSL模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 指令值)
以上是关于Nginx SSL模块的主要内容,如果未能解决你的问题,请参考以下文章