https ssl申请

免费证书申请

ASnipaste_2025-01-10_12-44-04.jpg

先购买测试证书

AASnipaste_2025-01-10_12-45-43.jpg

创建证书

AAASnipaste_2025-01-10_12-48-15.jpg

点击更多查看信息

从证书中确认邮箱 和私钥算法

DDSnipaste_2025-01-10_12-53-41.jpg

AAASnipaste_2025-01-10_12-57-44.jpg

然后就可以部署了我这边用的的是NGINX 建议参考帮助

ABASnipaste_2025-01-10_13-02-19.jpg

这边的路径需要特别注意

如果NGINX 没起来 看日志找不到路径可以加上更上一级目录试试(当然你也可以直接从根目录写死)

AASSnipaste_2025-01-10_13-06-34.jpg

这里申请就结束了

[nginx]ssl自动续签 替换脚本 适用于1panel自动证书申请

1.0 1panel 配置证书申请

KSnipaste_2025-01-10_12-29-51.jpg

1.1创建 Acme账户 和DNS账户

KSnipaste_2025-01-10_12-34-38.jpg

密钥算法和申请的私钥算法一致即可

ASnipaste_2025-01-10_12-40-04.jpg

创建DNS账户(自用的是阿里云的)

AAdsSnipaste_2025-01-10_13-15-29.jpg

VSnipaste_2025-01-10_13-17-47.jpg

创建完成后就可以申请证书了

1.2 申请证书

A_Snipaste_2025-01-10_13-33-08.jpg

选择执行项

AAASnipaste_2025-01-10_13-40-59.jpg

1.3 Backup_And_Replace.sh 脚本

#!/bin/bash  
function Backup() {  
  local FILE_NAME=$1  
  local PREFIX_PATH=$2  
  # 获取当前日期,格式为 年-月-日  
  #DATE=$(date +%Y-%m-%d)  
  local DATE=$3  
  # 源文件路径  
  local SOURCE_FILE="$PREFIX_PATH/$FILE_NAME"  
  #判断文件是否存在(不管是文件还是目录)  
  if [ -e "$SOURCE_FILE" ]; then  
  echo "${SOURCE_FILE}文件存在"  
  else  
  echo "${SOURCE_FILE}文件不存在,请检查!备份终止!"  
  exit # 检查备份目录是否存在,如果不存在则创建  
  fi  
  
  # 备份文件存储路径  
  local BACKUP_DIR="$4"  
  # 检查备份目录是否存在,如果不存在则创建  
  if [ -d "$BACKUP_DIR" ]; then  
  echo "${BACKUP_DIR}文件夹存在"  
  else  
  echo "${BACKUP_DIR}文件夹不存在,创建中..."  
  mkdir -p  
        echo "创建${BACKUP_DIR}文件夹成功"  
  fi  
  
  # 备份文件名,格式为 file-YYYY-MM-DD.txt  local BACKUP_FILE_TEMP="$BACKUP_DIR/${FILE_NAME}_Backup_$DATE"  
  echo "BACKUP_FILE_TEMP=$BACKUP_FILE_TEMP"  
  
  if [ -e "$BACKUP_FILE_TEMP" ]; then  
  echo "${BACKUP_FILE_TEMP}文件存在,今日已经备份完成!"  
  else  
  echo "开始备份 $SOURCE_FILE 到 $BACKUP_FILE_TEMP"  
  # 进行备份操作  
  cp "$SOURCE_FILE" "$BACKUP_FILE_TEMP"  
  # 输出备份成功信息  
  echo "Backup of $SOURCE_FILE created as $BACKUP_FILE_TEMP"  
  fi  
}  
  
function BackupAll() {  
  local BACKUP_FILE_MAP=()  
  local FILE_NAME_TEMP=$1  
  local FILE_NAME2_TEMP=$2  
  
  local DATE=$(date +%Y-%m-%d)  
  local PREFIX_PATH=$3  
  local BACKUP_DIR="$PREFIX_PATH/backup"  
  
  BACKUP_FILE_MAP+=("$BACKUP_DIR/${FILE_NAME_TEMP}_Backup_$DATE")  
  BACKUP_FILE_MAP+=("$BACKUP_DIR/${FILE_NAME2_TEMP}_Backup_$DATE")  
  
  Backup "$FILE_NAME_TEMP" "$PREFIX_PATH" "$DATE" "$BACKUP_DIR"  
  Backup "$FILE_NAME2_TEMP" "$PREFIX_PATH" "$DATE" "$BACKUP_DIR"  
  
  for element in "${BACKUP_FILE_MAP[@]}"; do  
 if [ -e "$element" ]; then  
  echo "${element}文件存在,备份成功!"  
  else  
  echo "${element}文件不存在,备份失败!退出后续操作"  
  exit # 检查备份目录是否存在,如果不存在则创建  
  fi  
 done}  
  
  
function Replace() {  
  local FILE_NAME_TEMP=$1  
  local APPLY_FILE_NAME_TEMP=$2  
  
  local SOURCE_FILE="$APPLY_FILE_NAME_TEMP"  
  local TO_SOURCE_FILE="$FILE_NAME_TEMP"  
  echo "开始替换 $SOURCE_FILE 到 $TO_SOURCE_FILE"  
  # 进行替换操作  
  cp "$SOURCE_FILE" "$TO_SOURCE_FILE"  
  mv "$SOURCE_FILE" "${SOURCE_FILE}.ok"  
  # 输出替换成功信息  
  echo "cp of $SOURCE_FILE to as $TO_SOURCE_FILE"  
}  
  
function ReplaceAll() {  
  local PREFIX_PATH=$1  
  local FILE_NAME=$2  
  local APPLY_FILE_NAME=$3  
  local FILE_NAME2=$4  
  local APPLY_FILE_NAME2=$5  
  
  Replace "$PREFIX_PATH/$FILE_NAME" "$PREFIX_PATH/$APPLY_FILE_NAME"  
  Replace "$PREFIX_PATH/${FILE_NAME2}" "$PREFIX_PATH/${APPLY_FILE_NAME2}"  
  
}  
  
function main() {  
  sleep 1  
  #新申请的ssl 和原ssl 要求处于同一目录  
  FILE_NAME="xxx.key" #原私钥名(不带路径)  
  FILE_NAME2="xxx.pem" #原证书名(不带路径)  
  PREFIX_PATH="/path//nginx/conf.d/cert" #证书所在目录  
  APPLY_FILE_NAME="privkey.pem" #新申请的私钥名(不带路径)  
  APPLY_FILE_NAME2="fullchain.pem" #新申请的证书名(不带路径)  
  DOCKER_NGINX_NANE="nginx" #docker 容器名  
  echo "================================================================"  
  #备份 原证书 每天只备份一次 备份文件名:${FILE_NAME}_Backup_$DATE  
  BackupAll "$FILE_NAME" "$FILE_NAME2" "$PREFIX_PATH"  
  echo "================================================================"  
  #替换 原证书为 新证书 并将新证书命名为 ${APPLY_FILE_NAME}.ok  ReplaceAll "$PREFIX_PATH" "$FILE_NAME" "$APPLY_FILE_NAME" "$FILE_NAME2" "$APPLY_FILE_NAME2"  
  echo "================================================================"  
  echo "重启nginx:${DOCKER_NGINX_NANE} 加载ssl"  
  sudo docker restart ${DOCKER_NGINX_NANE}  
  echo "================================================================"  
  echo "等待10s nginx:${DOCKER_NGINX_NANE}重启完成"  
  sleep 10  
  # 检查容器是否正在运行  
  sudo docker ps | grep -q "${DOCKER_NGINX_NANE}"  
  RM_FILE_MAP=()  
  if [ $? -eq 0 ]; then  
  echo "Nginx容器已经成功重启并正在运行。"  
  echo "正在移除 多余文件 ..."  RM_FILE_MAP+=( "rm -rf $PREFIX_PATH/${APPLY_FILE_NAME}.ok" )  
  RM_FILE_MAP+=( "rm -rf $PREFIX_PATH/${APPLY_FILE_NAME2}.ok" )  
  
  for element in "${RM_FILE_MAP[@]}"; do  
  echo "${element}"  
  eval ${element}  
  done  
 else  echo "Nginx容器未能启动,请检查错误日志。"  
  exit 1  
  fi  
}  
  
main