web-dev-qa-db-ja.com

iOS、Android、およびOS X SHA-2のサポート(SSL / TLS証明書のコンテキストで)

現在 TLSの一部として使用されているSHA-1から移動 があるため、SHAを使用するために、Webサーバーとの間の転送中のトラフィックを保護するために使用されるSSL証明書を移動することを検討しています2。

しかし、クライアントサポートに関する情報を見つけることができません。 this によると、WindowsはSHA-2をサポートしてXP SP3に戻しますが、iOS、Android、およびOS Xのサポートに関する明確な情報を見つけることができませんでした。ここの誰かがこれらのソースへのリンクを提供できますか?

1
Josh

SSLでは、SHA-1またはSHA-256を使用できる2つの領域があります。

  • プロトコル自体 の特定の内臓では、内部「PRF」(ハンドシェイク中に使用される関数)および後続のデータ交換の整合性を保護します。
  • サーバーの証明書とそのCA証明書などの署名の一部として。

SSL 3.0、TLS 1.0およびTLS 1.1は、SHA-256ではなくMD5およびSHA-1を使用します。 SHA-1を段階的に廃止する場合は、TLS 1.2に切り替える必要がありますthis answer とそのコメントから、ブラウザによるTLS 1.2のサポートは規定されておらず、業界全体への浸透が遅いことがわかります。 WindowsでのIE XPは、TLS 1.2をサポートしません。特に、Androidベースのデバイスの多くは、古いバージョンのAndroidとそのブラウザーを使用しており、すぐには更新されません。さいわい、TLS 1.2サポートをアドバタイズするようにサーバーを構成できますが、クライアントがサポートしていない場合は、以前のバージョンにフォールバックします。これはSSLハンドシェイクの通常の動作であり、スムーズな移行を保証します。

2番目のポイントは、XP + SP3がSHA-256についてサポートすることです。つまり、基礎となるハッシュ関数としてSHA-256で署名された証明書です。これは機能します。 このページ digicert(商用CA)はSHA-256のサポートを主張しており、これは証明書でのSHA-256のサポートを意味します。 「ブラウザのサポート」と主張するときは、TLS 1.2ではなく証明書の検証について話します。そのページによると、証明書のSHA-256 は「どこでも」機能するようです。彼らはAndroidについて何も語っていませんが、AndroidがSHA-256をサポートできるのは、SHA-256が最初から内部的にサポートされているためです(SHA-256がわかっているJavaに基づいています)。長年)。

要約すると:証明書にSHA-256を使用できます。 (ほぼ)どこでも動作します。まだ require TLS 1.2はできません(クライアントブラウザーが多すぎるため処理できません)はサポートでき、以前のバージョン(内部でSHA-1を使用するもの)を禁止することを決定できます後日。

2
Tom Leek

Androidでの暗号スイートのサポート(SHA2のサポートを含む)は、次の場所にあります: https://developer.Android.com/reference/javax/net/ssl/SSLSocket.html

0
Eakraly