WebPayへのHTTPS通信におけるRC4による暗号化方式を利用可能リストから除外します

WebPayでは 2016/02/15 より、APIエンドポイントへのHTTPS通信における暗号化方式から以下RC4を用いるCipherを利用可能なリストから除外します。

  • RSA_WITH_RC4_128_SHA
  • TLS_ECDHE_RSA_WITH_RC4_128_SHA

RC4は既に脆弱な暗号化方式であることが公知されており、昨年にはRFCでも禁止の旨が発表されています。 この暗号化方式を利用している場合、HTTPSであっても通信されている情報が漏洩の危険に曝されているものとご認識下さい。

除外による影響

サーバサイドへの影響

利用している環境は極めて稀であり、WebPayのほとんどの利用者においても影響はございません。

近日WebPayへの接続においてRC4の利用が認められた数件のユーザの方へは個別に連絡を差し上げておりますので、ご登録のメールアドレスをご確認下さい。

加えて、2016/02/13 までの間に新たにRC4による接続が確認されたユーザの方へは逐次ご連絡を差し上げます。

特に2016年以降WebPayのAPIへのリクエストを行っていない加盟店様におかれましては、今一度WebPayのAPIを利用する処理をお試し頂ければと存じます。

クライアントサイドへの影響

WebPay.jsやCheckoutHelperなどのJavaScriptのライブラリによりクライアントサイドからWebPayへリクエストを行われるケースも調査しておりますが、 Android 2.3以前の端末やWindows XPといった環境でないと該当しないため、現在のところRC4を用いるリクエストは確認されず、ユーザの方のお客様にも影響は無いものと予想されます。

RC4を利用可能な暗号化方式から除外済みのエンドポイント

RC4を先駆けて除外したエンドポイントを切り替えまでの間、公開しております。今回の切り替えに関してご不安がございます場合には、一度ご利用中のシステム側にて以下のエンドポイントへの接続をWebPayの利用をお試し頂ければと存じます。

  • https://api.webpay.jp:2443/v1

このエンドポイントは最終的に通常のWebPayのAPIへ接続されますので、実際にリクエストに従った処理が行われますことを十分にご留意の上、お試し下さい。 問題なく処理が可能である場合にはRC4が使えない状態での通信が問題なく行えることが確認出来ます。

WebPayのライブラリでエンドポイントを切り替える

WebPayにて公開しているライブラリでは、以下のような手順で接続先のエンドポイントを切り替えることが出来ます。secret_keyをそれぞれ非公開鍵に読み替えて下さい。

Ruby

1
2
3
require 'webpay'
webpay = WebPay.new('secret_key', { api_base: 'https://api.webpay.jp:2443/v1' })
webpay.customer.create(card: "tok_SampleCardToken")

PHP

1
2
3
4
require "vendor/autoload.php";
use WebPay\WebPay;
$webpay = new WebPay('secret_key', array('api_base' => 'https://api.webpay.jp:2443/v1'));
$webpay->customer->create(array("card"=>"tok_SampleCardToken"));

Java

1
2
3
4
5
6
7
8
9
import jp.webpay.webpay.WebPay;
WebPay webpay = new WebPay("secret_key", new java.util.HashMap<String, Object>() {
  {
    put("api_base", "https://api.webpay.jp:2443/v1");
  }
});
webpay.customer.createRequest()
  .card("tok_SampleCardToken")
  .execute();

Python

1
2
3
import webpay
webpay = WebPay('secret_key', {'api_base': 'https://api.webpay.jp:2443/v1'})
webpay.customer.create(card="tok_SampleCardToken")

Node.js

1
2
3
var WebPay = require('webpay');
var client = new WebPay('secret_key', {'api_base': 'https://api.webpay.jp:2443/v1' );
webpay.customer.create({card: "tok_SampleCardToken"}, function(err, res) { });

Go

1
2
3
4
5
6
7
8
9
10
11
import (
    "fmt"
    webpay "github.com/webpay/webpay-go"
)
var client *WebPay
client = NewWebPayWithOptions("secret_key", map[string]interface{}{
    "api_base": "https://api.webpay.jp:2443/v1",
})
customer, err := client.Customer().CreateWithMap(map[string]interface{}{
    "card": "tok_SampleCardToken"
})

今後TLS バージョン1.0と1.1についても除外予定

今回はRC4についての除外ですが、今後クレジットカード情報を取り扱うセキュリティ基準の観点からTLSのバージョン1.2未満での接続についてもアナウンスの上除外する予定がございます。 こちらについては期日が定まり次第、1ヶ月の移行期間、検証環境を準備の上、ご案内差し上げます。

TLSv1.2未満での接続は、現在WebPayに対する数パーセントの加盟店様において該当しておりますため、この機会に今一度APIへの接続環境に関して事前に調査されることを推奨致します。