Получить сертификат SSL от HttpURLConnection - PullRequest
0 голосов
/ 13 декабря 2018

Я работаю с Android Things Raspberry Pi.
Мне нужно, чтобы дата и время обновлялись как можно быстрее, но ОС занимает примерно 50 секунд, это слишком медленно для моей потребности.
Iиспользовал ipgeolocation службы и lib для получения текущего времени.
Проблема заключается в том, что до того, как ОС установит дату, запрос http для получения даты и времени завершится неудачей: HttpURLConnection используется не загружает правильный сертификат SSL.После того, как дата обновлена ​​ОС, моя попытка получить дату работает: я могу получить дату вручную, после того, как она была установлена ​​ОС ...

Так что я хотел бы знать, какой сертификат используетсяОС, распакуйте его и вручную используйте его с моим HttpURLConnection, чтобы запросить дату и время ПЕРЕД ОС.

Я нашел, как сделать запрос с определенным сертификатом, моя проблема в том, что я ненайти тот, который используется ОС автоматически.

Есть ли способ узнать, какой сертификат автоматически используется ОС для HttpURLConnection?

Спасибо за чтение

1 Ответ

0 голосов
/ 14 декабря 2018

Мне нужно, чтобы дата и время обновлялись как можно быстрее, но ОС занимает примерно 50 секунд, это слишком медленно для моих нужд.

Если вашему устройству требуется точное времяпрежде чем система получит возможность автоматически обновляться из сети, я бы порекомендовал добавить в проект часы реального времени с батарейным питанием, например DS3231 .Вы можете использовать это вместе с TimeManager API, чтобы вручную установить системное время при загрузке устройства и получить разумное приближение до синхронизации сетевого времени.

Итак, яхотел бы знать, какой сертификат используется ОС, распаковать его и вручную использовать с моим HttpURLConnection, чтобы запросить дату и время ПЕРЕД ОС.

Это не совсем так, как работает проверка сертификата TLS,Цепочки сертификатов предоставляются сервером, к которому вы подключаетесь, и устройство Android просто проверяет, что цепочка действительна, соответствует доверенному корню и срок ее действия не истек.Сертификаты не прикрепляются к запросам, если это не требуется определенному серверу, и в этот момент сертификат будет исходить от поставщика API, а не от ОС устройства.Этот метод аутентификации используется не очень часто.

Проблема, с которой вы сталкиваетесь, заключается в том, что без точного времени, установленного перед выполнением запроса API, Android считает, что срок действия сертификата TLS, поступающего с сервера, истек.

...