nginx使用SSL指南

来源:互联网 发布:优化农业结构 编辑:程序博客网 时间:2024/04/28 00:24

原文:http://www.5ilinux.com/2014/01/nginx_ssl_howto.html

在我们实际运维过程中,web服务难免会用ssl证书,比如注册链接等,一般我们都会有下面2种情况进行设置
这里我们以nginx为例,讲讲2种SSL证书的操作,apache其实也类似,可做参考。

第一种方式:自签名的SSL证书(免费,但不被认证)

首先必须你要安装好openssl,我想一般都会装好,如果没装,那就先装上,不管是yum还是apt

mkdir /etc/nginx/ssl/

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/nginx.pem -keyout /etc/nginx/ssl/nginx.key Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:beijingLocality Name (eg, city) [Default City]:beijingOrganization Name (eg, company) [Default Company Ltd]:5ilinux.comOrganizational Unit Name (eg, section) []:itCommon Name (eg, your name or your server's hostname) []:5ilinux.comEmail Address []:

chmod 400 nginx.pem
chmod 400 nginx.key

普通虚拟主机的设置

server {       # [...]       listen 443;      ssl on;      ssl_certificate      /etc/nginx/ssl/nginx.pem;      ssl_certificate_key  /etc/nginx/ssl/nginx.key;       # [...]}

多个虚拟主机公用同一个ssl证书

http {    ssl_certificate   /etc/nginx/ssl/nginx.pem;    ssl_certificate_key   /etc/nginx/ssl/nginx.key;     server {       listen       443;       server_name      www.5ilinux.com;       ssl on;        location / {             root /var/www/5ilinux/www;       }    }    server {       listen       443;       server_name      blog.5ilinux.com;       ssl on;        location / {             root /var/www/5ilinux/blog;       }     # [...]    }

强制所有访问都转到https访问

只要在80端口的虚拟主机里设置

rewrite ^ https://$server_name$request_uri permanent;

加了SSL后,关于nginx的参数优化,以下参数可以根据需要加载在http配置或者server配置里

ssl_session_cache shared:SSL:10m; #默认是none
ssl_session_timeout 10m; #默认是5m

下面是一些加密的方式支持等,根据自己需要来设置

ssl_ciphers HIGH:!aNULL:!MD5 #默认一样
ssl_prefer_server_ciphers on; #默认是off
ssl_protocols SSLv2 SSLv3 TLSv1; #默认是SSLv3 TLSv1 TLSv1.1 TLSv1.2;

配置完这些,基本上我们都能访问https的地址,只是可能会显示证书不受信任,当然了,第一种方式是自签名证书,所以我们有第2种常见可能

第二种:向商业机构申请SSL证书(收费,相对有安全保证)

首先也是用openssl生产一个key和csr文件

openssl req -new -days 365 -nodes -keyout 5ilinux.com.key -out 5ilinux.com.csr

生成的过程跟自签名过程差不多

把获得的csr文件提交给权威SSL认证机构,他们会发给你一个5ilinux.crt的证书

剩下的基本跟上面一样,只不过证书名字换个就行

ssl_certificate /etc/nginx/ssl/5ilinux.com.crt;
ssl_certificate_key /etc/nginx/ssl/5ilinux.com.key;

参考文档:http://nginx.org/en/docs/http/ngx_http_ssl_module.html

0 0
原创粉丝点击