sassoftware/relic
GitHub: sassoftware/relic
Relic 是一款支持 Linux、Windows、macOS 多平台软件包格式的数字签名工具与签名服务器,解决企业在软件发布过程中对包进行统一可信签名与密钥管理的需求。
Stars: 196 | Forks: 51
relic 是一个多用途工具和服务器,用于对软件包进行签名以及与硬件安全模块(HSM)协同工作。
# 软件包类型
* RPM - RedHat 软件包
* DEB - Debian 软件包
* JAR - Java 档案文件
* EXE (PE/COFF) - Windows 可执行文件
* MSI - Windows 安装程序
* appx, appxbundle - Windows 通用应用程序
* CAB - Windows 压缩包文件
* CAT - Windows 安全目录
* XAP - Silverlight 和早期 Windows Phone 应用程序
* PS1, PS1XML, MOF 等 - Microsoft Powershell 脚本和模块
* manifest, application - Microsoft ClickOnce 清单
* VSIX - Visual Studio 扩展
* Mach-O - macOS/iOS 已签名的可执行文件
* DMG, PKG - macOS 磁盘映像 / 安装包
* APK - Android 软件包
* PGP - 数据的内联、分离签名或明文签名
# Token 类型
relic 可以与多种类型的 token 配合使用:
* pkcs11 - 使用共享对象文件的行业标准 PKCS#11 HSM 接口
* 云服务 - AWS、Azure 和 Google Cloud 托管密钥
* scdaemon - GnuPG scdaemon 服务可以启用对 OpenPGP 卡(例如 Yubikey NEO)的访问
* file - 存储在受密码保护文件中的私钥
# 功能
Relic 主要旨在作为签名服务器运行,允许客户端使用 TLS 证书进行身份验证并远程签署软件包。它也可以用作独立的签名工具。
其他功能包括:
* 在 token 中生成和导入密钥
* 从 PKCS#12 文件导入证书链
* 创建 X509 证书签名请求(CSR)和自签名证书
* 有限的 X509 CA 支持 —— 签署 CSR 和交叉签署证书
* 创建简单的 PGP 公钥
* 所有非 PGP 签名类型均支持 RSA 和 ECDSA(由于底层 PGP 实现的限制,目前 PGP 签名类型无法使用 ECDSA)
* 验证所有受支持软件包类型的签名、证书链和时间戳
* 将 token PIN 保存在系统密钥环中
# 平台
支持 Linux、Windows 和 MacOS。其他平台可能也能正常工作。
relic 使用 libsofthsm2 进行测试。每个供应商的 PKCS#11 实现都有其特殊性,因此如果 relic 无法与您的硬件配合使用,请提交 pull request。
# 安装说明
Github 发布页面提供了预构建的客户端二进制文件。或者,也可以从源代码构建 relic:
```go install github.com/sassoftware/relic/v8@latest```
还可以使用以下构建标签:
* clientonly - 构建不含独立签名功能的轻量级二进制文件
有关示例配置,请参见 [doc/relic.yml](./doc/relic.yml)。
# 更多文档
* [签署 Android 软件包](./doc/android.md)
* [签署 MacOS 二进制文件](./doc/macos.md)
* [使用 Azure Key Vault](./doc/azure.md)
* [使用 PGP 卡、YubiKey 等](./doc/pgpcard.md)
# 相关项目
* SoftHSMv2 - 用于测试的基于文件的 PKCS#11 实现 https://github.com/opendnssec/SoftHSMv2
* uts-server - 用于测试的时间戳服务器 https://github.com/kakwa/uts-server
* osslsigncode - 使用 openssl 签署 EXE、MSI 和 CAB 文件 https://sourceforge.net/projects/osslsigncode/
* fb-util-for-appx - 构建已签名的 APPX 档案文件 https://github.com/facebook/fb-util-for-appx
* OpenVsixSignTool - 使用 Azure key vault 签署 VSIX 扩展 https://github.com/vcsjones/OpenVsixSignTool
# 参考规范
* PE/COFF 规范 - https://www.microsoft.com/en-us/download/details.aspx?id=19509
* Authenticode PE 规范 - http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx
* Microsoft ClickOnce 清单结构 - https://msdn.microsoft.com/en-us/library/dd947276(v=office.12).aspx
* Microsoft 复合文件格式(用于 MSI)- https://msdn.microsoft.com/en-us/library/dd942138.aspx
* 来自 OpenOffice 的复合文档格式的备选参考 - https://www.openoffice.org/sc/compdocfileformat.pdf
标签:CVE, EVTX分析, HSM, 代码签名, 底层编程, 批量测试, 数字签名, 日志审计, 跨平台工具, 软件供应链