問題タブ [secure-transport]
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.
ios - 警告を受けずにソケットを SSLConnectionRef にキャストするにはどうすればよいですか?
Apple のセキュア トランスポート フレームワークを使用してネットワークに TLS を実装する方法を学んでいますが、少し混乱しています。ソケット fds を SSLConnectionRefs にキャストするだけでよいと思いますが、そうすると警告が表示されCast to 'SSLConnectionRef' (aka 'const void *') from smaller integer type 'int'
ます。
void *
は よりも大きいので、ここで情報を失うことはありませんよint
ね? したがって、これは安全なはずです。コンパイラの警告が気になります。提案をありがとう。
ios - SSL メッセージを送信する前に SSL ハンドシェイクが失敗するのはなぜですか?
Apple のセキュア トランスポート API で TLS 1.2 を使用して、iOS クライアントを OS X サーバーに接続しようとしています。BSD ソケット通信は正しく機能していましたが、TLS でラップするのに苦労しています。Wireshark の出力からわかる限り、SSL ハンドシェイクは実際には開始されていないため、SSL を一方または他方で正しく設定していない可能性がありますが、何が間違っているのかわかりません。 .
サーバ側:
クライアント側:
試行されたハンドシェイクの Wireshark のダンプ:
Wireshark を使用して問題を診断しようとしましたが、SSL ハンドシェイク メッセージも表示されません。TCP 接続が確立された後、長さが 0 を超えるパケットがない状態ですぐに閉じられます。何が間違っているのでしょうか?
ios - サーバー証明書が拒否されるのはなぜですか?
TLS 1.2 を使用してアプリをサーバーに接続しようとしています。サーバーは、デバイスに既にインストールされている自己署名 CA 証明書によって署名された証明書を使用しています (CA 証明書を自分自身に電子メールで送信し、タップしました。現在、[設定] -> [一般] -> [プロファイル] の下に表示されます)。これは以前はアプリで機能していましたが、使用している CA 証明書を変更したため、サーバーの証明書も更新しました。現在、SSL エラーが発生しています。
私が見ているエラーは、クライアントerrSSLXCertChainInvalid
への呼び出しからのものです。SSLHandshake
私が知る限り、サーバー証明書は有効である必要があります。openssl verify -CAfile ca-cert.pem server-cert.pem
その ca- cert.pemOK
は、デバイスにインストールしたものと同じ CA 証明書です。
何か案は?ありがとう!
macos - OS X 証明書が署名であることを確認する方法
OpenSSL X509_verify と同様の SecureTransport API を使用して、証明書が特定のルート証明書によって署名されていることを確認する方法はありますか?
ios - サーバーのワイルドカード SSL 証明書が拒否されるのはなぜですか?
を使用NSURLConnection
してワイルドカード TLS 証明書 (「*.domain.com」など) を使用してサーバーに接続していますが、 のメソッドを呼び出すとSecTrustEvaluate
、NSURLConnectionDelegate
証明-connection:willSendRequestForAuthenticationChallenge:
書が無効として拒否されます。完全に指定された TLS 証明書 (「server2.domain.com」など) を持つ別のサーバーが受け入れられます。どちらの証明書も同じ CA によって発行されており、CA 証明書をデバイスの信頼できる証明書リストに追加しました。
iPhone / iOS 8.1 の Safari から同じ動作が見られます。ワイルドカード証明書を持つサーバーは、信頼されていない証明書を持っていると報告されますが、他のサーバーは正常に動作します。そのため、iOS のデフォルトの証明書検証はワイルドカード証明書を拒否しているようです。これは事実ですか?
SecEvaluateTrust
ワイルドカード証明書を許可するように指示する方法はありますか? これが私の抜粋です-connection:willSendRequestForAuthenticationChallenge:
編集私たちのソフトウェアの Android バージョンはワイルドカード証明書を問題なく受け入れるので、ここで行われている iOS の証明書処理に固有の何かがあるのではないかと思います。Android クライアントはBrowserCompatHostnameVerifier
、証明書を検証するために使用しています。これは、私が理解している限りSecPolicyCreateSSL
、ブラウザーと同じ証明書のチェックを実行するのと同じ機能を実行します。
macos - 完全な証明書チェーンがセキュア トランスポート ピアに確実に提供されるようにする
Apple の Secure Transport API は関数 を定義しておりSSLSetCertificate
、そのcertRefs
パラメータは証明書の配列です。ドキュメントには次のように記載されています(強調を追加):
リーフ証明書とそれに対応する秘密鍵を識別するオブジェクトに配置
certRefs[0]
する必要があります。SecIdentityRef
ルート証明書の指定はオプションです。指定されていない場合は、ここで指定された証明書チェーンを検証するルート証明書が、トラスト アンカー証明書のシステム全体のセットに存在する必要があります。
「ルート証明書が存在する必要があります」と書かれていますが、そのように見つかった信頼チェーンが実際に SSL ピアに提供されるかどうかは明らかではありません(ただし、その要件が存在する他の理由を考えるのは困難です)。
完全な証明書チェーン(自己署名ルート、またはシステム トラスト アンカーに戻る) がピアに提供されるようにするにはどうすればよいでしょうか?
特に、すべての構成証明書をこのパラメーターに含める必要があり
certRefs
ますか (または関係がありませんか)?
バックグラウンド
この質問は、 ServerFault に関する以前の投稿に続きます。RTFS を使用することで、slapdがホストの ID 証明書のみを使用して呼び出し 、セキュア トランスポートに証明書チェーンを提供しようとする段階がないことは明らかです。これが問題の原因である可能性があります。
SSLSetCertificate
https - SSLRead がハングし、0 バイトの読み取りで返されます
SecureTransport を使用して、HTTPS 経由で Google Places API と通信しています。ただし、応答を読み取ると、途中で SSLRead ルーチンが最初に数分間ハングし、その後ゼロバイトの読み取りで返されるため、不完全な応答が残ります。どうなり得るか?
ios - Swift の BSD ソケットで Secure Transport TLS を使用するにはどうすればよいですか?
Swift を使用して BSD ソケットでセキュア トランスポートを使用しようとしています。それは十分に単純であるように思えますが、私はそれを機能させることができず、この件に関するドキュメントはほとんどありません.
問題を単純な「ソケット」クラスに要約しました。これにより、(私の知る限りでは) セキュア トランスポートの要件が満たされました。
単純なインスタンスを作成して、非 TLS ソケット通信をテストしました。
netcatを使用して、ターゲットマシンでエコーサーバーを実行します。これはうまくいきます。
Secure Transport の TLS でソケットをラップしようとすると (makeSecure() メソッドを呼び出す)、SSLHandshake(...) の呼び出しで EXC_BAD_ADDRESS(code=2, address=...) エラーでクラッシュします。ここで私が見逃しているものについて何か指針を持っている人はいますか?
編集
コンソールが出力するのを見ることができます:
編集2
Xcode 7 ベータ版の Swift 2 で動作するようになりました。下記参照。