let's encrypt是啥我想不需要多说了.

QQ截图20170408221329.png

oneinstack是LINUX下使用非常多的LAMP一键安装工具,我也用过,总体来说非常好用。

虽然一键安装工具有人觉得不如自己配起来装X,觉得low,但是方便快捷是王道,并且linux的特性即使后期自己改相关的配置也是杠杠的没毛病。

oneinstack在2016-6-*的版本就已经支持自动化部署SSL了,当然直接用的Let's Encrypt.

最近帮别人进行服务器的配置的时候,涉及到了SSL证书,首先大多数免费一年(腾讯云和七牛云都有一年的免费证书可以使用)的SSL证书最大的缺点是都只能绑定主域名,不能绑定子域名。

而Let's Encrypt则能做到多域名的绑定,原理也很简单:支持同一个服务的域名绑定在一起,而不支持同一个服务的域名则再次申请一个证书就OK了。

方便之处非常666,本篇文章是基于服务器级别的,而不是主机控制面板去操作,如果是主机控制面板的虚机,可以参考我之前写的文章:

证书是在 https://www.sslforfree.com/ 申请的,也是Let's Encrypt的,很方便的地方就是不需要自己进行Let's Encrypt的操作,直接在上面输入域名验证所有权后,就可以申请,就直接能够使用,非常方便虚机的用户

一、目的

使用 oneinstack 实现自动部署Let's Encrypt的SSL证书。

1. 前提

  • 最新版本的OneInStack
  • 系统已经安装了crontab

    • 这个不是必须,只是方便后面的自动更新
    • let's encrypt 3个月就必须进行续约,oneinstack安装之后,会自动添加crontab,每个月续约一次
  • 要添加的是新站,如果是旧站,则必须对站点进行重新的绑定和迁移。

    • oneinstack要求自动部署SSL必须是重新添加的vhost,否则无法自动部署SSL.
    • 如果想要对以前的站点进行绑定,建议进行一次站点迁移,如果工作量不大的话。

二、操作

截图就不上了,步骤如下:

(下面的操作都是在oneinstack的文件夹中完成的)

1.安装letsencrypt扩展

$ ./addons.sh

# 之后选择 7
# 在选择 1

2. 添加新站点

需要SSL证书的域名保证已经正确解析到ip地址

$ ./vhost.sh

注意事项:

  1. 第一个选项 nginx SSL 必须选择 y
  2. 后面的http自动跳转到https选择 y
  3. 是否添加lets encrypt 选择 y

3. 啰嗦

旧的站点可以进行站点迁移,域名重新解析,相当于添加一个新的vhost

三、失败处理

如果因为一些原因而导致无法部署SSL(我就遇到过),进行如下操作:

  • 将已经添加好的vhost的root文件夹删除
  • /usr/local/apache/conf/vhost/对应的配置文件.conf 删除
  • /usr/local/nginx/conf/vhost/对应的配置文件.con 删除
  • 重启nginx和apache
  • 重新添加vhost,重复上面操作即可。

四、其他参考

1. 如果想看图片的参照,可以看看老左的下面这篇文章:

2. 如果没有添加crontab,手动添加下面的即可:

30 2 * * 1 /usr/local/python/bin/certbot renew --renew-hook "/etc/init.d/nginx  -s reload;/etc/init.d/httpd graceful"

值得说明的是,自动添加的crontab是 nginx reload,建议改成 nginx -s reload