我想扩展现有文件而不是为子域创建新证书。
我的文件中已有这些域:
certtool -i < /etc/letsencrypt/live/example.org-0002/fullchain.pem|grep DNSname
DNSname: forum.example.com
DNSname: m.example.de
DNSname: m.example.org
DNSname: example.com
DNSname: example.de
DNSname: example.org
DNSname: wiki.example.org
DNSname: www.example.com
DNSname: www.example.de
DNSname: www.example.org
(是debian 中certtool
软件包的一部分)gnutls-bin
我知道,有这个certbot --expand
选项,但如果我没有再次获得确切的域集,它将创建一个带有下一个后缀的新证书-0003
如果我只想将一个域添加到现有的证书文件中,如何防止这种情况发生?
答案1
使用以下命令从输出中创建一个列表:
echo 'echo "-d $@"'>/tmp/runme.sh
chmod +x /tmp/runme.sh
domains_with_hyphen_d="$(certtool -i < /etc/letsencrypt/live/example.org-0002/fullchain.pem|grep DNSname|cut -d ":" -f2| xargs -n 1 /tmp/runme.sh|xargs)"
certbot certonly --webroot -w /usr/share/nginx/html/ --expand -d newsubdomain.example.org $domains_with_hyphen_d
答案2
我一直在寻找一些 certbot 开关,因此我不必编写现有证书的所有域,但 certbot 没有这样的开关。所以我提出了这个解决方案。
CERTNAME=example
DOMAINS=$(certbot certificates --cert-name ${CERTNAME}|grep Domains|cut -d\ -f 6-|sed 's/ /,/g')
NEWDOMAINS=new.example.com,othernew.example.com
certbot certonly --cert-name ${CERTNAME} --expand --domains ${DOMAINS},${NEWDOMAINS}
注意:如果您的证书没有 --cert-name,请改用 --domain 以及现有证书的任何现有 DNS 替代名称。