Skip to main content

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: Applesign

Provide the ID associated with your Apple certificate.

Apple ID example: DHPK4B64QS

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.

開始する前に

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

Developer ID Application

codesign

.app

.dmg

Developer ID Installer

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: --options runtime

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:

  1. Digicert SSM Signing Clients.appを起動後ろに、pluginkitコマンドに“DigiCert​​®​​ Software Trust Manager” TokenExtension ドライバが表示されるはずです。表示されない場合は、Digicert SSM Signing Clients.appを削除してください。MacOS を再起動し、アプリを再インストールしてからもう一度やり直してください。

    1. Reinstall Digicert SSM Signing Clients.app.

    2. Restart your MacOS and retry the pluginkit command .

  2. TokenExtension ドライバを手動で削除します。

    pluginkit -r “/Applications/Digicert SSM Signing Clients.app/Contents/PlugIns/TokenExtension.appx”
  3. ログは、Appleのロギンググレームワークで書かれています。以下を使ってこれらを確認します。

    1. To check the logs for DigiCert SSM Signing Clients:

      log stream | grep Digicert SSM Signing Clients
    2. To check the logs of the token:

      log stream | grep TokenExtension
  4. Codesign や productign コマンドの詳細については、man コマンドを実行します

    1. To see more details about codesign, run:

      man codesign
    2. To see more details about productsign, run:

      man productsign
  5. ホスト、APIキー、クライアント証明書パスワード、プロキシ設定が正しいことを確認します。サーバから受け取ったエラーメッセージを確認するためにログを探します。