群晖emby套件同步系统的证书并转换

计划任务执行以下: 

#!/bin/bash


set -e


SRC_BASE="/usr/syno/etc/certificate/_archive"


COPY_DEST="/volume3/data1/emby/fuzhi"

PFX_DEST="/volume3/data1/emby/zhuanhuan"


LOG="/var/log/copy_and_convert_nas_cert_to_emby.log"


PFX_PASS="修改为证书密码此处修改"


PFX_FILE="$PFX_DEST/emby.pfx"

TMP_PFX_FILE="$PFX_DEST/emby.pfx.tmp"


{

echo "===== $(date '+%F %T') 开始同步 NAS 默认证书并转换为 Emby PFX ====="

echo "当前执行用户: $(whoami)"


echo "源证书基础目录: $SRC_BASE"

echo "复制目标目录: $COPY_DEST"

echo "PFX输出目录: $PFX_DEST"


if [ "$PFX_PASS" = "这里改成你的PFX密码" ] || [ -z "$PFX_PASS" ]; then

  echo "错误:请先修改脚本里的 PFX_PASS"

  exit 1

fi


if [ ! -f "$SRC_BASE/DEFAULT" ]; then

  echo "错误:找不到 DEFAULT 文件:$SRC_BASE/DEFAULT"

  exit 1

fi


CERT_ID="$(cat "$SRC_BASE/DEFAULT")"

SRC="$SRC_BASE/$CERT_ID"


echo "当前默认证书ID: $CERT_ID"

echo "当前默认证书目录: $SRC"


if [ ! -d "$SRC" ]; then

  echo "错误:源证书目录不存在:$SRC"

  exit 1

fi


if [ ! -f "$SRC/cert.pem" ]; then

  echo "错误:源目录缺少 cert.pem"

  exit 1

fi


if [ ! -f "$SRC/privkey.pem" ]; then

  echo "错误:源目录缺少 privkey.pem"

  exit 1

fi


echo "创建目标目录..."

mkdir -p "$COPY_DEST"

mkdir -p "$PFX_DEST"


chmod 755 /volume3/data1/emby 2>/dev/null || true

chmod 755 "$COPY_DEST" 2>/dev/null || true

chmod 755 "$PFX_DEST" 2>/dev/null || true


echo "开始复制当前 NAS 默认证书..."


for f in cert.pem privkey.pem chain.pem fullchain.pem; do

  if [ -f "$SRC/$f" ]; then

    cp -f "$SRC/$f" "$COPY_DEST/$f"

    echo "已复制:$f"

  else

    echo "警告:未找到:$SRC/$f"

  fi

done


echo "$CERT_ID" > "$COPY_DEST/DEFAULT_ID.txt"


openssl x509 \

  -in "$SRC/cert.pem" \

  -noout \

  -subject \

  -issuer \

  -dates \

  -fingerprint \

  -sha256 > "$COPY_DEST/cert_info.txt"


chmod 755 /volume3/data1/emby 2>/dev/null || true

chmod 755 "$COPY_DEST" 2>/dev/null || true

chmod 755 "$PFX_DEST" 2>/dev/null || true


chmod 600 "$COPY_DEST/privkey.pem" 2>/dev/null || true

chmod 644 "$COPY_DEST/cert.pem" "$COPY_DEST/fullchain.pem" "$COPY_DEST/chain.pem" "$COPY_DEST/DEFAULT_ID.txt" "$COPY_DEST/cert_info.txt" 2>/dev/null || true


echo "复制完成。"

echo "开始从复制目录转换 Emby PFX..."


if [ ! -f "$COPY_DEST/cert.pem" ]; then

  echo "错误:复制目录缺少 cert.pem:$COPY_DEST/cert.pem"

  exit 1

fi


if [ ! -f "$COPY_DEST/privkey.pem" ]; then

  echo "错误:复制目录缺少 privkey.pem:$COPY_DEST/privkey.pem"

  exit 1

fi


rm -f "$TMP_PFX_FILE"


if [ -f "$COPY_DEST/chain.pem" ]; then

  echo "使用 cert.pem + privkey.pem + chain.pem 生成 emby.pfx"


  openssl pkcs12 -export \

    -out "$TMP_PFX_FILE" \

    -inkey "$COPY_DEST/privkey.pem" \

    -in "$COPY_DEST/cert.pem" \

    -certfile "$COPY_DEST/chain.pem" \

    -passout pass:"$PFX_PASS"


elif [ -f "$COPY_DEST/fullchain.pem" ]; then

  echo "未找到 chain.pem,使用 fullchain.pem 生成 emby.pfx"


  openssl pkcs12 -export \

    -out "$TMP_PFX_FILE" \

    -inkey "$COPY_DEST/privkey.pem" \

    -in "$COPY_DEST/fullchain.pem" \

    -passout pass:"$PFX_PASS"


else

  echo "错误:复制目录缺少 chain.pem 或 fullchain.pem,无法生成完整 PFX"

  exit 1

fi


if [ ! -s "$TMP_PFX_FILE" ]; then

  echo "错误:临时 PFX 文件不存在或大小为 0"

  exit 1

fi


echo "验证 PFX 文件..."


openssl pkcs12 \

  -in "$TMP_PFX_FILE" \

  -noout \

  -passin pass:"$PFX_PASS"


mv -f "$TMP_PFX_FILE" "$PFX_FILE"


openssl x509 \

  -in "$COPY_DEST/cert.pem" \

  -noout \

  -subject \

  -issuer \

  -dates \

  -fingerprint \

  -sha256 > "$PFX_DEST/emby_pfx_cert_info.txt"


cp -f "$COPY_DEST/DEFAULT_ID.txt" "$PFX_DEST/DEFAULT_ID.txt" 2>/dev/null || true


chmod 755 /volume3/data1/emby 2>/dev/null || true

chmod 755 "$COPY_DEST" 2>/dev/null || true

chmod 755 "$PFX_DEST" 2>/dev/null || true


chmod 644 "$PFX_FILE"

chmod 644 "$PFX_DEST/emby_pfx_cert_info.txt" "$PFX_DEST/DEFAULT_ID.txt" 2>/dev/null || true


echo "转换完成。"

echo "生成的 Emby PFX 文件:$PFX_FILE"


echo "复制目录内容:"

ls -la "$COPY_DEST"


echo "转换后目录内容:"

ls -la "$PFX_DEST"


echo "开始重启 EmbyServer 套件..."


if synopkg status EmbyServer >/dev/null 2>&1; then

  synopkg restart EmbyServer

  echo "EmbyServer 套件已重启"

else

  echo "错误:未检测到 EmbyServer 套件,无法重启"

  exit 1

fi


echo "===== $(date '+%F %T') 全部完成 ====="

echo ""


} >> "$LOG" 2>&1

此博客中的热门博文

酷狗音乐MP3下载助手 - 下载状态修复版

下载谷歌浏览器

Office 微软官方部署流程