首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Nginx 配备 SSL 证书 + HTTPS 站点小记

2012-11-22 
Nginx 配置 SSL 证书 + HTTPS 站点小记今天给几个站点配置了认证的 ssl 证书,但是苦于自己技术不过关,或是

Nginx 配置 SSL 证书 + HTTPS 站点小记

今天给几个站点配置了认证的 ssl 证书,但是苦于自己技术不过关,或是知识不足,导致还有那么一小点 Bug 的出现,这里就我配置 HTTPS 站点的经验来总结一下吧。

?

一、什么是 SSL 证书,什么是 HTTPS 网站?

SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以激活该功能了)。即通过它可以激活SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露。保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。(来源)

二、什么网站需要 SSL 证书?

就我遇到过的网站,配置了认证的证书的,大概有这么几类:

1、购物交易类网站

这个就不用说了,支付宝、Paypal等肯定会加密以保护你的密码安全。

2、注册类站点

有些大站点,注册会员或者登陆的时候,会专门通过SSL通道,来保护你的密码安全,比如:https://www.name.com/account/login.php

3、在线代理类站点

这个,为了防止天朝某个部分嗅探出没加密的内容,嗯哼,就不说了。

4、耍酷类

比如我……

三、Nginx 下如何配置证书

之前,我介绍过如何购买并且配置 Godaddy 的证书:《Godaddy SSL证书以及 Nginx 配置HTTPS方法》,后来因为一个小失误,每次修改 Nginx 配置,重启 Nginx 的时候都会输入密码,所以之后买了 Comodo 的证书,并且让 @Paveo 帮我全部配置好,哈哈。

但是总请别人来配置总不太好意思,所以我得自己研究一下,然后,就当作记录和总结吧。

1、Nginx 配置 ssl 模块

默认 Nginx 是没有 ssl 模块的,而我的 VPS 默认装的是 Nginx 0.7.63 ,顺带把 Nginx 升级到 0.7.64 并且 配置 ssl 模块方法如下:

下载 Nginx 0.7.64 版本,解压 进入解压目录:

wget http://sysoev.ru/nginx/nginx-0.7.64.tar.gz?
tar zxvf nginx-0.7.64.tar.gz?
cd nginx-0.7.64

如果要更改header信息的话,

vi src/core/nginx.h?
#define NGINX_VERSION????? "0.7.62"?
#define NGINX_VER????????? "nginx/" NGINX_VERSION

上面的版本号和nginx自己修改

编译

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module?
make && make install

如果有 IPV6 模块,加上 --with-ipv6 参数:

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-ipv6

(来源:http://www.hostloc.com/thread-4871-1-1.html)

因为是小网站,用不着平滑升级,直接 killall nginx 杀掉 nginx 进程,然后 /usr/local/nginx/sbin/nginx 启动 nginx 即可

OK,升级并且安装好 ssl 模块完毕,这里我把 Nginx 修改成了 zoulu,于是乎:

Nginx 配备 SSL 证书 + HTTPS 站点小记

怎么样,很有个性吧!

2、使用 OpenSSL 生成证书

①、生成RSA密钥的方法

openssl genrsa -out privkey.pem 2048

有的证书要 1024 的,所以得:

openssl genrsa -out privkey.pem 1024

②、生成一个证书请求

openssl req -new -key privkey.pem -out cert.csr

会提示输入省份、城市、域名信息等,重要的是,email 一定要是你的域名后缀的,比如webmaster@zou.lu?并且能接受邮件!

这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件

(来源:http://www.lsproc.com/blog/nginx_ssl_config/)

直接 cat cert.csr

得到一大串字符,比如这样:

-----BEGIN CERTIFICATE REQUEST-----?
MIIBsTCCARoCAQAwcTELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAkhCMQwwCgYDVQQH?
EwNTSloxDzANBgNVBAoTBkZhbmZvdTESMBAGA1UEAxMJZzFuZm91LmRlMSIwIAYJ?
KoZIhvcNAQkBFhN3ZWJtYXN0ZXJAZmFuZm91LmRlMIGfMA0GCSqGSIb3DQEBAQUA?
A4GNADCBiQKBgQC5l4PmZg6TCIpduefxq5gsLXN1JeQdBmUs+pEApeHmNoxE+R4k?
VkQUJzLj5o3ltQGJzYrcIfru8NryQSxaT/5IjeFwS7nIMsx8KPkQQ71BJazsiZj+?
CdLDRJj1m/SrjTsNrfYj4rFFS1FXq7uEDyreUx7fyAljx70jPSsGBOGwRQIDAQAB?
oAAwDQYJKoZIhvcNAQEFBQADgYEACKCBQcnCq5yE3GFyN3NyxCQEvnspkIv9AqI4?
FcwqyHPZWkupp3wfubHY80IwtfjlGlTSynzE7FZLVpcbNfKLnAYlYEwDY7NukJNy?
pCbyqpJJXdAl3Jcun0NlLtSxTQpR+abO8va/BAO5Hp9h1rpSRtTdSJd2fC/owRV1?
BfRuJnA=?
-----END CERTIFICATE REQUEST-----

提交给你的 ssl 提供商即可,一般半个钟头到一天时间就会发给你证书,如图:

Nginx 配备 SSL 证书 + HTTPS 站点小记

把所有文件全部上传到一个特定的目录,比如我是上传到 /root/zoulu/

这里,zoulukey.pem 和 zoulucert.csr 是自己在 VPS 生成的,剩下的都是证书签发机构颁发的。

一般情况下,直接用证书签发机构颁发的 crt 文件即可,比如 zou_lu.crt ,但是有很多证书签发机构默认在 Firefox 中文版下是不会信任的,经过仔细研究,终于发现,原来得把证书签发机构办法给你的 crt 文件也放入才行。

方法如下:

合并 PositiveSSLCA.crt (证书签发机构的 crt) 和 zou_lu.crt (自己域名的 crt)

cat? zou_lu.crt >> PositiveSSLCA.crt

mv PositiveSSLCA.crt? zou_lu.crt

或者直接用记事本打开,然后复制 PositiveSSLCA.crt 里面所有的内容到 zou_lu.crt 最下方即可。

(来源:http://www.lsproc.com/blog/nginx_ssl_config/)

③、修改 Nginx 配置

listen? 443;?
server_name zou.lu;?
index index.html index.htm index.php;?
root? /home/zoulu;?
error_page 404 403 http://zou.lu;

ssl on;?
ssl_certificate /root/zoulu/zou_lu.crt;?
ssl_certificate_key /root/zoulu/zoulukey.pem;

其他的配置信息和一般站点的一样,不再重复。

四、访问测试结果

在 Firefox 英文版 / Chrome / Opera / Safari / IE 6、7、8 下均没问题,?https:http://zou.lu/?在 Firefox 3.5.7 中文版下没问题,遇到问题的童鞋,检查你的系统时间,要是还不信任,那我也不是很清楚了,抱歉能力有限。

五、如何获得免费的证书

https:http://zou.lu/?的证书是 PositiveSSL 签发的,这是一家 Comodo 的 Reseller ,目前可以通过如下途径获得:

去?NameCheap.com?注册、转移一个域名或者购买一款空间就能获得,而且是免费一年的哦!

需要注意的是,NameCheap 注册后颁发的证书没有证书签发机构的 PositiveSSLCA.crt ,这里我就放一个,为了大家安装方便:

-----BEGIN CERTIFICATE-----?
MIIFAzCCA+ugAwIBAgIQTM1KmltFEyGMz5AviytRcTANBgkqhkiG9w0BAQUFADCB?
lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug?
Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho?
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt?
SGFyZHdhcmUwHhcNMDYwOTE4MDAwMDAwWhcNMjAwNTMwMTA0ODM4WjBxMQswCQYD?
VQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdT?
YWxmb3JkMRowGAYDVQQKExFDb21vZG8gQ0EgTGltaXRlZDEXMBUGA1UEAxMOUG9z?
aXRpdmVTU0wgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9T3lY?
IpPJKD5SEQAvwKkgitctVR4Q57h/4oYqpOxe6eSSWJZUDfMXukGeFZFV78LuACAY?
RYMm3yDMPbOhEzEKIVx5g3mrJBVcVvC0lZih2tIb6ha1y7ewwVP5pEba8C4kuGKe?
joteK1qWoOpQ6Yj7KCpNmpxIT4O2h65Pxci12f2+P9GnncYsEw3AAcezcPOPabuw?
PBDf6wkAhD9u7/zjLbTHXRHM9/Lx9uLjAH4SDt6NfQDKOj32cuh5JaYIFveriP9W?
XgkXwFqCBWI0KyhIMpfQhAysExjbnmbHqhSLEWlN8QnTul2piDdi2L8Dm53X5gV+?
wmpSqo0HgOqODvMdAgMBAAGjggFuMIIBajAfBgNVHSMEGDAWgBShcl8mGyiYQ5Vd?
BzfVhZadS9LDRTAdBgNVHQ4EFgQUuMoR6QYxedvDlMboGSq8uzUWMaQwDgYDVR0P?
AQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQEwewYDVR0fBHQwcjA4oDagNIYy?
aHR0cDovL2NybC5jb21vZG9jYS5jb20vVVROLVVTRVJGaXJzdC1IYXJkd2FyZS5j?
cmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9VVE4tVVNFUkZpcnN0LUhh?
cmR3YXJlLmNybDCBhgYIKwYBBQUHAQEEejB4MDsGCCsGAQUFBzAChi9odHRwOi8v?
Y3J0LmNvbW9kb2NhLmNvbS9VVE5BZGRUcnVzdFNlcnZlckNBLmNydDA5BggrBgEF?
BQcwAoYtaHR0cDovL2NydC5jb21vZG8ubmV0L1VUTkFkZFRydXN0U2VydmVyQ0Eu?
Y3J0MA0GCSqGSIb3DQEBBQUAA4IBAQAdtOf5GEhd7fpawx3jt++GFclsE0kWDTGM?
MVzn2odkjq8SFqRaLZIaOz4hZaoXw5V+QBz9FGkGGM2sMexq8RaeiSY9WyGN6Oj5?
qz2qPMuZ8oZfiFMVBRflqNKFp05Jfdbdx4/OiL9lBeAUtTF37r0qhujop2ot2mUZ?
jGfibfZKhWaDtjJNn0IjF9dFQWp2BNStuY9u3MI+6VHyntjzf/tQKvCL/W8NIjYu?
zg5G8t6P2jt9HpOs/PQyKw+rAR+lQI/jJJkfXbKqDLnioeeSDJBLU30fKO5WPa8Y?
Z0nf1R7CqJgrTEeDgUwuRMLvyGPui3tbMfYmYb95HLCpTqnJUHvi?
-----END CERTIFICATE-----

你也可以试试 Startssl 的证书,缺点是在旧电脑,没有更新的情况下,IE 6是绝对不信任他的,详见:http://blog.s135.com/startssl/

最后声明一点,受信任的 ssl 证书必须有独立IP,或者说,一个IP只能对应一个域名的证书,爱玩的朋友可以弄一个玩玩。

热点排行