Nginx上配置Startssl 免费SSL

十一没出门,在家没事干,于是想着干脆给自己的VPS配个SSL吧。 之前咱也用过SiteGround的SSL,不过当时人家是直接在cPanel直接给我装好了,搞得我白申请了。

先说说这个StartSSL吧,跟VeriSign一样,StartSSL(StartCom公司)也是一家CA机构,它的根证书很久之前就被一些具有开源背景的浏览器支持。现在也支持微软了。嗯,据说现在唯一不支持的就是Opera浏览器。不过Opera浏览器我就读大学的时候见一个爱折腾的同学玩过,其他很少见别人用这个。我只是在Android手机上装了这个公司的代理上网版本的APK。 首先要去这个网站注册,这个公司注册不是用用户名密码登陆的,而是用证书验证的。他的注册也很简单,输入你的注册信息,然后验证邮箱,再安装证书,你重装了系统要导入证书才能再次登录,否则也只有重新注册了。不过这个证书的期限也是一年,申请好的SSL证书也是一年。因为我是去年三四月份注册过,但是现在已经没用了。 首先请使用火狐(Foxfire)浏览器申请,因为我不确定Chrome、IE是否能够成功。(像有些网站比如000host等就需要用火狐)。 打开网站以后找到Sign-up按钮,果断按下去,然后出来输入你的个人资料的表单,进行提交。我这里把所有的注册过程很详细的每一布截图了。

所有的资料都最好使用正确的。因为注册SSL是一件很严肃的事情。还有就是如果你的IP地址是在大陆,你输入香港也是会被拒绝的。而且你的地址也是也是要详细的。我注册资料习惯了自动表单,结果地址不详细就被拒了。 按照表单写完以后点击Continue按钮。然后你填写的邮箱会收到一个验证码。 把验证码输入到你的浏览器Code的框里,然后继续。

我前面说了我的地址写的不详细,结果收到邮件通知我被拒了。

没办法,只能返回去重新注册,写的很详细。然后再受到验证邮箱的验证码,再输入到浏览器中。然后等待验证,他说了6个小时,其实一般一两分钟就会出结果。

这次通过了,收到了我通过验证的邮件,然后给了我一个URL,输入到浏览器中进行下一步安装证书。如果弹出的窗口依然还让你输入Code,那则输入邮件下面链接的Code。

点击Continue,接下来你的浏览器开始安装私钥,相当于建立用户名密码。

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

证书安装完毕以后会祝贺你一下,呵呵。点击完成(我的截图够详细吧?)。

然后他又会给你发邮件说你安装好啦,可以使用了,瞧,多么贴心。

接下来就是要在你的VPS中设置了。因为一般LNMP包里面都直接装了SSL支持,所以我们直接运行就可以了。输入

openssl req -new -newkey rsa:2048 -nodes -out nicky1605.csr -keyout nicky1605.key??? #nicky1605换成自己名字,使用RSA 256位加密

然后安装提示输入就可以了。要跟你申请StartSSL的地址一样。

其中上面的截图最后一项我没要截上去,也是直接回车就可以了。 然后会在你运行的目录下生成你命令中要求的.key和.csr文件,例如从上面截图看到我是在root目录下运行的,所以就会在这个目录下生存nicky1605.csr 和 nicky1605.key文件,其中运行一下

cat nicky1605.csr

屏幕上会显示很长的一串字符串,先复制下来我们一会要用。 这时候你的StartSSL网站应该都完全注册好了,下面我先要验证我们的域名。 在控制面板中Validations Wizard的选项卡中选择Domain Name Validation(这一步我没截图),然后输入你的域名。(这个验证期30内有效)

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

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

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

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

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

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

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

最后差一步就成功了!果断的点击继续。

提示成功,返回一个让你等待的网页。等邮件好了。

趁这个时候大家可以从火狐浏览器导出证书备份。打开设置的安全选项卡。切到证书管理器上去。然后选择备份。

等了大概不到10分钟吧,Start就发给我邮件说证书好了(验证域名的邮箱)。

打开StartSSL控制面板,选择导出证书。看到了么,这里我们是Class 1的免费用户,时间就1年。

这次抠门的不给发邮件把证书发给我们了。让你直接拷贝出来。保存成.crt格式。

到这一步StartSSL的工作就结束了,现在回到你的VPS中。把证书全部放到一个目录里面。我是放到了Nginx的目录,编辑Nginx配置文件(LNMP的Nginx目录是在/usr/local/nginx,配置在这个文件夹的./conf文件夹下的nginx.conf文件,在Server中添加以下几行就可以了:

listen       443;
 ssl    on;
 ssl_certificate    /usr/local/nginx/conf/Startssl.crt;   #你从StartSSL下载证书放的路径
 ssl_certificate_key     /usr/local/nginx/conf/nicky1605.key;  #openssl生成key路径
 ssl_session_timeout 5m;

然后重启Nginx就可以了。

/usr/local/nginx/sbin/nginx -s reload

这时候你去访问的话就可以用HTTPS访问了,但是如果你有一些高危内容HTTP链接就会打个红叉,如果你的图片有HTTP链接就会有红色感叹号。 把这个都修改成功了以后Chrome就会是绿色的链接符号了。关于这个这篇文章介绍的比较详细。

不过Foxfire这个家伙不安分,非要按正神马证书发行链接。

需要在你StartSSL的证书中合并StartSSL根证书。

wget   #免费用户可以不添加这行 
wget   #这个是给免费Class1用户准备的
cat ca.pem sub.class1.server.ca.pem >> Startssl.crt

然后再重启Nginx就可以了。如果嫌cat麻烦可以直接把pem文件的内容复制到Startssl.crt证书下方。


最后可以看下证书的信息,估计是为了各个时区访问考虑,他有效期提前了一天。

    1. Nicky说道:
      Google Chrome Windows 7

      现在可以了?这两天我有点忙都没怎么看博客

  1. zhouitpro说道:

    我按照这个文章配置了一下,但是用手机访问仍然是证书无效. 电脑版的Chrome可以

    1. Nicky说道:
      Google Chrome Windows 7

      你绑定了根证书了吗?这个是免费SSL,可能有些浏览器不支持

  2. 米饭说道:
    Google Chrome Windows XP

    人家不让商用,郁闷

    1. Nicky说道:
      Google Chrome Windows 7

      买一个就是了,一年10美金也不贵啊

  3. 超級efly说道:
    Google Chrome Mac OS X 10.8.5

    請問出現
    Domain Exists

    A certificate with domain http://www.arefly.com already exists at Class 1 level.
    Please try it again and choose a different (sub) domain, upgrade your validation status to a higher level or request revocation of the existing certificate at the Tool Box.
    怎麼辦?我輸入的二級域名是www

    1. Nicky说道:
      Google Chrome Windows 7

      这个域名是存在的,我不知道你是从哪买的域名啊

  4. 超級efly说道:
    Safari iPad iOS 6.1.3

    支持一下,似乎很麻煩。。。

    1. Nicky说道:
      Google Chrome Windows 7

      不麻烦啊,哪里麻烦来着,如果你自己购买证书只要在Nginx的配置文件中加载几行信息重启就可以了啊

  5. 钛数据说道:
    Google Chrome Windows 7

    嗯嗯呃呃呃呃呃呃呃,学习了啊,呃呃呃呃嗯嗯呃呃

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据