我如何在Ha-proxy负载平衡器中使用Lets加密证书管理器?我需要在我的SaaS应用程序上实现自定义域功能服务。除SSL之外,其他所有功能都可以正常工作。如何实现?使用Haproxy作为负载均衡器。
这里是一个可能的解决方案。我认为比较容易。它使用Haproxy社区和Certbot客户端。
在单独的服务器上安装Certbot客户端,并开发REST API与客户端进行交互。在这里,您将能够将您的应用程序与Certbot集成以生成证书。
在HAproxy服务器上创建一个目录来存储证书。在服务器上安装NFS并将此目录安装在Certbot服务器上。使用Certbot生成证书时,请部署到该安装点。
为Certbot创建部署脚本,以便在部署新证书时重新加载Haproxy服务。
在Certbot服务器上安排任务,使其每天运行一次续订过程。
如果您不喜欢Certbot客户端,则可以自己开发客户端。我现在正在Scala中开发一个以与我的电子商务平台集成,这并不难。
试图定义步骤。从较大的脚本简化而成,如果有错误,请在此处写下以解决此问题。
先决条件:
步骤:
清理/ etc / letsencrypt中带有test.com rm -rf *test.com*
的旧文件夹
停止haproxy
运行命令:
certbot certonly --standalone --preferred-challenges http --http-01-port 80 -d test.com
certbot certonly --standalone --preferred-challenges http --http-01-port 80 -d www.test.com
检查是否还可以
[email protected]:/etc/letsencrypt/renewal# cat www.test.com.conf
应该是:
#renew_before_expiry = 30 days version = 0.22.2 archive_dir = /etc/letsencrypt/archive/www.test.com cert = /etc/letsencrypt/live/www.test.com/cert.pem privkey = /etc/letsencrypt/live/www.test.com/privkey.pem chain = /etc/letsencrypt/live/www.test.com/chain.pem fullchain = /etc/letsencrypt/live/www.test.com/fullchain.pem # Options used in the renewal process [renewalparams] http01_port = 80 installer = None pref_challs = http-01, account = YOUR_ACCOUNT authenticator = standalone
创建文件夹/etc/letsencrypt/live/www.test.com和etc / letsencrypt / live / test.com
创建到归档文件的链接文件
ln -s ../../archive/test.com/cert1.pem cert.pem ln -s ../../archive/test.com/chain1.pem chain.pem ln -s ../../archive/test.com/fullchain1.pem fullchain.pem ln -s ../../archive/test.com/privkey1.pem privatekey.pem
cat fullchain.pem privatekey.pem > /etc/haproxy/ssl/test.com-fullchain.pem
与www相同
frontend test_com_ssl bind *:443 ssl crt /etc/haproxy/ssl/ ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA default_backend test_com
后端可以与http前端相同
要检查以查看证书的到期日期:键入
openssl x509 -enddate -noout -in test.com-fullchain.pem
要做:未涵盖如何更新脚本,希望以后再执行此操作