Nginx + https + 免费SSL证书配置指南

生成证书php

$ cd /usr/local/nginx/conf
$ openssl genrsa -des3 -out server.key 1024
$ openssl req -new -key server.key -out server.csr
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

编辑 nginx.confhtml

server {
    server_name YOUR_DOMAINNAME_HERE;
    listen 443;
    ssl on;
    ssl_certificate /usr/local/nginx/conf/server.crt;
    ssl_certificate_key /usr/local/nginx/conf/server.key;
}

OK, 完成了。但这样证书是不被信任的,本身玩玩还行,要被信任请看下面。nginx

如下内容转载自
http://goo.gl/YOb5
http://goo.gl/Gftjweb

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,所以加密的详细内容 请看SSL。chrome

它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL代表它使用了HTTP,但HTTPS存在不一样 于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通信方法,如今它被广 泛用于万维网上安全敏感的通信,例如交易支付方面。ubuntu

一、自行颁发不受浏览器信任的SSL证书:
HTTPS的SSL证书能够自行颁发,Linux下的颁发步骤以下:windows

openssl genrsa -des3 -out api.bz.key 1024
openssl  req -new -key api.bz.key -out api.bz.csr
openssl rsa -in api.bz.key  -out api.bz_nopass.key

Nginx + https + 免费SSL证书配置指南 7f13bbb85e123811 thumb

nginx.conf 的SSL证书配置,使用 api.bz_nopass.key,在启动Nginx是无需输入SSL证书密码,而使用 api.bz.key 则须要输入密码:api

server {
server_name sms.api.bz;
listen  443;
index index.html index.htm index.php;
root  /data0/htdocs/api.bz;
ssl on;
ssl_certificate api.bz.crt;
ssl_certificate_key api.bz_nopass.key;
......
}

自行颁发的SSL证书虽然可以实现加密传输功能,但得不到浏览器的信任,会出现如下提示:
Nginx + https + 免费SSL证书配置指南 6c3f2b38523ed259浏览器

二、受浏览器信任的StartSSL免费SSL证书:
跟VeriSign同样,StartSSL(网址:http://www.startssl.com,公司名:StartCom)也是一家CA机构,它的根证书很 久以前就被一些具备开源背景的浏览器支持(Firefox浏览器、谷歌Chrome浏览器、苹果Safari浏览器等)。安全

在今年9月 份,StartSSL居然搞定了微软:微软在升级补丁中,更新了经过Windows根证书认证程序(Windows Root Certificate Program)的厂商清单,并首次将StartCom公司列入了该认证清单,这是微软首次将提供免费数字验证技术的厂商加入根证书认证列表中。如今,在 Windows 7或安装了升级补丁的Windows Vista或Windows XP操做系统中,系统会彻底信任由StartCom这类免费数字认证机构认证的数字证书,从而使StartSSL也获得了IE浏览器的支持。

注册成为StartSSL(http://www.startssl.com) 用户,并经过邮件验证后,就能够申请免费的可信任的SSL证书了。步骤比较复杂,就不详细介绍了,申请向导的主要步骤以下:
Nginx + https + 免费SSL证书配置指南 b56b050d03ca03b8 thumb

Nginx + https + 免费SSL证书配置指南 d4477635bf39c593 thumb

Nginx + https + 免费SSL证书配置指南 f4b4b38f6c656990 thumb

startssl在9月微软补丁更新中被支持,使得startssl证书获得认可。

申请流程以下 startssl.com

个人环境是windows 7

请不要使用chrome和IE8,不然将没法生成KEY而没法申请成功。建议使用firefox。

此外我还赶上了点意外,我使用的移动的网络被误判为澳大利亚的IP并收到邮件要求解释。

我将APNIC的查询地址和查询结果发送给对方后账户才申请成功。

control panel / sign-up 注意填写正确资料。收到邮件后复制验证码。而后能够生成一个证书,注意,startssl.com不是以用户名、密码来验证用户的,是用证书来验证用户 的。

因此生成证书后(火狐会导入证书),注意备份证书。丢失证书后只能从新注册。

登陆后还要验证域名才能为该域名生成SSL证书,能够选择在whois里的邮箱、hostmaster@domain、 postmaster@domain或者webmaster@domain

而后就能够在Certificates wizard里就能够申请SSL证书了。

有效期一年。

======2009/11/26 update===========

Toolbox

把你申请时的private key拿去Decrypt private key,而后把生成的key保存起来。

而后在Retieve certificate里选择你申请的域名,就能够获得cer文件,保存起来,放到nginx的conf目录。

在nginx里这样配置

server {
server_name security.meettea.com;
listen  443;
index index.html index.htm index.php;
root  /data0/htdocs/security.meettea.com;
ssl on;
ssl_certificate security.cer;
ssl_certificate_key security.key;
}

nginx -s reload下若是没有任何提示,就说明配置成功了。

惋惜firefox3.5测试,不信任class 1的证书。

==============2009/11/26 update===================

在startssl forum看到官方人员说firefox3.5不支持是由于没有配置好。通过配置解决了firefox 3.5不信任该证书的问题,ubuntu studio下测试经过。

步骤是:获取https://www.startssl.com/certs/ca.pem

获取https://www.startssl.com/certs/sub.class1.server.ca.pem

cat ca.pem sub.class1.server.ca.pem >> ca-certs.crt

cat ca-certs.crt >> security.cer

这是由于须要把startssl的根证书和sub class1的证书附上,由于是他们把证书颁发给你,firefox须要这张证书才认识你的证书。 :)

此外opera测试没经过,这点,连startssl.com本身都没有被opera经过。

相关文章
相关标签/搜索