LoginSignup
36
37

More than 5 years have passed since last update.

Volley でオレオレ証明書の検証スキップ

Last updated at Posted at 2014-08-05

業務で Android アプリを作成していると development (開発) サーバなどで所謂独自 (オレオレ) 証明書を使っていることがよくある。普通に HTTPS アクセスしに行くと SSLHandshakeException がスローされ失敗する。その為証明書検証をスキップして接続する必要が出てくる。当然本番環境ではそのような SSL 証明書は使用されないので、開発環境の為だけの 本来の開発と関係ない作業 をやらされるのが辛い。手っ取り早くやっつけたいところだ。

Volley でどうやるのか分からなかったので調べてみた。Volley.newRequestQueue() に詰める HurlStack インスタンスに対してオレオレ証明の検証をスキップする SSLSocketFactory を詰めるといいようだ。

private static SSLSocketFactory getAllAllowsSocketFactory() {
    try {
        // ホスト名検証をスキップする
        HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
            @Override
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        });

        // 証明書検証スキップする空の TrustManager
        final TrustManager[] manager = {new X509TrustManager() {

            @Override
            public X509Certificate[] getAcceptedIssuers() {
                return new X509Certificate[0];
            }

            @Override
            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                // do nothing
            }

            @Override
            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                // do nothing
            }
        }};
        SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, manager, null);
        HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
        return sslContext.getSocketFactory();
    } catch (NoSuchAlgorithmException | KeyManagementException e) {
        throw new AndroidRuntimeException(e);
    }
}

このメソッドを以下のように使用する:

final HurlStack stack = new HurlStack(null, getAllAllowsSocketFactory());

// アプリケーションレベルで Singleton 保持するのがよい
sQueue = Volley.newRequestQueue(context, stack);
36
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
37