Nginx下绑定自己签发的免费SSL数字安全证书【转】

由于HTTP协议明文传输数据,使得嗅探无处不在,因此对某些网站如购物交易类、注册登陆类等,需要开启HTTPS协议来增加安全性,保证用户的密码不被盗取和嗅探。

HTTPS需要SSL数字安全证书的支持,一般找浏览器信任的CA机构签发数字证书都是要收费的,价格一般在13美元/年至50美元/年不等。(除了StartSSL和PositiveSSL)

如果证书只是给自己用的,防止在线管理时密码被窃听,则可以自行颁发免费的SSL数字安全证书。
Debian5 + OpenSSL + Nginx环境步骤如下:

一、使用OpenSSL生成SSL数字安全证书

openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095

上述命令中第一步是生成用户证书 RSA 密钥对,且不带密码。 第二步是证书请求生成和自签名,此时会要求输入参数,随便填,但Common Name必须填即将使用HTTPS的站点名称,比如:*.yourdomain.com 。

二、确保Nginx支持OpenSSL模块

Nginx默认是不支持SSL的,需要重新配置和编译,命令如下:

wget http://nginx.org/download/nginx-0.7.65.tar.gz
tar zxvf nginx-0.7.65.tar.gz
cd /root/nginx-0.7.65
./configure --with-http_stub_status_module --with-http_ssl_module
make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
cp ./objs/nginx /usr/local/nginx/sbin/nginx
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

上述命令其实也是一次标准的Nginx升级操作,其中的目录需要用户根据具体情况自行更改。
另外,用户也可以在编译前注释掉 auto/cc/gcc 中的 CFLAGS=”$CFLAGS -g” 这行,使Nginx不以Debug模式编译,节约文件和内存占用、提高速度。

三、修改Nginx配置

修改nginx.conf中相应的server段:

 server
{
listen 443;
ssl on;
ssl_certificate /etc/ssl/cacert.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
server_name www.yourdoamin.com;
index index.html index.htm index.php;
root  /home/wwwroot/yourdomain;
......
......
}

其中SSL数字证书路径和域名路径也应根据实际情况修改。

四、重启Nginx

上传nginx.conf后,测试配置文件是否正确,并重启Nginx:

/usr/local/nginx/sbin/nginx -t
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

五、使用HTTPS协议访问网站

键入https://www.yourdomain.com 会出现警告框:
ssl-cert-security-warning
由于是自己使用,点击查看证书-安装证书,下次就不会再弹出该警报框。

至此,你就可以使用HTTPS协议安全的访问网站,不用担心用户名和密码会在传输过程中被嗅探、盗取。

发表评论

你必须 登录 才能发表评论.