Nginx上配置Startssl 免费SSL

Nicky 89.3K 11
摘要:

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

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

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

Nginx上配置Startssl 免费SSL

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

我前面说了我的地址写的不详细,结果收到邮件通知我被拒了。 Nginx上配置Startssl 免费SSL

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

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

点击Continue,接下来你的浏览器开始安装私钥,相当于建立用户名密码。 Nginx上配置Startssl 免费SSL

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

Nginx上配置Startssl 免费SSL

证书安装完毕以后会祝贺你一下,呵呵。点击完成(我的截图够详细吧?)。 Nginx上配置Startssl 免费SSL

然后他又会给你发邮件说你安装好啦,可以使用了,瞧,多么贴心。 Nginx上配置Startssl 免费SSL

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

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

然后安装提示输入就可以了。要跟你申请StartSSL的地址一样。 Nginx上配置Startssl 免费SSL

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

cat nicky1605.csr

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

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

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

Nginx上配置Startssl 免费SSL

接下来申请域名SSL证书。点击Certificates Wizard ,选择下拉菜单中的Web Server Nginx上配置Startssl 免费SSL

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

然后在下面的网页中输入刚才nicky1605.csr中拷贝出来的一串字符。 Nginx上配置Startssl 免费SSL

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

Nginx上配置Startssl 免费SSL

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

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

Nginx上配置Startssl 免费SSL

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

Nginx上配置Startssl 免费SSL

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

等了大概不到10分钟吧,Start就发给我邮件说证书好了(验证域名的邮箱)。 Nginx上配置Startssl 免费SSL

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

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

Nginx上配置Startssl 免费SSL

到这一步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就会是绿色的链接符号了。关于这个这篇文章介绍的比较详细。

Nginx上配置Startssl 免费SSL

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

Nginx上配置Startssl 免费SSL

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

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

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


Nginx上配置Startssl 免费SSL

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

Nginx上配置Startssl 免费SSL

发表评论 取消回复
表情 图片 链接 代码

  1. Dennis C.K Deng
    Dennis C.K Deng Lv 1

    你好,小弟照着这篇博文 <a href="//blog.ghostflying.com/nginx-wordpress-e8bf81e7a7bbe588b0ssle5b08fe8aeb0/”" title="Nginx + WordPress 迁移到SSL小记" rel="nofollow"> 和你的这篇文章配置后,包括验证到合并证书。
    为什么用https访问后,网址栏确实是ssl验证通过,显示绿色标记。但却出现403错误了。
    主要配置文件如下:
    server
    {
    listen 80;
    index index.html index.htm index.php;
    root /home/wwwroot;
    listen 443;
    ssl on;
    ssl_certificate /usr/local/nginx/ssl-unified.crt;
    ssl_certificate_key /usr/local/nginx/ssl.key;
    ssl_session_timeout 5m;
    }
    server {
    listen 80;
    server_name mydomain;
    return 301 https://mydomain$request_uri;
    }
    是配置问题还是那篇博文哪边有疏漏呢?

  2. zhouitpro
    zhouitpro Lv 1

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

    • Nicky
      Nicky 站长

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

  3. 米饭
    米饭 Lv 1

    人家不让商用,郁闷

    • Nicky
      Nicky 站长

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

  4. 超級efly
    超級efly Lv 1

    請問出現
    Domain Exists

    A certificate with domain 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

    • Nicky
      Nicky 站长

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

  5. 超級efly
    超級efly Lv 1

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

    • Nicky
      Nicky 站长

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

  6. 钛数据
    钛数据 Lv 1

    嗯嗯呃呃呃呃呃呃呃,学习了啊,呃呃呃呃嗯嗯呃呃
    <a href="http://www.baidu.com" title="百度一下,你就知道" rel="nofollow">

分享