LoginSignup
14
17

More than 5 years have passed since last update.

Retrofitで実装したRESTクライアントでオレオレ証明書を許可する

Last updated at Posted at 2015-07-15

「[Android] OkHTTP + Retrofit + RxAndroid で REST クライアントを実装する | Developers.IO」を参考にRetrofitを利用してRESTクライアントを実装していた時に、テスト環境の接続先が自己署名SSL証明書というよくあるアレだったためにやったことのメモです。

オレオレ証明書を許可するOkHttpClientの作成

OkHttpで認証・SSL通信・クッキー管理するTips - Qiitaほぼそのままです。(とりあえずエラーハンドリングは適当です)

@Override
public OkClient createOkClient() {
    OkHttpClient client = new OkHttpClient();
    final TrustManager[] trustManagers = new TrustManager[]{
            new X509TrustManager() {
                @Override
                public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                    // 特に何もしない
                }

                @Override
                public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                    // 特に何もしない
                }

                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
            }
    };
    try {
        final SSLContext sslContext = SSLContext.getInstance("SSL");
        sslContext.init(null, trustManagers, new java.security.SecureRandom());
        final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
        client.setSslSocketFactory(sslSocketFactory);
        client.setHostnameVerifier(new HostnameVerifier() {
            @Override
            public boolean verify(String hostname, SSLSession session) {
                // ホスト名の検証を行わない
                return true;
            }
        });
    } catch (NoSuchAlgorithmException | KeyManagementException e) {
        e.printStackTrace();
    }
    return new OkClient(client);
}

RestAdapterの作成

参考にしたコードにsetClient一行加えるだけです。

RestAdapter adapter = new RestAdapter.Builder()
                .setEndpoint("https://oreore.org")
                .setConverter(new GsonConverter(gson))
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .setClient(createOkClient())
                .build();
14
17
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
14
17