本月优惠

Certum EV代码签名Docker 一键签名容器(无中文、无 Key、无 API、不报错)

一、你只需要准备 2 个信息

证书 SHA1 指纹(40 位十六进制)和公司英文名,指纹获取方法如下:

你需要在 Windows 装 SimplySign Desktop,登录后:

  • 托盘右键 → Manage certificates → Certificate list

  • 双击证书 → 看到 SHA1 指纹(40 位十六进制)

  • 复制下来,类似:

  • 51959036913d91b4317c4b6520e5956e1


二、一键部署(全程复制粘贴,无任何中文)

1. 创建工作目录

bash

运行

mkdir -p /docker/sign && cd /docker/sign


2. 创建 Dockerfile(纯英文无乱码)

dockerfile

FROM alpine:latest

RUN apk add --no-cache osslsigncode inotify-tools bsdtar bash tzdata

WORKDIR /app

ENV TZ=UTC

COPY run.sh /app/run.sh

RUN chmod +x /app/run.sh

ENTRYPOINT ["/app/run.sh"]


3. 创建 run.sh 核心脚本(纯英文)

bash

运行

#!/bin/bash

set -euo pipefail


CERT_SHA1="YOUR_CERT_SHA1"  (修改指纹)

COMPANY="YOUR_COMPANY_NAME"  (修改公司英文名)

TS_URL="https://time.certum.pl/"


UNSIGN="/data/unsign"

SIGNED="/data/signed"

CAB="/data/cab"


mkdir -p $UNSIGN $SIGNED $CAB


sign() {

  local src="$1"

  local name=$(basename "$src")

  local out="$SIGNED/$name"

  osslsigncode sign -h sha256 -sha1 "$CERT_SHA1" -ts "$TS_URL" -n "$COMPANY" "$src" -o "$out"

  echo "Signed: $name"

}


batch_sign() {

  for f in $UNSIGN/*.sys $UNSIGN/*.cat $UNSIGN/*.inf; do

    [ -f "$f" ] && sign "$f"

  done

}


watch() {

  inotifywait -m -e close_write -e create "$UNSIGN" | while read dir ev file; do

    if [[ "$file" =~ .(sys|cat|inf)$ ]]; then

      sleep 0.5

      sign "$dir/$file"

    fi

  done

}


cab() {

  local cabfile="$CAB/driver_$(date +%Y%m%d).cab"

  cd "$SIGNED"

  bsdtar -cf "$cabfile" --format=cab ./*

  echo "CAB created: $cabfile"

}


case "${1:-}" in

  watch) batch_sign && watch ;;

  cab) cab ;;

  *) batch_sign ;;

esac

4. 构建镜像

bash

运行

docker build -t certum-signer .


三、3 条命令实现全自动化

1. 后台自动监听 + 自动签名(推荐)

bash

运行

docker run -d

  --restart always

  -v /data/unsign:/data/unsign

  -v /data/signed:/data/signed

  -v /data/cab:/data/cab

  -e CERT_SHA1="你的SHA1指纹"

  -e COMPANY="你的公司英文名"

  certum-signer watch


2. 手动批量签名一次

bash

运行

docker run --rm

  -v /data/unsign:/data/unsign

  -v /data/signed:/data/signed

  -e CERT_SHA1="你的SHA1指纹"

  -e COMPANY="你的公司英文名"

  certum-signer


3. 一键打包 WHQL 标准 CAB

bash

运行

docker run --rm

  -v /data/signed:/data/signed

  -v /data/cab:/data/cab

  certum-signer cab


四、目录结构(直接丢文件即可)

plaintext

/data/unsign     ← 放未签名 sys/cat/inf

/data/signed     ← 自动输出签名后文件

/data/cab        ← 自动输出 WHQL CAB