Nginx是目前最新的高性能Web服务器,和传统的Apache服务器相比,特别在大量的客户并发连接下,性能要提高10倍以上。很多大型的PHP网站都采用了Nginx服务器。虽然Nginx采用是Linux2.6内核和epoll架构的网络I/O模型,但在使用上和Apache还是比较相似,是Apache一个非常不错的替代产品,下面主要介绍一下Nginx下使用SSL证书的一些内容。
制作Nginx用的CSR请求文件,最简单的办法就直接使用我们的 OpenSSL CSR在线生成器: https://www.myssl.cn/openssl/createcsr.asp
Nginx SSL主要采用BASE64位的PEM文件格式,可以采用Openssl命令行工具来生成CSR文件,OpenSSL工具是免费的,可以从www.openssl.org下载到最新的源码,但需要自己编译(见Openssl编译简介),你也可以下载使用已经编译好的OpenSSL 0.9.8.a for win32,下载地址是: http://www.myssl.cn/download/OpenSSL_0.9.8.a_Win32.zip
1、Openssl是一个命令行工具,首先将下载包解压到C:\openssl下。
2、打开DOS命令行窗口,进入C:\openssl,输入命令:
openssl req -new -nodes -keyout server.key -out server.csr
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
...........................++++++
....................................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be
incorporated into your certificate request.
What you are about to enter is what is called a
Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Shanghai
Locality Name (eg, city) []:Shanghai
Organization Name (eg, company) [Internet Widgits Ltd]:
Shanghai Fastcom Technology Co.,Ltd.
Organizational Unit Name (eg, section) []:IT Dept.
Common Name (eg, YOUR name) []:www.myssl.cn
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
3、在完成了如上的交互信息输入后,当前目录下将产生两个文件:server.key 和 server.csr。请妥善保存这两个文件,请不要泄露server.key私钥文件。
4、在这一命令执行的过程中,系统会要求您填写如下信息:
Country Name (2 letter code)
|
使用国际标准组织(ISO)国码格式,填写2个字母的国家代号。中国请填写CN。
|
State or Province Name (full name)
|
省份,比如填写Shanghai
|
Locality Name (eg, city)
|
城市,比如填写Shanghai
|
Organization Name (eg, company)
|
组织单位,比如填写公司名称的拼音
|
Organizational Unit Name (eg, section)
|
比如填写IT Dept
|
Common Name (eg, your websites domain name):
|
行使 SSL 加密的网站地址。请注意这里并不是单指您的域名,而是直接使用 SSL 的网站名称 例如:pay.abc.com。 一个网站这里定义是:
abc.com 是一个网站;
www.abc.com 是另外一个网站;
pay.abc.com 又是另外一个网站。
|
Email Address
|
邮件地址,可以不填
|
A challenge password
|
可以不填
|
An optional company name
|
可以不填
|
5、如何产生2048位的密钥对?
在上面的命令行交互中,我们看到“Generating a 1024 bit RSA private key”,即系统缺省采用1024位的RSA密钥长度,一般来说1024位是足够的,但是在申请EV证书的时候,我们必须采用2048位的密钥长度,要生成2048位的密钥,可以修改上面的命令行:(斜体部分为增加的参数)
openssl req -new -nodes -newkey rsa:2048 -keyout server.key -out server.csr
6、如何制作中文的CSR文件?
中文CSR文件,主要指企业名称、部门,城市,省份等信息采用中文,通用名和国家代码仍然必须是英文的,GeoTrust目前已经全面支持中文的CSR,要制作中文的CSR,最简单的办法仍然是采用我们的在线CSR生成器: https://www.myssl.cn/openssl/createcsr.asp
如果希望自己通过Openssl工具来制作中文CSR就需要多费一些工夫了,下面详细介绍一下采用Openssl命令行制作中文CSR的方法。
Openssl本身是可以支持UTF-8编码来支持中文的,但是如果通过DOS命令行是无法输入UTF-8的中文字符的,所以我们必须采用Opnessl.cnf配置文件的缺省值来实现中文字的输入。采用一个文本编辑器,最好是支持utf-8字符的,我采用UltraEdit,打开Openssl.cnf文件,首先修改:
string_mask = utf8only
这句话将强制字符的输入采用UTF-8的编码格式,然后修改缺省DN信息,录入我们需要合中文字符,如下
commonName_default = www.myssl.cn
0.organizationName_default = 上海迅通科技有限公司
organizationalUnitName_default = IT 部门
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中。
CSR已经做好,最后强调,必须同时保存好server.csr和server.key2个文件,尤其是server.key一定丢失,将无法再使用这个证书。
1、将证书内容存为一个文件:
您会收到一封来自迅通诚信的邮件,证书内容附在邮件中。请将邮件中的证书部分的内容用Vi或Notepad存成一个纯文本文件。不要将其存成Microsoft Word 或其它字处理软件格式,并确定证书内容中不含有空行和空格,文件名可以为server.cer。如下所示:

请根据产品下载对应的中间证书:
请用Notepad打开中间证书,并复制中间证书中的所有内容,粘贴到Server.cer文件最后,再次保存好server.cer文件,并将此文件和制作CSR时候生成的server.key一起复制到服务器上。
2、修改nginx.conf文件。
Nginx的参数配置都在nginx.conf文件中,SSL配置也是如此,下面就是配置举例:
server {
listen 443;
server_name www.myssl.cn;
ssl on;
ssl_certificate server.cer;
ssl_certificate_key server.key;
}
配置参数说明如下:
SSL协议监听的端口,SSL协议缺省使用443端口。
指定SSL网站主机名。
SSL功能打开,采用SSL通信协议。
证书文件,server.cer
私钥文件,server.key
支持的SSL协议标准。
3、重新启动nginx,如果是在Windows 2003下,输入:
nginx -s stop
nginx
如果要求客户采用客户证书认证方式,可以在原来的配置下增加如下参数:
server {
......
......
......
ssl_client_certificate on
ssl_client_certificate ca.cer
ssl_verify_depth 1
}
配置参数说明如下:
要求SSL客户证书认证。
签发客户证书的CA证书,用来验证客户证书。
SSL功能打开,采用SSL通信协议。
SSL客户证书认证链长度。
在Nginx下的证书备份是非常简单的,打开nginx.conf文件,找到ssl_certificate和ssl_certificate_key指定的2个文件,通常是.cer(.crt)和.key文件,将这两个文件复制到备份媒质上即可。
要恢复Nginx的证书同样非常简单,将备份的.cer和.key文件,复制到新的服务器上,然后参考上面服务器证书安装说明,修改nginx.conf文件即可。
1、Openssl是开源的,可以到http://www.openssl.org/source/下载最新的版本。然后解压到c:\openssl。
2、要编译Openssl,需要下载并安装ActivePerl,并在系统路径中添加“C:\Perl\site\bin;C:\Perl\bin”
3、安装Vs2003(也可以安装VS2005,2008但这2个版本的VC编译出来的Openssl是有BUG的,在特定情况下会产生win32异常错误,仅适合偶尔用一下的情况)。
4、使用VS2003下的Visual Studio.net 2003 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)
5、进入c:\openssl。
6、输入(注意大小写): perl Configure VC-WIN32
7、输入: ms\do_ms
8、输入: nmake -f ms\ntdll.mak
9、Openssl已经编译好了,执行程序在out32dll目录下。
|