You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中signtool.exe签名失败问题求助

在Docker中构建.NET项目时代码签名失败的解决方案

问题分析

你在csproj中定义的RunAfterPublish Target使用signtool.exe签名,本地Windows环境运行正常,但Docker构建失败,根源在于:

  • mcr.microsoft.com/dotnet/sdk:6.0是Linux基础镜像,而signtool.exe是Windows专属工具,无法在Linux环境直接执行。
  • 错误码-1073741515(0xC0000135):找不到Windows核心依赖库;错误码3221225781(0xC000007B):Windows程序在Linux环境的兼容性执行错误。

解决方案

方案1:改用Windows容器构建

将Dockerfile切换为Windows版本的.NET镜像,让signtool能在原生Windows环境运行:

# 使用Windows Nano Server的.NET SDK镜像
FROM mcr.microsoft.com/dotnet/sdk:6.0-nanoserver-ltsc2022 AS build-env
WORKDIR /app

COPY . ./
RUN dotnet restore
RUN dotnet publish -c Release -o out

# 使用对应版本的Windows ASP.NET镜像
FROM mcr.microsoft.com/dotnet/aspnet:6.0-nanoserver-ltsc2022
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["MyApp.exe"]

注意:需要在Docker设置中切换到Windows容器模式,同时确保signtool.exe和证书文件已被正确复制到容器工作目录。

方案2:先在主机完成签名,再复制到容器

如果不想依赖Windows容器,可以在本地(或CI/CD的Windows节点)先完成发布和签名,再将已签名的产物打包进镜像:

  1. 本地执行发布签名:
dotnet publish -c Release -o out
  1. 修改Dockerfile直接复制已签名文件:
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY ./out .
ENTRYPOINT ["MyApp.exe"]

方案3:使用跨平台签名工具替代signtool

使用Linux下支持Windows PE文件签名的osslsigncode工具,无需切换容器类型:

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
WORKDIR /app

COPY . ./
RUN dotnet restore
RUN dotnet publish -c Release -o out

# 安装osslsigncode
RUN apt-get update && apt-get install -y osslsigncode
# 执行签名(参数根据你的证书和需求调整)
RUN osslsigncode sign \
    -certs my-code-sign-cert.pfx \
    -pass mypassword \
    -n "MyApp" \
    -i http://myapp.com \
    -ts http://timestamp.digicert.com/ \
    -h sha256 \
    -out out/MyApp-signed.exe out/MyApp.exe
# 替换原文件
RUN mv out/MyApp-signed.exe out/MyApp.exe

FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["MyApp.exe"]

注意事项

  • 证书密码不要硬编码在Dockerfile中,建议使用Docker构建参数或秘密管理工具传递,避免敏感信息泄露。
  • Windows容器镜像体积较大,优先选择nanoserver而非servercore镜像以减少镜像大小。
  • osslsigncode的参数与signtool略有差异,需根据证书类型和签名需求调整。

内容的提问来源于stack exchange,提问作者bgh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:57:35