2015-01-06 3 views
0

Я работаю над приложением M2M, где объем данных строго ограничен, и мобильный клиент должен настраиваться на TLS-соединении часто. Существует ли стандартный способ или наилучшая практика для того, чтобы клиент мог кэшировать цепочку сертификатов сервера, чтобы серверу не нужно было отправлять всю цепочку при каждой настройке соединения? Я могу думать о сервере, который не отправляет цепочку сертификатов (необязательно). Клиент работает как обычно, если он содержит цепочку в своем локальном кеше. Но тогда, как только сертификаты сервера истекают, клиент должен каким-то образом сообщить серверу, что он должен отправить по новой цепочке.Возможно получить цепочку сертификатов сервера TLS по запросу?

Есть ли возможность настроить популярные реализации TLS в apache или ngix описанным выше способом?

Большое спасибо за вашу помощь! Uli

+1

Как Apache, так и nginx поддерживают возобновление сеанса TLS (http://en.wikipedia.org/wiki/Transport_Layer_Security#Resumed_TLS_handshake), чтобы избежать накладных расходов на полное рукопожатие, можете ли вы использовать это в своем клиенте? – Iridium

+0

Да, мы рассматриваем возобновление сессии. Однако мы говорим о устройствах, которые подключаются к серверу несколько раз в день, и я хотел бы запретить устройствам обменивать цепочку сертификатов на неделю. Таким образом, при возобновлении сеанса серверу необходимо будет хранить состояние сеанса для потенциально тысяч устройств в течение одной недели. Я сомневаюсь, что apache или nginx могут справиться с этим, но у меня нет опыта из первых рук. –

ответ

2

Клиент не может запросить цепочку с сервера по требованию. Существует способ иметь URL-адрес внутри сертификата, где он может получить сертификат эмитентов, но затем клиент должен извлечь этот URL-адрес и загрузить сертификат по требованию. Некоторые настольные браузеры делают это, но большинство других стеков SSL этого не делают.

Но если повторное использование сеанса поддержки клиентов и серверов, сервер только отправил сертификат и цепочку для первого соединения в сеансе, но не при возобновлении сеанса.

+0

Спасибо за ваш ответ! В самом деле, кажется, сложно сказать серверу, когда отправлять сертификаты. Я надеялся, что первая неудачная попытка подключения из-за отсутствия сертификатов заставит сервер отправлять цепочку сертификатов во второй попытке подключения. В конце концов, появляется сообщение об ошибке TLS, указывающее отсутствие сертификатов. –

+0

Нет сообщения об ошибке TLS с указанием отсутствующих сертификатов. Существует только предупреждение «неизвестный ca», но некоторые клиенты просто закрываются (рукопожатие не удалось). Кроме того, это потребует, чтобы сервер каким-то образом обнаружил, что тот же клиент снова подключается, чтобы отправить полную цепочку при повторном запуске. –

Смежные вопросы