問題タブ [keychain]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - キーチェーンなしで秘密鍵ACLにコードサインを追加する
安定したiPhoneアプリの継続的なビルド/統合をセットアップしようとしています。
私は持っています:
- 専用のMacMini。
- 「ビルド」という名前のユーザーアカウント
- Hudsonは、/ Users / build / Library / LaunchAgentsにplistをドロップすることにより、ビルド用のLaunchAgentとして設定します
- ハドソンとして実行されているシステム全体のLaunchDaemonとして試行しましたが、ビルドユーザーのログインキーチェーンにアクセスできませんでした。心の痛みに満ちた長い物語。
- システムは、起動時に「ビルド」に自動的にログインするように設定されているため、ハドソンは実行を開始します。
大きな問題は、コード署名とキーチェーンです。
クライアントの開発者IDに代わってコードを作成するため、いくつかの開発者IDがあり、さらに追加する予定です。
Miniを真っ暗な部屋に置き、決して見ないようにしたいのですが、開発者IDを使用して初めてビルドするときに、コードサインが開発者IDにアクセスすることを常に許可するかどうかを尋ねるGUIダイアログがポップアップ表示されます。
そうすると、そのダイアログボックスは、コードサインが許可されるようにキーチェーンアクセス制御リスト(ACL)を変更します。
これを表示するには、キーチェーンアクセスを開き、証明書を展開し、秘密鍵を選択して右クリックし、[情報を見る]を選択して、[アクセス制御]タブに切り替えます。「バージン」キーは、「常に許可する」アプリケーションリストにのみキーチェーンアクセスがあります。ダイアログボックスで使用および確認したものには、コードサインもあります。
このボックスは、Unixフォルダを非表示にする標準のFinderファイルピッカーを取得することを除いて、アプリケーションを追加する方法を提供します。/ usr / bin/codesignに移動する方法はありません。したがって、手動で追加することはできません。
誰かがこれを回避する方法を知っていますか?
「セキュリティインポート」の-Tスイッチを使用する1つの方法を知っていますが、最初にキーをインポートするときにACLを指定する必要があるため、キーチェーンGUIで追加されたキーはすべて破棄して再インポートする必要があります。あまりいいとは言えません。
cocoa - 1 つの CFReadStream で kCFStreamSSLValidatesCertificateChain を設定すると、他の CFReadStreams が証明書チェーンを検証しなくなります
以下の iOS UIViewController コードでは、自己署名証明書を使用するサーバーに接続しています。この自己署名証明書は、信頼 API を使用して手動で確認する方法と、アプリのキーチェーンに自己署名証明書を追加して自動的に確認する方法の 2 通りの方法で確認できます。
残念ながら、CFReadStream を作成し、kCFStreamSSLValidatesCertificateChain を kBooleanFalse に設定した後、その後作成するすべての CFReadStream はその証明書チェーンを検証しません。どこかでコードのクリーンアップに失敗していますか? もしそうなら、私は喜んでこの質問を API のクリーンアップに特化したものに再定式化します。
iphone - distribution_identity.cer をキーチェーン アクセスにインポートできない
私はこの同じ問題を何度も繰り返しています。私はiPhone用のアプリを開発しており、すでにdeveloper.cerをキーチェーンアクセスにインポートしており、キーの1つでキーチェーンアクセスに表示されました。しかし、後でディストリビューション プロビジョニング プロファイルを作成し、それを xcode にインポートします。エラーがあります(詳細は写真を参照)。そこで、Apple プロビジョニング ポータルにアクセスして、配布証明書を見つけます。私はそれをダウンロードし、キーチェーン アクセスに移動し、[ファイル] > [アイテムのインポート] をクリックします... ダウンロード フォルダーから自分の distribution_identity.cer をクリックしても何も起こりません。エラーも何もありません。しかし、「証明書」タブを見ると、配布証明書が表示されます。しかし、他のようなキーではありません。助けてください!!!! xCODE のエラー。
iphone - Apple KeyChainItemWrapper を使用した iPhone キーチェーンへの書き込み
Apple の KeyChainItemWrapper クラスを使用して、iPhone キー チェーンに書き込みました。最初に、識別子を使用してキー チェーンに書き込むことができました。検索も完璧に機能します。ただし、この識別子を変更したところ、2 回目以降は iPhone キー チェーンで別の識別子を使用して kSecValueData に値を書き込むことができなくなりました。ただし、最初は機能しますが、その後は別の識別子では機能しません。ここで何が問題になる可能性がありますか?
ありがとうございました
ios - iOSキーチェーンサービス:kSecAttrGeneric Keyに許可される特定の値のみ?
このAppleサンプルコードで提供されているKeychainWrapperクラスを使用しようとしています:https ://developer.apple.com/library/content/samplecode/GenericKeychain/
サンプルアプリでは、クラスには次のように開始する次のinitメソッドがあります。
サンプルアプリでは、識別子文字列に2つの値を使用します。「パスワード」と「アカウント番号」。コードにクラスを実装するときに、いくつかのカスタム識別子を使用しましたが、コードが機能しませんでした。SecItemAdd()の呼び出しが失敗しました。いくつかのテストの結果、識別子に「パスワード」と「アカウント番号」以外の値を使用しても機能しないようです。
許可されている値や、キーチェーンアイテムのカスタム識別子を使用できるかどうかを知っている人はいますか?
android - Android のユーザー資格情報に iOS のキーチェーンに相当するものはありますか?
AndroidにiOSのキーチェーンに相当するものはありますか?
Preferences APIについての私の理解では、それは暗号化されていません。私のアプリケーションでは、これらの資格情報がデバイス間で永続化されているかどうかは問題ではありません (つまり、Android の iPhone のようなキーチェーンとは異なるユースケースですか? )
KeyStore APIも調べましたが、ユーザー資格情報の実際のストレージはアプリケーション開発者に任されているようです。
objective-c - キーチェーン許可ダイアログを無効にしますか?
アプリケーションがキーチェーン データにアクセスするたびにポップアップするキーチェーン ダイアログを無効にすることはできないのでしょうか。私のアプリは、入力されたパスワードが正しいかどうかを確認するために、TextField の文字列をキーチェーン エントリと比較します。
正常に動作しますが、アクセス許可を求めます。
この動作を回避するにはどうすればよいですか?
よろしく、 エイドリアン
c# - Apple キーチェーンを取得して、Bouncy Castle .NET で作成された PKCS12 (.p12) ストアを認識する
私たちの組織は、複数のクライアント向けに安定した iOS アプリケーションを管理しています。つまり、多くの異なる開発者 ID 証明書とプッシュ通知証明書を扱っています。
Bouncy Castle C# Crypto APIを使用して、プッシュ通知用の証明書と秘密鍵の管理を簡素化し、すべてのプッシュ通知証明書のキーチェーンを本質的に不要にすることに成功しました。
これを開発者のアイデンティティ証明書に拡張したいと思います。目標は、開発者 ID ごとにすべての秘密鍵と証明書情報をデータベースに格納することです。次に、新しい開発者またはビルド マシンをプロビジョニングする必要がある場合、サーバー側のコードは、ターゲット Mac のキーチェーンにインポートできる 1 つのパスワードを含む 1 つの p12 アーカイブにすべての証明書と秘密鍵をラップできます。
残念ながら、Mac キーチェーンは、私が生成している p12 ファイルを好みません。これらのファイルを Windows 証明書マネージャーに正常にインポートできるため、これは面倒です。
私が使用しているコード (重要な部分) は次のようになります。
私が言ったように、これは Windows でのインポートにはうまく機能しますが、Mac キーチェーンにインポートするときは非常に一般的なエラーで失敗します。
キーチェーンで生成された p12 と自分で生成した p12 ファイルをロードするときに確認できる大きな違いが 1 つありますが、これが原因かどうかはわかりません。
Mac キーチェーンで生成された p12 を Bouncy Castle PKCS12Store にロードし、キーチェーン p12 でキーを調べると、証明書と秘密キーの両方にキー「1.2.840.113549.1.9.21」の属性があり、値は同等です。 (値 #af8a1d6891efeb32756c12b7bdd96b5ec673e11e を持つ DerOctetString)。
生成された p12 ファイルに対して同じことを行うと、秘密鍵には「1.2.840.113549.1.9.21」属性が含まれますが、証明書には含まれません。
"1.2.840.113549.1.9.21"をGoogleで検索すると、この OID が PKCS_12_LOCAL_KEY_ID を意味することがわかります。私の唯一の理論は、キーチェーンがこれに依存して証明書と秘密鍵を照合し、生成されたファイルにはこれがないため、失敗するということです。
ただし、これらの値を Hashtable に追加してから、属性 hashtable を取る CertificateEntry コンストラクターを使用してみました。それを行ってからバイトを保存してからバイトをリロードすると、その属性が再び失われます。
だから私は困惑しています。この属性は、Bouncy Castle API の不具合でしょうか? 多分私が間違っていることがあります。おそらく、キーチェーンには、受信する p12 ファイルに対してばかげた非標準の要件があります。いずれにせよ、提供できるヘルプは大歓迎です。
iphone - 1つのXcodeオーガナイザーに複数の証明書/プロビジョニングプロファイルがありますか?
ここにはいくつかの同様の質問がありますが、私の基本的な質問に答えることはできませんでした。
キーチェーンに2つの別個の開発者証明書を持ち、オーガナイザーに2つの対応する配布プロファイルを持つことは可能ですか?
私は自分の(作業中の)開発者証明書と自分のiPhoneアプリのプロビジョニングプロファイルを持っています。これで、クライアントのプロジェクトが終了しました。彼の開発者アカウント/証明書/プロビジョニングプロファイルを使用して、彼のアプリを彼のアカウントのアプリストアに送信したいと思います。
それも可能ですか?
これまでのところ、彼の証明書をダウンロードしてインストールすると、キーチェーンに表示され、オーガナイザーにプロビジョニングプロファイルをインストールしましたが、オーガナイザーから「このプロファイルに一致する有効な署名IDがキーチェーンに見つかりませんでした」と表示されます。同様に、アーカイブのビルドは失敗します。
オーガナイザーに自分の証明書ではなくクライアントの証明書を使用するように指示する方法が見つかりませんでした。これが問題だと思います。
助けてくれてありがとう!
iphone - アプリ内購入のレシートをアプリのキーチェーンに保存する
以前にアプリ内購入を実装したことがないので、MKStoreKit ラッパーを使用して実装しました。MKStoreKit はすべてのレシートを UserDefaults .plist に BOOL として保持するため、海賊版がアプリ内購入を「ひびの入った」状態で配布するのは非常に簡単です。最初の購入が行われると、バンドルを配布し、.plist を再作成して IAP のロック解除を有効にすることができます。
MKStoreKit を拡張して、iOS キーチェーンに In App Purchase 検証データを作成したいと思います。有料ユーザーにとってこれが失敗する、信頼性が低い、またはこれを行うことが全体的に悪い考えであるその他の理由はありますか? 著作権侵害が避けられないことは理解しており、有料ユーザーを疎外したくはありませんが、UserDefaults .plist はバイパスするのに簡単すぎると感じています。
私のシナリオでは、購入時に単純な文字列がキーチェーンに入れられます。そうすれば、バイナリが配布されても、ロック解除可能なものはまだ有効になっていません。確かに、回避策を考え出すことは可能ですが、もう少し努力が必要で、TRUE/FALSE フラグを見つけて、常に正しい値を返す方法を知る必要があります。難読化することで、追跡を少し難しくすることさえできました。
あなたのすべての洞察に感謝し、義務的な必然的な著作権侵害、それに対処する返信を避けた回答に感謝します. 私は、このソリューションの技術的な実行可能性にもっと興味があります。