了解 YubiKey HSM 是什么以及如何用于身份验证,探索如何使用 YubiKey 保护代码签名证书。
你的代码签名证书如同软件的真实性的数字印章,确保其完整性与来源。它从受信任的证书颁发机构获取。
你可能已经明白,它的主要目的是验证你分发的软件确实来自你,且未被恶意黑客篡改。为强化其安全性,你可以使用 YubiKey 硬件令牌——一道防范未授权访问的强大屏障。
什么是 YubiKey?
YubiKey(ubiquitous key,无处不在的密钥)类似于 USB 闪存盘,是由 Yubico 创建的硬件安全模块,为你的在线账户提供额外安全。与短信验证码或应用生成的验证码等复杂认证方式不同,YubiKey 只需按一下按钮即可简化流程。每个 YubiKey 都带有唯一代码以确认你的身份,使黑客几乎无法攻破你的账户。这个小巧工具为各类平台(包括邮件、在线服务、应用、计算机甚至物理空间)的登录凭据提供多层保护,充当你信任的钥匙,防止潜在的账户接管并保护你的数字身份。借助 YubiKey,你可以放心在线存在已加固并免受未授权访问。
YubiKey 支持多种认证协议,包括 FIDO、PKI、OATH-HOTP 与 OpenPGP,简化了双因素认证并提供基于硬件的保护,同时被广泛支持,是开发人员与组织的可行选择。YubiKey 为不支持一次性密码的网站存储静态密码。目前 Google、Amazon 与 Twitter 均在其内外部账户中使用 YubiKey 设备。
我如何使用 YubiKey 进行身份验证?
尽管我们尽力,密码往往不足以保护我们免受黑客攻击——它们要么薄弱要么过于复杂难以记住,且泄露不可避免。为强化安全,我们转向双因素认证(2FA),你需要同时提供密码与另一种凭证来证明身份。YubiKey 这款小巧的硬件令牌让 2FA 变得轻松:只需插入并按下按钮,YubiKey 便生成一段独特且冗长的代码,为你的认证增添 robustness,且无需自己输入代码,既安全又便捷。
按以下步骤使用 YubiKey 进行身份验证:
步骤 1:将 YubiKey 插入设备的 USB 端口。
步骤 2:访问 Yubico.com/setup,在浏览器中导航至 Yubico 的设置页面,选择你的 YubiKey 设备。
步骤 3:应用选择。浏览受支持应用列表,仅选择你希望保护的应用。
步骤 4:遵循说明。Yubico 为每个应用提供清晰、用户友好的说明。本指南以 Google 为例:
— 将 YubiKey 添加到 Google:找到将 YubiKey 添加到 Google 账户的说明链接。
— 设备设置:插入 YubiKey 并在提示时按下其按钮。
— 权限请求:浏览器可能请求访问权限,予以授权。
— 确认:设置完成后,你将收到确认消息。
步骤 5:为 YubiKey 命名(可选)。若拥有多个 YubiKey,最好赋予不同名称以便识别。至此 YubiKey 设置完成,可在任意设备安全登录 Google 账户。为每个待保护账户重复这些简单步骤。
如何将 YubiKey 用于代码签名证书?
你的代码签名证书是解锁应用程序所受托信任的钥匙。若证书落入错误之手,网络犯罪分子便能伪造软件,危害用户安全并可能给你的声誉造成无法弥补的损害。黑客可能使用被盗代码签名证书签署恶意软件,使其看似合法。毫无戒备的用户信任已签名的证书,可能在不知情中安装有害应用,导致数据泄露、财务损失与法律后果。此类事件侵蚀对你品牌的信任,阻碍用户未来下载你的软件。为防止这种噩梦场景,你可能希望使用 YubiKey 等工具来保护代码签名证书。以下是将 YubiKey 用于代码签名证书的最佳实践:
安全的物理存储
将 YubiKey 视为代码签名安全珍贵的钥匙。将其存放在安全的物理位置,如带锁抽屉或保险箱,远离窥探与潜在盗窃,绝不无人看管,也绝不放在易接触区域以防未授权使用。
启用强 PIN
用强健的 PIN 或密码保护 YubiKey,这是防范未授权访问的第一道防线。选择独特且不易猜测的 PIN,避免使用"123456"或"password"等常见组合,为增加安全性优先使用更长的密码短语。
备份与吊销
创建代码签名证书的备份并安全存储。若 YubiKey 丢失、被盗或损坏,拥有备份可确保仍能访问代码签名能力,并从受损的 YubiKey 及时吊销证书。
离线使用
尽可能在离线模式下使用 YubiKey,即在不进行代码签名时将其与互联网或设备断开。离线操作可降低远程攻击风险,保护代码签名信息免受潜在黑客侵害。
定期维护与更新
对 YubiKey 执行定期检查与更新,确保其拥有最新固件与软件以防范潜在漏洞。定期维护使 YubiKey 保持最佳运行并增强其安全特性。
使用 YubiKey 进行代码签名的流程
使用 YubiKey 进行代码签名不应有压力。但为满足新的代码签名签名规则,在通过 FIPS 验证的 YubiKey 上生成并存储私钥至关重要。借助证明证书,你可验证私钥确实在 YubiKey 上生成。为便于说明,本指南分为两部分,涵盖使用 YubiKey Manager 创建密钥对、生成 CSR 及获取证明证书的流程。
YubiKey 生成 CSR 与证明的步骤
步骤 1:安装 YubiKey Manager——访问 Yubico 网站,下载适用于你的操作系统(Windows、Linux 或 macOS)的 YubiKey Manager 并依屏幕提示安装。
步骤 2:访问 YubiKey Manager 并配置证书——启动 YubiKey Manager,导航至 Applications > PIV。
步骤 3:生成密钥对与 CSR——点击"Configure Certificates",从选项中选择"Authentication (Slot 9a)"用于代码签名证书,点击"Generate"并选择"Certificate Signing Request (CSR)",按提示操作。
步骤 4:选择算法并输入主题名——选择算法(代码签名证书选 ECCP384)并为证书输入主题名。
步骤 5:生成 CSR 并提供信息——点击"Generate"并提供保存 CSR 的目录路径,输入管理密钥与 PIN。
步骤 6:准备终端或 PowerShell——Windows 以管理员身份打开 PowerShell;macOS 与 Linux 打开终端窗口。
步骤 7:导航至 YubiKey Manager 目录——将当前目录切换到 YubiKey Manager 文件路径:
Windows:
cd "C:\Program Files\Yubico\YubiKey Manager"
macOS:
cd /Applications/YubiKey\ Manager.app/Contents/MacOS
Linux:打开任意终端窗口(证明文件将保存在同一路径)。
步骤 8:生成证明证书——按操作系统执行命令:
Windows:
.\ykman.exe piv keys attest -F PEM 9a attestation.crt
macOS:
./ykman piv keys attest -F PEM 9a attestation.crt
Linux:
ykman piv keys attest -F PEM 9a attestation.crt
步骤 9:获取中间证书——执行命令导出中间证书:
Windows:
.\ykman.exe piv certificates export -F PEM f9 intermediateCA.crt
macOS:
./ykman piv certificates export -F PEM f9 intermediateCA.crt
Linux:
ykman piv certificates export -F PEM f9 intermediateCA.crt
步骤 10:编码证明证书——按以下步骤创建 base64 编码的证明文件:
Windows(CMD/PowerShell):
type attestation.crt intermediateCA.crt > attestation.pem
certutil -encode attestation.pem attestation.b64
findstr /v CERTIFICATE attestation.b64 > attestation.b64
Linux:
cat attestation.crt intermediateCA.crt > attestation.pem
base64 attestation.pem > attestation.b64
grep -v CERTIFICATE attestation.b64
步骤 11:完成流程——将 CSR 文件(CSR.txt 内容)与 base64 编码的证明(attestation.b64)提交至你的订单配置门户以完成流程。
如何在 YubiKey 5 FIPS 上安装代码签名证书
导入证书到 YubiKey
步骤 1:访问 YubiKey Manager 并导航至 PIV——启动 YubiKey Manager,导航至 Applications 部分,选择 PIV(个人身份验证)。
步骤 2:配置证书——在 PIV 部分找到并点击"Configure Certificates"设置。
步骤 3:选择正确的插槽——在 Configure Certificates 中选择与生成密钥对对应的 YubiKey 插槽对应的 Authentication 选项卡(若遵循上述 CSR 生成指南,则为 Slot 9a)。
步骤 4:导入证书——点击 Import 按钮,浏览找到证书颁发机构(CA)提供的代码签名证书文件并导入 YubiKey。
步骤 5:输入管理密钥——提示时输入 YubiKey 5 FIPS 设备的管理密钥;若尚未更改,勾选"Use default"复选框。
步骤 6:提供 PIN——输入 YubiKey 5 FIPS 设备的 PIN 并点击 OK 完成安装。
如何使用 YubiKey 用代码签名证书签署文件
步骤 1:准备并访问签名工具——你需要 Windows SDK 包中的 signtool.exe 工具:下载安装 Windows SDK,该包包含代码签名所需的 signtool.exe;通过文件资源管理器导航至路径 C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64(32 位系统调整为 x86,版本号依 SDK 版本调整)。
步骤 2:执行代码签名——以管理员权限启动命令提示符(CMD),使用 signtool.exe 签署文件:
signtool sign /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a "Path_to_the_file_you_wish_to_sign"
其中 /a 标志自动从 Windows 证书存储/USB 令牌选择最佳证书进行签名。时间戳服务器 URL 依证书颁发机构(CA)而异:Sectigo/Comodo 代码签名用 http://timestamp.sectigo.com,DigiCert 代码签名用 http://timestamp.digicert.com。
步骤 3:验证已签名文件——执行以下命令确保文件已成功签名:
signtool verify /pa "Path to the file you've signed"
结语
恭喜!这就是如何使用存储在 YubiKey 中的证书签署可执行文件。你可在可执行文件属性的"数字签名"选项卡中验证数字签名。若代码签名过程遇到问题,可断开并重新连接 YubiKey 进行排查。