背景: 由于有多个服务器需要更新 https 证书,如果每个服务器单独更新自己的证书,在迁移应用的时候,需要把证书也迁移过去,非常麻烦。因此考虑由一台服务器进行更新 https 证书,并通过 ssh 分发和调用更新命令。
前期准备:
运行过程:
应用场景: 使用 acme.sh 进行定时更新证书,更新完毕后调用此脚本给其他服务器更新证书。
#!/bin/bash # Author: liujun <ljskryj@163.com> # Date: 2020-12-27 # Description: # 远程上传证书并调用 reload 脚本。 # upload certs and run remote reload.sh . set -e DIR=$(dirname "${BASH_SOURCE[0]}") cd "${DIR}" echo "start update certs" SERVERS=("server1" "server2" "server3" ) BASE_DIR=/etc/certs for SERVER in "${SERVERS[@]}" do echo "=> start for server $SERVER" echo " [$SERVER] mkdir dir $BASE_DIR" ssh $SERVER "if [ ! -d '$BASE_DIR' ]; then mkdir $BASE_DIR ; fi" echo " [$SERVER] mkdir done!" echo " [$SERVER] copy certs" scp ./certs/gulucat.key $SERVER:$BASE_DIR/ scp ./certs/gulucat.crt $SERVER:$BASE_DIR/ echo " [$SERVER] copy done!" echo " [$SERVER] call reload cmd" ssh $SERVER "if [ -f '$BASE_DIR/reload.sh' ]; then bash $BASE_DIR/reload.sh ; fi" echo " [$SERVER] reload done!" done echo "all done!"