Electron でWindowsへのコード署名をCI/CDで行うことはもはや無理っぽい の続きです。心を無にしてローカルからbuild&publishできるように設定を行いました。
下準備
まず単純に署名ができるか試します。USBトークンを挿し、継続ログオンを有効にした状態で、developer powershellなどから署名します。{タイムスタンプサーバー}には代理店から指定されたURL、{発行先(Issued to)}は証明書のIssued to文字列を入れます。
signtool.exe sign /tr {タイムスタンプサーバー} /fd sha256 /td sha256 /n "{発行先(Issued to)} test.exe
無事完了したらファイルを右クリック→プロパティで、デジタル署名のタブを確認し、正しく署名出来ているかを確認します。
Electron Forge
forge.config.js で、maker-squirrelのconfigに以下を追加します。
いままで certificateFile, certificatePasswordを設定していた場合はクリアしておきます。
{
name: '@electron-forge/maker-squirrel',
config: (arch) => ({
signWithParams: '/tr {タイムスタンプサーバー} /fd sha256 /td sha256 /n "{発行先(Issued to)}"',
})
},
この結果、signtool.exe sign /tr {タイムスタンプサーバー} /fd sha256 /td sha256 /n "{発行先(Issued to)} インストーラー.exe
のような感じで署名が走ります。
electron-builder
win.certificateSubjectName を追加します。ちなみに証明書の検索は前方一致になっているっぽいので、完全に一致していなくても引っ張ってこれます。
いままでCSC_LINK、CSC_KEY_PASSWORDなどを環境変数でセットしていた場合はクリアしておきます。
"win": {
"target": "nsis",
"certificateSubjectName": "組織名"
}
独り言
今まではOVとEVで価格差が大きかったのでOVを使っていたのですが、HSM対応で軒並み値上げされて価格差が無くなったのとCICDはどちらでも使えなくなってしまったので、会社で使うならEV一択ですね、、。