Nginx SSL证书部署指南
一、概述
1、 简单介绍
Nginx是目前最新的高性能Web服务器,和传统的Apache服务器相比,特别在大量的客户并发连接下,性能要提高10倍以上。很多大型的PHP网站都采用了Nginx服务器。虽然Nginx采用是Linux2.6内核和epull架构的网络I/O模型,但在使用上和Apache还是比较相似,是Apache一个非常不错的替代产品,下面主要介绍一下Nginx下使用SSL证书的一些内容。
2、 工具及环境
点击以下链接下载并安装Openssl工具,下载地址是:win32openssl-0_9_8.exe
二、制作CSR申请文件
1、 产生证书私钥和证书请求文件(CSR)
Openssl工具安装成功后,点击"开始"菜单,在"运行"一栏输入"cmd",然后点击"确定",进入openssl目录:
openssl req -new -nodes -newkey rsa:2048 -keyout server.key -out server.csr
在完成了如上的交互信息输入后,当前目录下将产生两个文件:server.key 和 server.csr。请妥善保存这两个文件,请不要泄露server.key私钥文件。
2、 详细介绍命令:
Country Name (2 letter code) |
使用国际标准组织(ISO)国码格式,填写2个字母的国家代号。中国请填写CN。 |
State or Province Name (full name) |
省份,比如填Guangdong |
Locality Name (eg, city) |
城市,比如填写Shenzhen |
Organization Name (eg, company) |
组织单位,比如填写公司名称的拼音 |
Organizational Unit Name (eg, section) |
比如填写IT Dept |
Common Name(eg, your websites domain name): |
行使 SSL 加密的网站地址。请注意这里并不是单指您的域名,而是直接使用 SSL 的网站名称 。 |
Email Address |
邮件地址,可以不填 |
A challenge password |
可以不填 |
An optional company name |
可以不填 |
3、 提交CSR 到WoSign
保管好server.key私钥文件,提交CSR给WoSign等待证书签发 。
三、安装证书文件
1、 获取证书的公钥
您会收到一封来自WoSign的邮件,证书内容附在邮件中。请将邮件中的证书部分的内容Notepad存成一个纯文本文件,并确定证书内容中不含有空行和空格,文件名可以为server.cer
2、 获取中间证书
不同的SSL证书对应不同中级根证书格式文件,请到WoSign 官方网站下载,或者联系客服,下载地址:http://www.wosign.com/Support/ssl_installation.htm
3、 合并证书公钥
请用Notepad打开中间证书,并复制中间证书中的所有内容,粘贴到Server.cer文件最后,再次保存好server.cer文件,并将此文件和制作CSR时候生成的server.key一起复制到服务器上。
4、 修改nginx.conf文件
Nginx的参数配置都在nginx.conf文件中,SSL配置也是如此,下面就是配置举例:
server {
listen 443;
server_name www.wosign.com;
ssl on;
ssl_certificate server.cer;
ssl_certificate_key server.key;
}
5、 配置参数说明如下:
listen 443:SSL协议监听的端口,SSL协议缺省使用443端口。
server_name:指定SSL网站主机名。
ssl on:SSL功能打开,采用SSL通信协议。
ssl_certificate:证书文件,server.cer
ssl_certificate_key:私钥文件,server.key
ssl_protocols:支持的SSL协议标准。
6、 其他缺省值修改
1. ssl_protocols SSLv2 SSLv3 TLSv1; 应该修改为:ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
2. ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
应该修改为:
ssl_ciphers ALL:!ADH:!EXPORT56:-RC4+RSA:+HIGH:+MEDIUM:-EXP;
7、 重新启动nginx 。
四、证书的备份和证书的导入
1、 备份
在Nginx下的证书备份是非常简单的,打开nginx.conf文件,找到ssl_certificate和ssl_certificate_key指定的2个文件,通常是.cer(.crt)和.key文件,将这两个文件复制到备份媒质上即可。
2、 导入
要恢复Nginx的证书同样非常简单,将备份的.cer和.key文件,复制到新的服务器上,然后参考上面服务器证书安装说明,修改nginx.conf文件即可。
五、客户端证书认证
1、 修改nginx.conf文件
如果要求客户采用客户证书认证方式,可以在原来的配置下增加如下参数:
server {
......
......
......
ssl_verify_client on
ssl_client_certificate ca.cer
ssl_verify_depth 1
}
2、 配置参数说明
ssl_verify_client on: 要求SSL客户证书认证。
ssl_client_certificate ca.cer: 签发客户证书的CA证书,用来验证客户证书。
ssl on:SSL 功能打开,采用SSL通信协议。
ssl_verify_depth 1: SSL客户证书认证链长度。
六、常见问题
1、 如何产生2048位的密钥对?
在上面的命令行交互中,我们看到"Generating a 1024 bit RSA private key",即系统缺省采用1024位的RSA密钥长度,但我们必须采用2048位的密钥长度,要生成2048位的密钥,可以修改上面的命令行:(斜体部分为增加的参数)
openssl req -new -nodes -newkey rsa:2048 -keyout server.key -out server.csr
2、 如何制作中文的CSR文件
Openssl本身是可以支持UTF-8编码来支持中文的,但是如果通过DOS命令行是无法输入UTF-8的中文字符的,所以我们必须采用Opnessl.cnf配置文件的缺省值来实现中文字的输入。采用一个文本编辑器支持utf-8字符的,我采用UltraEdit,打开Openssl.cnf文件,首先修改:
string_mask = utf8only
这句话将强制字符的输入采用UTF-8的编码格式,然后修改缺省DN信息,录入我们需要合中文字符,如下
commonName_default = www.wosign.com
0.organizationName_default = 沃通电子认证服务有限公司
organizationalUnitName_default = 技术部
stateOrProvinceName_default = 广东省
localityName_default = 深圳市
countryName_default = CN
然后将文件按utf-8,no bom的编码格式保存,在Ultraedit下,请选择"另存为",格式为"UTF-8 - NO-BOM"。如果没有可以支持UTF-8的编辑工具,也可以下载一个ICONV来做编码转换工作。
准备好openss.cnf文件后,输入命令行:
openssl req -utf8 -config config.cnf -new -nodes -batch -keyout server.key -out server.csr
系统将自动生成CSR文件,保存在server.csr中。