快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第1张

 

前言:

letsencrypt,是一个不错的集成反向代理,以及自动签发SSL 通配的工具,此次教程的内容有点多,希望大家能消化的进去。

教程:

在使用之前我们先简单了解一下letsencrypt,这个工具的基本要求。

  • 此工具支持验证的方式只有三种、TLS-SNI/HTTP/DNS
  • 在国内以上三种方式,我们只能使用DNS
  • 支持的DNS 服务商有很多,现在容器内支持的配置文件中,aliyun是一个不错的选择

此次教程的东西:

自备域名一个 aliyun账号一个
  • 域名处理

这里有两种情况,第一种是你已经永久在阿里云的域名,你可以跳过域名处理这个部分,如果没有,我们需要把在其他服务商购买的域名,使用阿里云的DNS 服务器解析服务(希望这么做阿里不会打死我)

  • 演示:

这里我就是属于第二种,这里我只演示腾讯云(DNSPOD)购买的域名,其他服务商购买的域名也是一样的,都可以修改自己想用的DNS服务商来解析自己的域名。

登录阿里云,控制台-云解析DNS:

快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第2张

输入域名后,他会提示你配置DNS

快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第3张

阿里云的DNS 服务器地址为:

ns1.alidns.comns2.alidns.com

我们登录到腾讯云,控制面板-域名注册:

快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第4张

快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第5张

注意:

常规来说修改解析服务器全球生效需要72小时!但是本人亲测,30分钟左右 国内就可以更换完成,就可以使用阿里云进行解析了。

获取阿里的KEY:

快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第6张

快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第7张

记录到KEY两个数值之后,保存下来我们后期会用得到。

  • 配置letsencrypt的docker模板:

我们在unRAID的APPS内搜索letsencrypt,点击下载配置模板!

快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第8张

按照上面的图片配置完成后,APPLY 开始下载镜像配置容器。

等待容器启动完成后,我们停止容器,对DNS-Plugin 进行配置。

默认的路径:/mnt/user/appdata/letsencrypt/dns-conf

我们可以用SSH命令修改,或者是可到云,方法大家自己寻找,我这里使用可到云进行演示:

快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第9张

把我们获取到的阿里云的KEY 粘贴到对应的位置:

快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第10张

粘贴好以后、保存我们回到unRAID的主页面,对docker进行启动。

启动后,我们查看docker的日志:

快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第11张

快速签发证书、自动续签、反向代理、通配SSL的工具 letsencrypt Docker 第12张

获取到的证书存放位置:

ssl_certificate /config/keys/letsencrypt/fullchain.pem;
ssl_certificate_key /config/keys/letsencrypt/privkey.pem;
注意这里是容器内的路径,对应的外部路径为:/mnt/user/appdata/letsencrypt/keys/letsencrypt/

到此证书获取,就已经完成!我们可以把这个路径映射到其他容器的内部,做到其他容器同时更新KEY,或者单独拷贝来手动移动都可以。

注意:第一次有一定几率日志中会出现错误,这里我们不要慌张,是因为解析的信息,DNS服务器还未生效,我们在一次启动失败之后等一小会,重启一下容器即可,如果还是出现错误,仔细分析日志,注意阿里云的KEY书写,还有KEY的正确性。

  • 反向代理:

这里还是要感谢lsio的大神们,在容器里面内置了大量的反向代理配置文件,如果你需要反向代理的服务端,在配置文件下面有,你就不需要去自己去配置反向代理的繁琐参数,简单配置一下目标服务器即可直接使用。

这里我用前两天刚搭建的Rocker.chat进行演示,这个服务端,容器内没有内置配置文件所以我这里提供一个。在针对内容进行修改。

 server {
     listen 443 ssl;

      server_name rocketchat.*; #访问的url 示例:server_name rocketchat.xxx.com;
                                               server_name www.xxx.com/rocketchat;


     include /config/nginx/ssl.conf;
     client_max_body_size 0;

     location / {
         resolver 127.0.0.11 valid=30s;
         set $upstream_app Rocket.Chat; #被代理服务的ip或者url 示例:set $upstream_app 192.168.1.2;
         set $upstream_port 3000; #被代理的服务器访问端口
         set $upstream_proto http; #被代理服务器的访问协议(一般是默认的)
         proxy_pass $upstream_proto://$upstream_app:$upstream_port;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection "upgrade";
         proxy_set_header Host $http_host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-Proto http;
         proxy_set_header X-Nginx-Proxy true;
         proxy_redirect off;
     }
 }

 server {
     listen 80;

     server_name rocket.*;

     return 301 https://$host$request_uri;
 }

在/mnt/user/appdata/letsencrypt/nginx/proxy-confs 创建一个rocketchat.subdomain.conf的文件 把上面的内容粘贴进去。

之后返回到unRAID的面板,对letsencrypt容器进行重启。

重启之后使用https://domain.com:prot 进行访问 (domian.com是一个示例请勿照抄)

在proxy-confs路径下有很多预制好的配置文件,我们针配置文件进行修改之后,我们需要修改掉他的后缀把sample删掉,以.conf结尾,然后重启容器,才可以生效!

注意:在写入配置文件的时候注意配置文件的缩进,在实际使用中最好删除我写的配置备注,一面出现启动错误的情况!!!

小科普:

反向代理,可以端口复用,所有url可以使用一个端口进行访问,可以使用不同的二级域名进行拆分需要访问的服务器,比如:

dns.domain.com , ros.domain.com 等等。。。。。 还可以使用 www.domain.com/dns , www.domain.com/ros 来进行访问不同的服务端,这里我演示的方式 是使用了默认的端口,在实际应用中我们访问还需要在后面增加上通讯端口才可以,也可以在反向代理服务器加上验证的密码。来保护一些 web服务器没有密码验证的问题。

结尾:

希望这个教程在大家使用反向代理的时候能帮到大家,内置的大部分我们常用的反向代理配置文件,按照我上面的示例配置文件进行更改即可,或者自己写一个根据自己需求的也是可以的。

最后祝大家玩的愉快,如有什么问题,可以在下面留言或者来qq群里面聊。

参与评论