Обновить

В связи с интенсивным сокращением максимального срока действия TLS-сертификатов (пока что обещают 47 дней, но для всех и к 2030 году), коллеги саркастически поинтересовались, можно ли сделать так, чтобы сертификат выписывался на каждый TLS-запрос. Шутки - шутками, но сделать-то можно. И даже не требуется переделывать протокол TLS - есть готовое решение.

Если внимательно посмотреть на алгоритм TLS-хендшейка, то окажется, что секретный ключ, соответствующий открытому ключу из серверного сертификата, требуется там только один раз - для формирования подписи в сообщении CertificateVerify. Соответственно, секретного ключа от сертификата вообще может не быть на сервере, а сервер будет обращаться к некоторому подписывающему узлу, у которого этот ключ есть и который подтвердит TLS-сессию, подписав значение для CertificateVerify. Это вовсе не теоретическое рассуждение, именно так делается на практике, когда входящие соединения принимает прокси-провайдер (CDN, обычно), но передавать этому провайдеру секретные ключи от сертификатов для своих доменов клиент не желает. Первыми в промышленных масштабах такую услугу сделали в Cloudflare, более десяти лет назад. Называется Keyless SSL.

Так что, вместо возни с автоматическим перевыпуском суперкоротких сертификатов, центральный сервис может выдавать квитанции доступа на каждую TLS-сессию. Естественно, TLS-сертифкат сервера должен быть предъявлен раньше, чем отправлено сообщение с подписью CertificateVerify. Однако эти сообщения в TLS передаются сервером одной серией, поэтому, в процессе создания TLS-сессии, сервер сможет сразу же получить от центрального узла и сгенерированный только что сертификат, и соответствующую подпись, собрать это всё вместе и отправить клиенту.

Сертификат, таким образом, окончательно превратится в безотзывный тикет доступа, мгновенного действия, а сервер будет привязан к центральному провайдеру (можно совместить с крупными CDN, у которых и так есть собственные хорошо известные УЦ). Проверку совпадения подписей, серверной и на сертификате, будет всё так же проводить браузер (речь, напомню, про веб). В браузере ничего не нужно переделывать совсем: если сервер не смог предъявить корректную подпись в CertificateVerify - TLS-сессия браузером установлена не будет.

Это, если что, была минутка технологического юмора. Но вот то, что развитие инфраструктуры TLS-сертификатов в вебе движется в сторону тикетов доступа (или, скорее, квитанций) - отрицать всё сложнее.

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии5

Метод Каллана: я повторял предложения три года

Как курс английского, построенный на повторении, оказался самым полезным, что я изучал, — и почему любой разработчик за пределами англоязычного мира рано или поздно сталкивается с тем же выбором.

Фото: little Gabriel, Unsplash

Мне было четырнадцать, когда я решил, что школа не научит меня английскому.

Шёл 2009 год. Я учил немецкий и не любил его — не сам язык, а тот факт, что его выбрали за меня. К тому времени я уже писал первые строки кода и заметил вещь, которая казалась мне очевидной и, судя по всему, никому вокруг: любой язык программирования, который я хотел выучить, был документирован на английском. Любой ответ на форуме. Любое сообщение об ошибке. Любая книга, которую стоило читать.

Так что я попросил записать меня куда-нибудь всерьёз. Так я оказался в Британский Центр в Тбилиси, в двухэтажном здании на улице Пекини, в комнате с одиннадцатью другими людьми и преподавателем, который говорил быстрее, чем я успевал думать.

Метод Каллана: я повторял предложения три года

Публикации