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

    Доброго времени суток. Предыстория такова: десять лет назад мной была поднята инфраструктура сети салонов сотовой связи, распределенная по области. В качестве учетного решения использовалась система 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 лет.

    Only registered users can participate in poll. Log in, please.

    Вы знали, что так можно?

    • +9
    • 11.5k
    • 9
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 9

      0
      Ого! Надо запустить голосовалку: «Вы знали, что так можно?» ))
        0
        Добавил опрос
          0

          Добавьте еще один:


          • проставил обе галки
          • проставил одну галку
            ;)

          За рецепт спасибо, через пару лет такая же задача светит.

            0
            Да, с опросом ошибся, первый раз делал, понадеемся на совесть отвечающих, не буду уж плодить опросы.
          0
          > обмен данными через шару сквозь туннель
          Но зачем? К чему эта громоздкая инфраструктура? Разве 1С не умеет давным-давно подключать клиентские приложения через HTTPS?
            0
            1c 7.7 все еще не умеет ;)
            0
            А что мешало сразу задать время действия по максимуму, задав -days=9999?
            Кстати, в Вашем примере в статье
            Создаем новый сертификат:
            openssl x509 -in ca.crt -days 36500 -out ca-new.crt -signkey ca.key
            


            Вы ошиблись с лишним ноликом, прося сертификат аж на 100 лет.
              0
              Спасибо. Поправил, заказывал действительно на 10 лет. На счет первоначального срока — во первых не ожидал что вообще эта инфраструктура столько проживет, во вторых пользовался типовым скриптом build-ca.
              0
              Берём на заметку. Спасибо!

              Only users with full accounts can post comments. Log in, please.