Как стать автором
Обновить

OpenVPN, легкий перевыпуск корневого сертификата

Время на прочтение2 мин
Количество просмотров23K
Доброго времени суток. Предыстория такова: десять лет назад мной была поднята инфраструктура сети салонов сотовой связи, распределенная по области. В качестве учетного решения использовалась система 1С: Предприятие 7.7 в режиме распределенной базы данных. Для обмена данными использовалась обычная сетевая папка windows, доступ к которой осуществлялся через туннель OpenVPN. И вот как-то неделю назад полностью остановился обмен информацией между центром и периферией. Почему-то сразу закралась мысль — неужели прошло десять лет (именно на этот срок делался корневой сертификат). Анализ логов подтвердил проблему, схема отлично себя зарекомендовала за эти десять лет, но пришел срок. И что же теперь, генерировать заново весь объем клиентских и серверных ключей/сертификатов??? Нет, можно поступить немного проще…

OpenSSL позволяем перевыпустить сертификат и подписать его старым приватным ключем, при этом сохраняется структура Modulus сертификата и новый сертификат успешно проверяет старые сертификаты клиентов.

Создаем новый сертификат:

openssl x509 -in ca.crt -days 3650 -out ca-new.crt -signkey ca.key

Получаем ответ:

Getting Private key

и новый сертификат ca-new.crt

Выполним проверку сертификата клиента новым корневым сертификатом:

openssl verify -CAfile ca-new.crt client9.crt

Все хорошо:

client9.crt: OK

Следующей командой можно посмотреть содержимое сертификата и убедиться что у нового и старого сертификата Modulus одинаков:

openssl x509 -noout -text -in ca-new.crt

Все вроде бы очень хорошо, рассылаем новый сертификат, предварительно переименовав его по образу старого с инструкцией пользователю куда его подложить (перезаписываем старый).

Перезапускаем службу на сервере и смотрим как подключатся клиенты. К сожалению не все клиенты это сделали успешно. У некоторых в логе получили:

Tue Mar 21 15:12:18 2017 VERIFY ERROR: depth=1, error=certificate signature failure: /C=RU...

Вот здесь пришлось потерять несколько часов, в итоге выяснилось что на клиентских компьютерах также не срабатывает проверка сертификата клиента:

openssl verify -CAfile ca-new.crt client9.crt

Версия openssl (в составе OpenVPN ) оказалась старая и не хотела успешно проверять.

Соответственно у проблемных клиентов пришлось обновить OpenVPN до версии 2.3.3 (такая использовалась у меня, про другие ничего сказать не могу, но полагаю что более новые версии также будут вести себя положительно) и система отправлена в плавание еще на 10 лет.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы знали, что так можно?
17.5% Да21
85.83% Нет103
Проголосовали 120 пользователей. Воздержались 33 пользователя.
Теги:
Хабы:
+9
Комментарии9

Публикации

Истории

Работа

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн