Appleの署名
関連項目:
Follow these instructions to sign Apple binaries directly with productsign and codesign while your keys are stored in Software Trust Manager. Alternatively, follow the simplified signing workflow in Sign with SMCTL and CryptoTokenKit.
How does SMCTL simplify signing?
Below are the differences in sign commands:
SMCTL | codesign and productsign |
---|---|
Provide the Software Trust Managerkeypair alias associated with your Apple certificate. Keypair alias example: | Provide the ID associated with your Apple certificate. Apple ID example: |
Your keys are automatically added to the token when you sign. | You manually have to add a new token and add the keys you want to sign with. |
開始する前に
CryptoTokenKitクライアントをDigiCert Oneプラットフォームから既にセットアップしていることを確認します。DigiCert® Software Trust Manager CryptoTokenKit を確認します。
Apple Developer ID Application certificate (for codesign)
Apple Developer ID Installer certificate (for productsign)
Compatibility
Apple signing is compatible with:
CPU | Operating system |
---|---|
M1 | Monterey |
Intel | Big Sur |
Catalina | |
Mojave | |
Monterey |
Apple certificates
The following Apple certificates are required to sign these files with codesign and productsign.
Apple certificate | Signing tool | Files |
---|---|---|
codesign | .app | |
.dmg | ||
productsign | .pkg |
Identify your Apple ID
The Apple ID associated with your Apple certificate is required in sign commands.
To identify your Apple ID, run the following command in the CryptoTokenKit CLI:
security export-smartcard
ヒント
In the output locate the following information:
The Developer ID Application required for codesign commands can be found in:
labl : "Developer ID Application: Example, Inc (DHPK3B67QS)"
The Developer ID Installer required for codesign commands can be found in:
labl : "Developer ID Installer: Example, Inc (ZDPK4W45RP)"
Appleコマンド
これらの2つのコマンドを使用して、サポートされている、または認識されているあらゆるタイプのAppleのバイナリに署名します。
codesign
Codesignコマンドは、Apple実行可能形式を示す.app拡張子に署名するために使用されます。
codesign --sign "<Developer ID Application>" "<Path to .app or .dmg file>"
注記
Useful parameters for codesign:
Shortcut | Parameter | Description |
---|---|---|
--entitlements | Take the file at the given path and embed its contents in the signature as entitlement data. | |
--deep | Sign nested code content such as helpers, frameworks, and plug-ins. | |
-f | --force | Replace any existing signature if the file is already signed. Without this parameter, signing will fail if the file is already signed. |
-v | --verify | Verify signature. This parameter acts as --verbose. |
-v | --verbose | Sets (with a numeric value) or increments the verbosity level of output. Without the verbose parameter, no output is produced upon success. If no other options request a different action, the first -v encountered will be interpreted as --verify instead (and does not increase verbosity). |
-o | --options | Specify a set of option flags to be embedded in the code signature. Example: |
productsign
productsignコマンドは、.pkg および .dmg ファイル拡張子に署名するために使用されます。これらは各々、AppleアプリケーションインストーラとApple Macアプリストア経由のリリースバイナリ配布可能ファイルを示しています。
productsign -–sign “<Developer ID Installer>” <Path to .pkg file> <Path to store signed file>
トラブルシューティング
The pluginkit
command should show the Secure Software Manager TokenExtension driver after starting the Digicert SSM Signing Clients.app. If it does not:
Digicert SSM Signing Clients.appを起動後ろに、pluginkitコマンドに“DigiCert® Software Trust Manager” TokenExtension ドライバが表示されるはずです。表示されない場合は、Digicert SSM Signing Clients.appを削除してください。MacOS を再起動し、アプリを再インストールしてからもう一度やり直してください。
Reinstall Digicert SSM Signing Clients.app.
Restart your MacOS and retry the
pluginkit
command .
TokenExtension ドライバを手動で削除します。
pluginkit -r “/Applications/Digicert SSM Signing Clients.app/Contents/PlugIns/TokenExtension.appx”
ログは、Appleのロギンググレームワークで書かれています。以下を使ってこれらを確認します。
To check the logs for DigiCert SSM Signing Clients:
log stream | grep Digicert SSM Signing Clients
To check the logs of the token:
log stream | grep TokenExtension
Codesign や productign コマンドの詳細については、man コマンドを実行します
To see more details about codesign, run:
man codesign
To see more details about productsign, run:
man productsign
ホスト、APIキー、クライアント証明書パスワード、プロキシ設定が正しいことを確認します。サーバから受け取ったエラーメッセージを確認するためにログを探します。