У меня есть клиент-серверное приложение (клиент Android, сервер Apache Http), работающее через взаимную аутентификацию (TLS 1.2). Проблема: Иногда происходит сбой подключения (входа в систему) с ошибкой SSL.
Это работает:
- Зарегистрируйте клиентский сертификат
- Авторизоваться
Это не работает:
- Зарегистрируйте клиентский сертификат
- Авторизоваться
- Удалить сертификат клиента
- Зарегистрируйте (тот же) сертификат клиента
- Авторизоваться
Примечание. Завершение работы приложения после шага 4, а затем его запуск и выполнение шага 5 работает.
Возможные объяснения, которые я могу придумать:
- Некоторые старые ресурсы используются повторно (например, старый сертификат клиента). Похоже, что все необходимое (OkHttpClient и т. Д.) Повторно создается, как и ожидалось.
- Повторное согласование 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
Есть какие-нибудь подсказки, что может быть не так, или предложения, что делать, чтобы разобраться в этом?