nginx服务器配置StartSSL证书

jopen 9年前

概述

ssl基础

服务器操作系统:aliyun ubuntu 12.04

WEB服务器:nginx 1.4.x

免费ssl认证服务:startssl.

SSL/TLS协议运行机制的概述

百度百科解释:

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

详情参见阮一峰老师的网络日志

SSL/TLS协议运行机制的概述

StartSSL 介绍

StartSSL是StartCom公司旗下的SSL证书,貌似是现在唯一一家提供免费SSL证书服务并且被主流浏览器支持的免费SSL,包括Chrome、Firefox、IE等浏览器都可以正常识别StartSSL,任何个人都可以从StartSSL中申请到免费一年的SSL证书。StartSSL申请虽然要审核,但是一般十几分钟就会回复邮件了。而且经过部落的几次申请测试发现,StartSSL申请审核并不严格,如果遇到问题,你只要回复一封邮件过去回答邮件当中所提的问题,通过率几乎是100%。

使用StartSSL前必须先在自己的电脑上安装StartSSL证书,这个证书就是你用来登录和管理StartSSL申请到的SSL唯一凭证,没有了这个凭证就无法对已经申请的SSL进行管理和续期了,只能重新申请一个了,所以需要特别保存好。

申请免费StartSSL登录证书过程

  1. 打开网站以后找到Sign-up按钮,果断按下去,然后出来输入你的个人资料的表单,进行提交。

  2. 所有的资料都最好使用正确的。因为注册SSL是一件很严肃的事情。还有就是如果你的IP地址是在大陆,你输入香港也是会被拒绝的。而且你的地址也是也是要详细的。 按照表单写完以后点击Continue按钮。然后你填写的邮箱会收到一个验证码。

  3. 把验证码输入到你的浏览器Code的框里,然后继续。

  4. 然后再受到验证邮箱的验证码,再输入到浏览器中。然后等待验证,他说了6个小时,其实一般一两分钟就会出结果。

  5. 通过验证的邮件的URL,输入到浏览器中进行下一步安装证书。如果弹出的窗口依然还让你输入Code,那则输入邮件下面链接的Code。 点击Continue,接下来你的浏览器开始安装私钥,相当于建立用户名密码。

  6. 然后密钥安装成功以后提示你开始安装证书。

  7. 证书安装完毕以后会祝贺你。点击完成。

  8. 然后会给你发邮件说你安装好啦,可以使用了。

服务器生成证书

服务器需要openssl 支持,并安装了nginx.

root@iZ238l3t:~# cd /etc/nginx/  root@iZ238l3t:~# mkdir ssl  root@iZ238l3t:~# cd ssl  root@iZ238l3t:~# openssl genrsa -out server.key 2048  root@iZ238l3t:~# openssl req -new -key server.key -out server.csr

查看/etc/nginx/ssl 目录下将会生成两个文件(server.key和 server.csr

安装提示输入按在startssl中填写的一样就可以了。

先复制server.csr文件夹中的内容,会在接下来过程中需要。

Startssl 申请免费一年证书

验证域名

在控制面板中Validations Wizard的选项卡中选择Domain Name Validation,然后输入你的域名。(这个验证期30内有效)

接下来他会提示让你选择以下几个邮箱中的任意一个来发送验证码,其中我选择的邮箱是他根据Whois查到的管理邮箱。如果你不想使用管理员邮箱你可以建立一个他提示的邮箱。

然后把收到的验证码再输入到Code框中,域名验证完成。

申请免费一年域名证书

接下来申请域名SSL证书。点击Certificates Wizard ,选择下拉菜单中的Web Server

然后进入下一步他会问你验证方式神马的,我们都已经在VPS上设置过了,所以这里直接跳过。

然后在下面的网页中输入刚才server.csr中拷贝出来的一串字符。

然后提示你证书信息收集好了,点击继续。

系统提示你必须要选择一个二级域名来进行,大家如果申请根域名就输入www好了。

提示成功,返回一个让你等待的网页。接下来就是等待官方进行审核验证,验证后会发送成功或失败的邮件到你的填写的邮箱中。

导出证书

打开StartSSL控制面板,选择导出证书。

将代码拷贝出来。保存成.crt格式。

nginx配置ssl访问

# HTTPS server  #  server {      listen       443 ssl;      server_name  pass.test.com;      ssl_certificate      /etc/nginx/ssl/nginx.crt;      ssl_certificate_key  /etc/nginx/ssl/server.key;        ssl_session_cache shared:SSL:10m;      ssl_session_timeout  5m;        ssl_ciphers  "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !EXPORT !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";      ssl_prefer_server_ciphers   on;                ssl_protocols TLSv1 TLSv1.1 TLSv1.2;        location / {          root   /mnt/web/ssl;          index  index.html index.htm;      }  }

重启nginx

service nginx restart

访问

访问域名显示工作正常。