Ошибка установления связи SSL с использованием клиентского сертификата и дооснащения

У меня есть клиент-серверное приложение (клиент Android, сервер Apache Http), работающее через взаимную аутентификацию (TLS 1.2). Проблема: Иногда происходит сбой подключения (входа в систему) с ошибкой SSL.

Это работает:

  1. Зарегистрируйте клиентский сертификат
  2. Авторизоваться

Это не работает:

  1. Зарегистрируйте клиентский сертификат
  2. Авторизоваться
  3. Удалить сертификат клиента
  4. Зарегистрируйте (тот же) сертификат клиента
  5. Авторизоваться

Примечание. Завершение работы приложения после шага 4, а затем его запуск и выполнение шага 5 работает.

Возможные объяснения, которые я могу придумать:

  1. Некоторые старые ресурсы используются повторно (например, старый сертификат клиента). Похоже, что все необходимое (OkHttpClient и т. Д.) Повторно создается, как и ожидалось.
  2. Повторное согласование SSL. Возможно, это не работает при использовании новых учетных данных? Есть ли способ его отключить?

Журналы Android (клиента):

02-11 15:58:29.827  21352-23374/com.mycompany E/com.mycompany.Connection﹕ ERROR Read error: ssl=0x99116c00: Failure in SSL library, usually a protocol error
    error:1409441B:SSL routines:SSL3_READ_BYTES:tlsv1 alert decrypt error (external/openssl/ssl/s3_pkt.c:1303 0x9928fa60:0x00000003)
    error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure (external/openssl/ssl/s3_pkt.c:1036 0xa613bcc5:0x00000000)
    retrofit.RetrofitError: Read error: ssl=0x99116c00: Failure in SSL library, usually a protocol error
    error:1409441B:SSL routines:SSL3_READ_BYTES:tlsv1 alert decrypt error (external/openssl/ssl/s3_pkt.c:1303 0x9928fa60:0x00000003)
    error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure (external/openssl/ssl/s3_pkt.c:1036 0xa613bcc5:0x00000000)

Журналы сервера:

[Thu Feb 11 14:58:16.736172 2016] [ssl:error] [pid 4424:tid 2088] [client 194.161.218.157:36836] AH02261: Re-negotiation handshake failed
[Thu Feb 11 14:58:16.736172 2016] [ssl:error] [pid 4424:tid 2088] SSL Library Error: error:0407006A:rsa routines:RSA_padding_check_PKCS1_type_1:block type is not 01
[Thu Feb 11 14:58:16.736172 2016] [ssl:error] [pid 4424:tid 2088] SSL Library Error: error:04067072:rsa routines:RSA_EAY_PUBLIC_DECRYPT:padding check failed
[Thu Feb 11 14:58:16.736172 2016] [ssl:error] [pid 4424:tid 2088] SSL Library Error: error:1408807B:SSL routines:ssl3_get_cert_verify:bad signature
[Thu Feb 11 14:59:24.655282 2016] [ssl:error] [pid 4424:tid 2088] [client 194.161.218.157:34530] AH02261: Re-negotiation handshake failed
[Thu Feb 11 14:59:24.655282 2016] [ssl:error] [pid 4424:tid 2088] SSL Library Error: error:04067084:rsa routines:RSA_EAY_PUBLIC_DECRYPT:data too large for modulus
[Thu Feb 11 14:59:24.655282 2016] [ssl:error] [pid 4424:tid 2088] SSL Library Error: error:1408807B:SSL routines:ssl3_get_cert_verify:bad signature

Мои настройки:
Версия Android 5.1.1
Модернизированная версия 1.9.0
Версия OkHttp 2.7.2
Версия HTTP-сервера Apache 2.4.17

Есть какие-нибудь подсказки, что может быть не так, или предложения, что делать, чтобы разобраться в этом?


person Alix    schedule 11.02.2016    source источник


Ответы (1)


Я обошел проблему, не установив явно ConnectionPool на остальном адаптере (таким образом, повторно используется тот же экземпляр по умолчанию).

person Alix    schedule 12.02.2016