2017年1月1日以降、Apple はすべての iOS アプリケーションに対し、すべてのネットワーク通信で HTTPS を強制する App Transport Security (ATS) の使用を義務付けています。ATS 検証に合格するには、ご利用の証明書と Web サーバーが特定の暗号化要件を満たす必要があります。
Alibaba Cloud CDN および Server Load Balancer (SLB) は、すでに ATS 要件を満たすように構成されています。
証明書の要件
次の表は、ATS が証明書とサーバー構成に求める要件をまとめたものです。
| 要件 | 詳細 |
|---|---|
| 認証局 (CA) | GlobalSign の組織検証 (OV) または拡張検証 (EV) 証明書を使用します。 GlobalSign の OV または EV デジタル証明書を使用することを推奨します。 |
| ハッシュアルゴリズム | SHA-256 以降。GlobalSign および Entrust 証明書はこの要件を満たしています。 |
| キー長 | 2048 ビット RSA 以上。CSR の生成に [自動] を選択した場合、システムが自動的に 2048 ビット RSA キーを生成します。 [手動] を選択した場合は、2048 ビット以上を使用してください。 |
| TLS プロトコル | TLS 1.2 はご利用の Web サーバーで有効にする必要があります。「サーバーの TLS 1.2 要件」をご参照ください。 |
| 暗号スイート | 少なくとも 1 つの ATS で受け入れられる暗号スイートを有効にする必要があります。「許可される暗号スイート」をご参照ください。 |
サーバーの TLS 1.2 要件
TLS 1.2 のサポートは、ご利用の Web サーバーソフトウェアとバージョンによって異なります。次の表は、各サーバータイプに必要な最小バージョンを示しています。
| サーバー | TLS 1.2 の最小バージョン | 備考 |
|---|---|---|
| Apache HTTP Server / NGINX | OpenSSL 1.0 | OpenSSL 1.0.1 以降を推奨します。 |
| Tomcat | Tomcat 7 + JDK 7.0 | |
| JRE ベースのサーバー | JDK 1.7 | |
| OpenSSL (スタンドアロン) | OpenSSL 1.0 | OpenSSL 1.0.1 以降を推奨します。 |
| IIS 7.5 | 任意のバージョン | TLS 1.2 はデフォルトで無効です。「IIS 7.5 で TLS 1.2 を有効にする」をご参照ください。 |
| IBM Domino Server | 9.0.1 FP3 | IBM Domino 9.0.1 FP5 以降を推奨します。 |
| IBM HTTP Server | 8.0 | IBM HTTP Server 8.5 以降を推奨します。 |
| WebLogic | 10.3.6 (Java 7 以降が必要) | WebLogic 10.3.6 には既知の SHA-256 互換性の問題があります。WebLogic 12 以降を推奨します。10.3.6 を使用する必要がある場合は、フロントエンドの Apache または NGINX HTTPS プロキシを追加するか、フロントエンドのロードバランサーを使用してください。 |
| WebSphere | V7.0.0.23、V8.0.0.3、または V8.5.0.0 | 「WebSphere で TLS 1.2 を使用するように構成する」をご参照ください。 |
IIS 7.5 および WebLogic 10.3.6 以外の Web サーバーでは、サーバーバージョンが上記の最小要件を満たしている場合、TLS 1.2 はデフォルトで有効になっています。
IIS 7.5 で TLS 1.2 を有効にする
IIS 7.5 では TLS 1.2 はデフォルトで無効です。有効にするには:
「ATS レジストリスクリプト」をダウンロードしてインポートします。
変更を適用するために、ご利用の Web サーバーを再起動またはログオフします。
ガイド付きウォークスルーについては、「256ビット暗号強度に対応した IIS 7.5 での TLS 1.2 の有効化」をご参照ください。または、IIS Crypto ビジュアルツールを使用して、レジストリを手動で編集することなく暗号スイートとプロトコルを構成することもできます。
許可される暗号スイート
ATS では、許可されるすべての暗号スイートが前方秘匿性をサポートしている必要があります。これにより、サーバーの秘密鍵が後で侵害された場合でも、記録されたトラフィックが復号化されるのを防ぎます。このため、許可されるすべてのスイートは ECDHE キー交換を使用します。
ご利用の Web サーバーで、次のいずれかの暗号スイートを有効にしてください。
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
構成例
次の例は、NGINX と Tomcat の ATS 関連属性を示しています。本番環境では、ここに示されている属性だけでなく、ご利用のサーバーの要件に基づいてすべての属性を構成してください。
NGINX
ssl_ciphers および ssl_protocols ディレクティブは、許可される暗号スイートと TLS バージョンを制御します。
server {
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
}Tomcat
ciphers、SSLProtocol、および SSLCipherSuite 属性は、<Connector> 要素内で暗号スイートとプロトコルを制御します。
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
scheme="https" secure="true"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
SSLProtocol="TLSv1.1+TLSv1.2+TLSv1.3"
SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4" />ATS 準拠の検証
サーバーを構成した後、macOS で次のコマンドを実行して、ご利用のエンドポイントが ATS 検証に合格するかどうかを確認します。
nscurl --ats-diagnostics --verbose <URL>