
Tomcat 8 をサービスとして起動するために作成した、権限のないユーザーがあります。Tomcat は Jenkins を実行します。これは、チームのメンバーが .ipa ファイルとプロビジョニング プロファイルをアップロードし、.ipa ファイルに再署名できるジョブを提供するために使用されます。Jenkins は、.ipa ファイルに再署名するたびにシェル スクリプトを実行します。このシェル スクリプトは最近更新され、現在はセキュリティ コマンドを呼び出していますが、その結果、次のエラーが発生します。
セキュリティ: 証明書のインポートに失敗しました: デフォルトのキーチェーンが見つかりませんでした。
権限のない Tomcat ユーザーのデフォルトのキーチェーンを設定する必要があります。
権限のないユーザーにデフォルトのキーチェーンを追加したり、そのユーザーにそのキーチェーンを使用させたりするにはどうすればよいですか?
コマンドを実行する必要があるのか、それとも tomcat.plist でキーチェーンを指定する必要があるのかわかりません。
答え1
回避策を見つけました。次の方法を使用して、新しいキーチェーンを動的に作成し、キーチェーンに証明書を追加し、後でキーチェーンを削除することができました。
security create-keychain -p temp "temp.keychain"
security add-certificates -k "temp.keychain" "ios_distribution.cer"
security unlock-keychain -p temp "temp.keychain"
security cms -D -k "temp.keychain" -i "blah.mobileprovision" > <entitlements>
...do some stuff...
security delete-keychain -h "temp.keychain"
権限のないユーザーのキーチェーンを設定する場合は、次のコマンドを使用できます。
default-keychain [-h] [-d user|system|common|dynamic] [-s [keychain]]
元。
default-keychain -h "temp.keychain"
権限のないユーザーによって実行されているシェル スクリプトからそのコマンドを実行できます (私が行っているように)。