概要
こんにちは、Security-Boardの戸田 薫です。
今回は、ヤフーの「TLS 1.2」への移行に関してお伝えします。
ヤフーでは、セキュリティを強化するために、「TLS 1.0」および「TLS 1.1」のサポートを終了し、より安全な「TLS 1.2」のみをサポートすることといたしました。Yahoo! デベロッパーネットワークが提供している WebAPIも「TLS 1.2」のみをサポート対象といたします。
つきましては、「TLS 1.2」のみをサポートする WebAPIの検証環境を用意いたしましたので、事前の動作確認にご活用ください。
影響
Yahoo!デベロッパーネットワークが提供しているWebAPIは、「TLS 1.0」と「TLS 1.1」のサポートを終了後、「TLS 1.2」に非対応のクライアント(パソコンのブラウザ、AndroidやiOSのアプリやブラウザ、サーバのプログラムなど)と通信できなくなります。
ブラウザの場合は、コンテンツを取得できず、接続できない旨を伝えるエラー画面が表示されます。サーバサイドのプログラムの場合には、WebAPIのサーバとのTLSのネゴシエーションでエラーになり、お使いのライブラリからエラーが返されます。
日程
Yahoo!デベロッパーネットワークでは、2018年10月上旬に「TLS 1.0」と「TLS 1.1」のサポートを終了する予定です。
それ以外のヤフーの全ウェブサービスは、一足早く2018年9月末までに「TLS 1.0」と「TLS 1.1」のサポートを終了するため、2018年9月末までに動作確認を実施していただくことを強く推奨いたします。
対応方法
ヤフーのWebAPIを利用しているプログラムが「TLS 1.2」で通信できるかご確認ください。「TLS 1.2」で通信できる場合は、対応は不要です。「TLS 1.2」で通信できない場合には、対応が必要です。
お使いの環境によって対応方法が異なります。対応方法の例を挙げます。
- 利用しているサーバのOSを最新のものにする
- 利用しているOSのOpenSSL等のパッケージをバージョンアップする
- 利用しているライブラリでTLSのバージョンを指定する
3つすべてを実施する必要はありません。多くの場合は、1の対応のみで解決するものと思われます。
検証環境
ヤフーでは、「TLS 1.2」の検証環境をご用意しています。
サービス環境※と検証環境の違いは以下のとおりです。利用できるTLSのバージョンが異なります。
TLSバージョン | TLS 1.0 | TLS 1.1 | TLS 1.2 |
---|---|---|---|
サービス環境 | ○ | ○ | ○ |
ヤフーの検証環境 | × | × | ○ |
※サービス環境とは、Yahoo!デベロッパーネットワークが提供し、通常お使いいただいているWebAPIの環境です。
「TLS 1.0」と「TLS 1.1」のサポート終了後は、サービス環境も検証環境と同じ動作となります。
検証環境の使い方
hostsの設定
検証環境のご利用にあたっては、以下のようにhostsの設定を変更してお試しください。
LinuxやFreeBSDであれば、 /etc/hosts を編集してください。
resolve オプションを利用できる curl コマンドで確認する場合は、 hosts の設定は不要です。
下記のhostsの設定は、ご自身の検証環境でお試しいただくことをお勧めいたします。サービスインしている本番環境での検証は、意図しない事故を伴う恐れがあります。
#ヤフーの検証環境のIPアドレス APIのFQDN
182.22.25.252 s.yimg.jp
183.79.62.172 shopping.yahooapis.jp
183.79.62.172 map.yahooapis.jp
183.79.62.172 jlp.yahooapis.jp
183.79.62.172 shinsai.yahooapis.jp
検証後は、hostsの設定を元に戻してください。
curl コマンドでのテスト
curl コマンドを利用して、検証環境に接続できたかご確認いただけます。検証環境では「TLS 1.2」のみ利用可能ですので、「TLS 1.0」または「TLS 1.1」で接続した場合には「SSL connect error」が表示されます。
kaoru $ curl --tlsv1.2 https://s.yimg.jp/images/security/tls.txt
OK
kaoru $ curl --tlsv1.1 https://s.yimg.jp/images/security/tls.txt
curl: (35) SSL connect error
kaoru $ curl --tlsv1.0 https://s.yimg.jp/images/security/tls.txt
curl: (35) SSL connect error
resolve オプションが利用できる curl コマンドであれば、hostsを設定せず、以下のようにして接続の可否をご確認いただけます。
kaoru $ curl --tlsv1.2 https://s.yimg.jp/images/security/tls.txt --resolve s.yimg.jp:443:182.22.25.252
OK
kaoru $ curl --tlsv1.1 https://s.yimg.jp/images/security/tls.txt --resolve s.yimg.jp:443:182.22.25.252
curl: (35) Encountered end of file
kaoru $ curl --tlsv1.0 https://s.yimg.jp/images/security/tls.txt --resolve s.yimg.jp:443:182.22.25.252
curl: (35) Encountered end of file
「OK」が表示された場合、ご対応いただく必要はありません。
PHP でのテスト
PHP で curl を利用して、ヤフーのWebAPIを呼び出している場合は、hosts を設定した後、以下のコマンドでご確認いただけます。
php -r '$c=curl_init("https://s.yimg.jp/imeages/security/tls.txt");curl_setopt($c,CURLOPT_RETURNTRANSFER,true);$r=curl_exec($c);if($r===FALSE){echo curl_error($c),PHP_EOL;}else{echo "OK",PHP_EOL;};'
通信ができる場合はOK
と表示されます。
通信ができない場合はSSL connect error
というエラーが表示されます。
「OK」が表示された場合、ご対応いただく必要はありません。
参考
- WebAPI以外のYahoo! JAPANのウェブサービスにおける「TLS 1.0」「TLS 1.1」のサポート終了については、Yahoo!セキュリティセンター をご確認ください。
- WebAPIについては、Yahoo!デベロッパーネットワーク をご参照ください。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました