Contents

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议,HTTPS应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)
建个网站不容易,各种都要收费,那么有免费的当然就更好了!免费的SSL证书:StartSSL来了!
1.进入StartSSL官网,点击左上角Sign-up For Free(这个很容易找,就不截图了^_^)。按要求填写注册信息,First, Last Name这一栏填写自己的中文名字的拼音,地址精确到房间号或者街道号(要不然客服发来邮件会索要地址的)。
2.注册成功后,StartSSL会发送一个链接给你,还有验证码。因为StartSSL使用证书验证的,所以,要把验证证书好好保管好,丢了就没法登陆了。
3.进入Control Panel之后,点击Validations Wizard,域名验证Domain Name Validation,填入你需要添加SSL的域名,还有你的个人邮箱(会给你发封邮件,里面有验证码,注意接收)。
4.验证完域名后,点击Certificates WizardWeb Server SSL/TLS Certificate

生成私钥(Generate Private Key)
如果你已经在VPS上生成了私钥,这一步可以跳过,没有的话,可以在这里生成,填入私钥的密码,将文本框中的内容复制,保存为ssl.key
生成证书
选择你需要绑定的二级域名,比如www.tinyxd.me,Tool BoxRetrieve Certificate,同样将文本框中的内容复制另存为ssl.crt
登录VPS,生成服务器密钥/证书
生成server.key
openssl rsa -in ssl.key -out server.key
生成server.crt

1
2
3
4
5
cp ssl.crt server.crt
wget http://cert.startssl.com/certs/ca.pem
wget http://cert.startssl.com/certs/sub.class1.server.ca.pem
cat ca.pem sub.class1.server.ca.pem >> ca-certs.crt
cat ca-certs.crt >> server.crt

修改nginx配置文件
server.keyserver.crt放到/usr/local/nginx/certs/目录下,修改/usr/local/nginx/conf/vhost/对应域名虚拟机的配置文件,添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;
server_name www.域名.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443;
server_name www.域名.com;
root /home/www;
ssl on;
ssl_certificate /usr/local/nginx/certs/server.crt;
ssl_certificate_key /usr/local/nginx/certs/server.key;
}

上面脚本的rewrite ^(.*) https://$server_name$1 permanent;如果不填加的话,你的网站将可以进行http和https的两种访问。
最后重启Nginx,/usr/local/nginx restart 。访问你的网站,看是不是支持https访问了!
本文参考:http://ichon.me/2012/5/29/nginx-ssl.htmlhttp://baike.baidu.com/view/16147.htm

Contents