09月18, 2016

在nginx服务器下配置和安装阿里云购买的SSL证书

实现是简单的,动手是可怕的

当我习惯了letsencrypt一个命令无需配置就可以实现一切的时候,终于需求满足不了我了。由于博客的改版,服务由Apache切换到了Nginx,再次安装letsencrypt的时候总是提示已经安装过,没有办法去区分服务器类型,纠结了很长时间,查阅了很多文档都找不到方法。习惯于自动化运维的我现在只能去默默学习手动安装。也许letsencrypt提供了更简单的命令去自动安装,只是我暂时没有找到,但是,我还是硬着头皮去手动体验了一次,而且花了很短的时间,借助阿里云提供的申请证书的平台,至少省去了填一堆表单的时间。详细记录一下这个过程。

环境描述:

  • 阿里云ECS
  • CentOS 7

    购买证书

  • 进入阿里云控制台,在左侧导航栏上点击CA证书服务,进入证书申请和购买页面。

alt

  1. 点击右上角,购买证书按钮,进入证书的选择页面,选择你想要的配置,个人网站的话建议免费版的可以配置多个域名,例如:beacelee.com,demo.beacelee.com

alt

  1. 支付成功后返回证书控制台

alt

  1. 在证书控制台下可以看到你购买的证书列表。

alt

  1. 点击信息补全按钮绑定你的域名,根据提示,进行下一步的操作部分截图如下。

alt

alt

  1. 信息补全后会发送一封邮件到你的邮箱里,点击邮箱中的链接,填写提示相关信息。在此操作中会有第二封邮件发送,此为验证码。

alt

  1. 上一步邮件中的链接也可以查看证书的状态,例如证书颁发成功之后,出现如下提示。

alt

同样在阿里云的证书控制台页面,也会出现如下提示。 alt

购买成功后到此结束,可以将证书下载下来,以便服务器配置。下载下来是两个文件,扩展名分别为.pme.key。接下来是服务器的配置。

Nginx服务器配置

各个版本的操作系统默认nginx的配置文件目录不同,在Centos7下nginx的默认配置目录为:

/etc/nginx/conf.d

需要配置以下内容

  • 证书文件
  • HTTPS跳转

  • 证书文件比较容易,在你容易记住的目录下新建文件夹,将刚才下载的证书文件传到服务器上。

alt

在这里,我将两个证书文件依次放在了/etc/nginx/ssl/cert目录下。

并且将证书文件的目录写在你的nginx.conf中。 alt

值得注意的是,目录千万不要写错。

默认配置需要删除,或者保留的话注释要添加完整。

这时候可以重启服务器试下效果:

systemctl restart nginx.service

如果重启服务器失败,可以通过命令:

systemctl status nginx.service -l

来检查错误来源。下图是证书路径没有添加对,重启服务器报出的错误:

alt

  • HTTPS跳转比较容易,只需如下配置即可,通过正则匹配来重写url的。

alt

激动人心的时刻到了

再次重启服务器,在Chrome浏览器下地址栏可以明显看到,url已经变成了你想要的小绿锁

alt

通过点击小绿锁查看证书信息,可以看到已经有了刚刚安装的证书详细信息。 alt

有时候会出现https可以访问,但是浏览器是灰的的模样,不要着急,那是因为你的部分静态资源还是http开头的,所以需要将一些绝对路径的url替换成相对路径的url,就可以愉快的玩耍了。

值得注意的是,在阿里云,当同一个域名,申请了两个证书之后,并不会发生冲突,因为你的证书文件不同,日期也不同。不会因为你申请过而申请失败。

有意思的是,你可以用将其他类型或者品牌的证书装在不同的服务器,甚至配置在不同的端口下。彼此之间互不影响,和谐工作。

本文链接:https://beacelee.com/post/aliyun-ecs-nginx-ssl-certificate-config.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。