部署caddy并自动获取/更新Let's Encrypt证书
金蝶云社区-云社区用户9oi51234
云社区用户9oi51234
6人赞赏了该文章 1.1万次浏览 未经作者许可,禁止转载编辑于2018年07月11日 14:37:21

caddy是Go语言写的轻量级Web服务器,内置自动获取和更新Let's Encrypt SSL证书的功能。如果您采用别的Linux/Unix环境下的Web服务器(nginx、apache)也想自动获取Let's Encrypt证书,建议用acme脚本(https://github.com/Neilpang/acme.sh)。


文档适用于云环境下的CentOS 7.x / Ubuntu 16.x / Debian 9.x


文档基于root身份操作,非root用户需要sudo


0)更新系统到最新

   (CentOS)

        yum update -y

    或(Ubuntu)

        apt-get update

        apt-get full-upgrade -y

    重启系统


1)dns将要用的域名解析到此虚拟机弹性IP(或ELB CNAME)


2)下载、安装caddy

        wget https://getcaddy.com -O getcaddy

        chmod +x getcaddy

        ./getcaddy personal

    看看caddy安装在什么路径

        which caddy

    (一般在 /usr/local/bin/caddy)

    

2-A)(可选),如果要同时安装插件,则:

    浏览可选的插件

        https://caddyserver.com/download

    运行下列格式以安装caddy加插件(比方安装http.ipfilter和http.ratelimit)

        ./getcaddy personal http.ipfilter,http.ratelimit


3)建立caddy的启动用户

    (CentOS)

        adduser -r -d /var/www -s /sbin/nologin caddy

    或(Ubuntu/Debian)

        adduser --system --group --disabled-login --home /var/www --shell /sbin/nologin caddy

    

4)建立/授权相关目录、文件

    mkdir /etc/caddy

    chown -R root:caddy /etc/caddy

    touch /etc/caddy/Caddyfile

    mkdir /etc/ssl/caddy

    chown -R caddy:root /etc/ssl/caddy

    chmod 0770 /etc/ssl/caddy

    mkdir /var/www

    chown caddy:caddy /var/www


5)下载systemctl自启动文件

       curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service

    

6)修改自启动文件

    vi /etc/systemd/system/caddy.service

    从

        ; User and group the process will run as.

        User=www-data

        Group=www-data

    改为

        ; User and group the process will run as.

        User=caddy

        Group=caddy


7)激活systemctl服务

    systemctl daemon-reload

    systemctl enable caddy

    systemctl status caddy


8)(可选,仅CentOS),关闭防火墙(如果之前没关闭的话)

        systemctl status firewalld

        systemctl stop firewalld

        systemctl mask firewalld

    如果不想关闭,可以加如下规则

        firewall-cmd --permanent --zone=public --add-service=http 

        firewall-cmd --permanent --zone=public --add-service=https

        firewall-cmd --reload


9)(可选)部署测试站点

        echo '<h1>Hello World!</h1>' | tee /var/www/index.html

        vi /etc/caddy/Caddyfile

    内容

        http:// {

            root /var/www

            gzip

        }

    保存后运行

        systemctl start caddy

        systemctl status caddy


    如果在Debian上启动显示绑定端口失败(拒绝权限),是Debian系统默认不允许绑定低位端口,要执行:

        apt-get install libcap2-bin -y

        setcap CAP_NET_BIND_SERVICE=+eip /usr/local/bin/caddy

        (caddy路径如果不对,可通过which caddy得出)


    浏览网站

        http://你的ip


10)设为TLS站点(自动获取、更新Let's Encrypt的SSL证书)

        vi /etc/caddy/Caddyfile

    改内容为(域名和邮件地址只是举例,需要替换为实际域名和邮件地址)

        example.com {

            root /var/www

            gzip

            tls sammy@example.com

        }


    重启服务

        systemctl restart caddy

        systemctl status caddy


    浏览网站

        https://你的域名

    应可以看到证书是OK的(绿色)

        

11)(可选)配合v2ray的示例设置

        vi /etc/caddy/Caddyfile

    内容(假定v2ray的inbound监听端口是10000——注意v2ray监听127.0.0.1即可)

example.com {

   root /var/www

   proxy /ray localhost:10000 {

      websocket

      header_upstream -Origin

   }

    tls sammy@example.com

}

    重启服务

        systemctl restart caddy

        systemctl status caddy


图标赞 6
6人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!