美文网首页
通过acme.sh自动部署UniFi Controller ss

通过acme.sh自动部署UniFi Controller ss

作者: 天天随缘风起 | 来源:发表于2018-08-28 14:22 被阅读0次

    写在前面:

    使用UniFi Controller 默认是通过https://IP:8443 进行登录的,但是在这种情况下由于没有证书导致chrome在进行访问的时候总是会有警告。如何部署ssl证书是作为强迫症的人必须解决的问题。对于这个问题有很多的解决办法,免费而方便的就是通过acme.sh自动部署Let’s Encrypt 证书。这里提出的解决方案能够自动的申请证书并完成证书的导入。

    LET'S GO


    前期的准备工作

    • 安装acme.sh
    curl https://get.acme.sh | sh
    

    很方便,就一行命令就可以完成下载和安装,同时还能够安装一个自动化命令。由于Let’s Encrypt 申请的证书尽管是免费的,但是最长只有90天的有效期,这个命令将会在证书到期前自动的进行再次申请。完成安装之后最好重新连接一下ssh终端。如果需要可以通过命令获得证书更新的邮件提醒。

    acme.sh --upgrade --auto-upgrade --accountemail "mynotifaction@email.com"
    
    • 拥有一个自己的域名,acme.sh支持大部分的域名服务商,可以在这里进行 DNS providers 具体的查询。

    创建一个post-hook file用于自动的备份原有证书和部署新的证书

    创建这个文件/root/.acme.sh/cloudkey-renew-hook.sh以下代码完全不用做任何修改

    #!/bin/bash
    # Renew-hook for ACME / Let's encrypt
    echo "** Configuring new Let's Encrypt certs"
    cd /etc/ssl/private
    rm -f /etc/ssl/private/cert.tar /etc/ssl/private/unifi.keystore.jks /etc/ssl/private/ssl-cert-snakeoil.key /etc/ssl/private/fullchain.pem
    
    openssl pkcs12 -export -in /etc/ssl/private/cloudkey.crt -inkey /etc/ssl/private/cloudkey.key -out /etc/ssl/private/cloudkey.p12 -name unifi -password pass:aircontrolenterprise
    
    keytool -importkeystore -deststorepass aircontrolenterprise -destkeypass aircontrolenterprise -destkeystore /usr/lib/unifi/data/keystore -srckeystore /etc/ssl/private/cloudkey.p12 -srcstoretype PKCS12 -srcstorepass aircontrolenterprise -alias unifi
    
    rm -f /etc/ssl/private/cloudkey.p12
    tar -cvf cert.tar *
    chown root:ssl-cert /etc/ssl/private/*
    chmod 640 /etc/ssl/private/*
    
    echo "** Testing Nginx and restarting"
    /usr/sbin/nginx -t
    /etc/init.d/nginx restart ; /etc/init.d/unifi restart
    

    在DNS服务商那边获得证书申请所需要的DNS API

    具体怎么申请请查看DNS官方网站,acme.sh支持多个DNS服务商的API完成证书申请工作,不同的服务商申请证书的方式不同。我用的是namesilo,这一部分的命令仅针对namesilo,将申请得到API KEY通过下面的命令进行输入。

    export Namesilo_Key="YOUR-NAMESILO-API-KEY"
    

    正式申请证书并完成部署

    通过下面的命令进行证书申请,需要修改unifi.myname.com这个地方,将其修改为需要使用的域名。acme.sh命令在申请域名的证书的时候将域名增加在-d这个参数后面。

    acme.sh --force --issue --dns dns_namesilo --dnssleep 900 -d unifi.myname.com --pre-hook "touch /etc/ssl/private/cert.tar; tar -zcvf /root/.acme.sh/CloudKeySSL_`date +%Y-%m-%d_%H.%M.%S`.tgz /etc/ssl/private/*" --fullchainpath /etc/ssl/private/cloudkey.crt --keypath /etc/ssl/private/cloudkey.key --reloadcmd "sh /root/.acme.sh/cloudkey-renew-hook.sh"
    

    上面的命令除了完成证书申请之外,还将备份原有的证书,部署证书到unifi-control中,同时重启unifi服务。

    最后的总结

    这个方案可以自动的完成证书申请、备份、部署、更新,所需要的仅仅是在修改一个申请的域名就ok了,确实方便实用。

    相关文章

      网友评论

          本文标题:通过acme.sh自动部署UniFi Controller ss

          本文链接:https://www.haomeiwen.com/subject/hnnfwftx.html