十一没出门,在家没事干,于是想着干脆给自己的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支持,所以我们直接运行就可以了。输入
1
|
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中添加以下几行就可以了:
1
2
3
4
5
|
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就可以了。
1
|
/usr/local/nginx/sbin/nginx -s reload |
这时候你去访问的话就可以用HTTPS访问了,但是如果你有一些高危内容HTTP链接就会打个红叉,如果你的图片有HTTP链接就会有红色感叹号。 把这个都修改成功了以后Chrome就会是绿色的链接符号了。关于这个这篇文章介绍的比较详细。 不过Foxfire这个家伙不安分,非要按正神马证书发行链接。
需要在你StartSSL的证书中合并StartSSL根证书。
1
2
|
wget http: //cert .startssl.com /certs/ca .pem #免费用户可以不添加这行 wget http: //cert .startssl.com /certs/sub .class1.server.ca.pem #这个是给免费Class1用户准备的 |
cat ca.pem sub.class1.server.ca.pem >> Startssl.crt
然后再重启Nginx就可以了。如果嫌cat麻烦可以直接把pem文件的内容复制到Startssl.crt证书下方。
最后可以看下证书的信息,估计是为了各个时区访问考虑,他有效期提前了一天。