首页 > 系统相关 >Windows环境中,为自己的应用添加发行者证书

Windows环境中,为自己的应用添加发行者证书

时间:2024-10-20 23:32:32浏览次数:7  
标签:证书 Windows 签名 应用 signtool 发行者

Windows环境中,为自己的应用添加发行者证书

在 Windows 上,如果你运行一个自定义构建的 Go 应用,Windows SmartScreen 或 UAC 可能会显示“发行者为未知”,这是因为你的应用没有经过代码签名认证。为了让 Windows 识别你的发行者信息,你需要给应用添加代码签名(Code Signing Certificate)


如何为 Go 应用添加发行者信息(代码签名)

步骤 1:获取代码签名证书

你需要一个 代码签名证书 来给你的应用签名。这些证书由可信证书颁发机构(CA)提供,如:

  • DigiCert
  • Sectigo (Comodo)
  • GlobalSign
  • Let's Encrypt(免费 TLS 证书,但代码签名证书需要商业购买)

如果只是测试使用,你也可以生成一个自签名证书(详见下方步骤),但这不会被 Windows 视为可信任发行者。


步骤 2:生成自签名证书(测试用)

如果只是本地测试或学习目的,可以生成自签名证书:

  1. 打开 PowerShell(管理员权限)。

  2. 运行以下命令创建一个自签名证书:

    $cert = New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=MyCompany" -CertStoreLocation "Cert:\CurrentUser\My"
    
  3. 导出证书为 .pfx 文件(包括私钥):

    Export-PfxCertificate -Cert "Cert:\CurrentUser\My\$($cert.Thumbprint)" -FilePath "C:\path\to\mycert.pfx" -Password (ConvertTo-SecureString -String "your-password" -Force -AsPlainText)
    

这会生成一个自签名的 .pfx 文件,稍后会用来签名你的可执行文件。


步骤 3:安装 signtool 工具

signtool 是 Windows SDK 中的工具,用于给可执行文件和安装包签名。

  1. 安装 Windows SDK下载地址)。
  2. 在终端中确保 signtool 可用:
    signtool
    
    如果显示帮助信息,则说明安装成功。

步骤 4:给可执行文件签名

  1. 构建你的 Go 可执行文件:

    go build -o myapp.exe main.go
    
  2. 使用 signtool 给应用签名:

    signtool sign /f C:\path\to\mycert.pfx /p your-password /tr http://timestamp.digicert.com /td sha256 /fd sha256 myapp.exe
    
    • /f:证书文件路径(.pfx)。
    • /p:证书文件密码。
    • /tr:时间戳服务器(避免签名过期)。
    • /td/fd:使用 SHA-256 算法。
    • myapp.exe:要签名的可执行文件。
  3. 验证签名是否成功:

    signtool verify /pa myapp.exe
    

步骤 5:检查签名和发行者信息

  1. 右键点击已签名的 myapp.exe
  2. 选择 属性 > 数字签名
  3. 确认签名是否成功,发行者是否显示为你指定的名称(如 CN=MyCompany)。

步骤 6:发布和避免未知发行者提示

  • 发布前测试:确保在不同的 Windows 设备上测试你的应用签名,检查是否显示发行者信息。
  • 购买可信证书:自签名证书只能用于本地测试。如果要避免 Windows 警告,必须从可信的证书颁发机构(CA)购买代码签名证书。

总结

通过给你的 Go 应用添加代码签名证书,Windows 系统就能识别你的应用的发行者信息,避免“未知发行者”的提示。你可以使用 自签名证书来测试,但在生产环境下,需要购买可信证书来确保你的用户不会看到安全警告。

标签:证书,Windows,签名,应用,signtool,发行者
From: https://www.cnblogs.com/smartljy/p/18488178

相关文章

  • windows下安装VirtualBox7.1.4
    记录详细的安装过程与遇到的问题;下载地址virtualbox官网清华镜像源下载下载完成后文件:双击打开;报错了意思是需要pc上先安装MicrosoftVisualC++2019https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist?view=msvc-160下载后安装重启后继......
  • CNVD漏洞和证书挖掘经验总结
    前言        本篇文章主要是分享一下本人挖掘CVND漏洞碰到的一些问题,根据过往成功归档的漏洞和未归档的漏洞总结出的经验,也确实给审核的大佬们添了很多麻烦(主要真的没人教一下,闷着头尝试犯了好很多错误,希望各位以后交一个通过一个。当然,也一定要注意测试资产的范围、......
  • 记一次 edu 证书站失败的逻辑漏洞
    记一次edu证书站失败的逻辑漏洞闲来无事,在礼物中心看到个证书站,看名称感觉应该挺好挖的,简单信息搜集一波,在hunter上查看子域名,发现有个管理系统访问该链接,是个登录框现在需要去搞一手学号什么的了(因为是随便看看的所以没有先信息搜集),利用hack语法找了半天只找到16,17......
  • Windows 配置 MinGW-64
    下载地址:https://sourceforge.net/projects/mingw-w64/files/1.介绍MinGW,全称为MinimalistGNUonWindows,是将开源C语言编译器GCC移植到Windows平台的产物,它包含Win32API,能将源代码编译为可在Windows运行的可执行程序,还可使用一些Windows不具备的Linux平台下的开发工具......
  • Linux宝塔面板安装Windows环境搭建企业
    宝塔面板是一款非常流行的服务器管理软件,支持多种操作系统,包括Linux。以下是基于CentOS系统的宝塔面板安装步骤:1.检查系统环境确保您的服务器操作系统为CentOS7.x或更高版本。确保服务器有公网IP地址。2.关闭防火墙(可选)  3.安装宝塔面板打开终端或SSH连接到您......
  • 适用于 Windows 11/10/8/7/Vista/XP 的最佳免费分区软件
    无论您使用的是SSD、机械磁盘还是任何类型的RAID阵列,硬盘驱动器都是Windows计算机中不可或缺的组件。在将文件保存到全新磁盘之前,您应该初始化它,创建分区并使用文件系统格式化。在运行计算机一段时间后,您需要收缩、扩展、转换、复制磁盘分区等。可靠的磁盘分区工具可以帮......
  • openvpn2.0.9搭建和windows客户端拨号连接vpn,并用xshell连接机房只有内网的服务器
    openvpn2.0.9搭建和windows客户端拨号连接vpn,并用xshell连接机房只有内网的服务器如果对运维课程感兴趣,可以在b站上、csdn或微信视频号上搜索我的账号:运维实战课程,可以关注我,学习更多免费的运维实战技术视频1.openvpnserver服务器的安装、配置和服务启动:vpnserver服务器:(......
  • node.js安装及环境配置基于Windows系统
    node.js安装及环境配置-Windows系统1.下载安装包https://nodejs.org/zh-cn/download/根据自己电脑系统及位数选择,我的电脑是Windows系统、64位、想下载稳定版的.msi(LTS为长期稳定版)这里选择windows64位.msi格式安装包。.msi和.zip格式区别:.msi是Windowsinstaller开发出......
  • windows下在Postgresql数据库中扩展postgis功能实现存储空间地理数据
    操作分为以下三步:1.下载 Postgresql数据库(在官网直接下载即可)2.下载安装postgis(需要对应pgadmin版本安装时路径要与pgadmin路径一致)3.在pgadmin中新建数据库扩展postgis(执行语句即可)1.下载 Postgresql数据库(在官网直接下载即可)Download(pgadmin.org)2.下载安装postg......
  • VTK9.3.1在Windows10+VS2022+Qt 5.14.2环境下编译安装以及VTK应用于QT
    文章目录概要搭建编译环境编译源代码VisualStudio2022+Qt使用VTK概要本文主要介绍VTK9.3.1如何在Windows10上使用VS2022和QT进行编译安装。搭建编译环境先从VTK官网下载VTK9.3.1的源码,VTK下载地址我们可以按照官方推荐的编译方式进行编译,首先设置三个文件夹......