Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Настройка
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Форум
    RouterOS
    Регулярное обновление корневых сертификатов CA

    Регулярное обновление корневых сертификатов CA

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Регулярное обновление корневых сертификатов CA, RouterOS
     
    ilium007
    Guest
    #1
    0
    27.11.2020 11:58:00
    Как лучше всего обновлять корневые сертификаты CA? Я запускаю скрипт ниже каждые 7 дней, но хочется понять, нет ли способа сначала проверить, действительно ли их нужно обновлять, прежде чем скачивать, удалять и заменять сертификаты каждую неделю. И ещё — может ли регулярный еженедельный запуск этого скрипта повредить flash-память (или какую там память внутри)?

    {
     :do {
         /tool fetch url=https://mkcert.org/generate/ check-certificate=yes dst-path=cacert.pem;
         /certificate remove [find];
         /certificate import file-name=cacert.pem passphrase="";
         /file remove cacert.pem;
         :log info ("Обновлён хранилище доверенных сертификатов");
     } on-error={
         :log error ("Не удалось обновить хранилище доверенных сертификатов");
     };
    }
     
     
     
    majestic
    Guest
    #2
    0
    13.06.2024 21:14:00
    Я считаю, что Mikrotik должен включать rootCA в свои прошивки так же, как это делают другие производители дистрибутивов и оборудования, ведь они реально являются частью уровня ОС, и пользователям не стоит самой устанавливать их для базовой работы. Установка своих собственных CA должна быть ограничена определёнными случаями, когда у вас своя инфраструктура, например, своя PKI.
     
     
     
    rextended
    Guest
    #3
    0
    13.06.2024 21:09:00
    Мой предыдущий пример идеально подходит, чтобы не отказываться от проверки сертификата, даже с первого раза. Переделал, смотрите следующие посты…
     
     
     
    majestic
    Guest
    #4
    0
    13.06.2024 11:10:00
    Это идеально, спасибо, что предоставили.
     
     
     
    rextended
    Guest
    #5
    0
    13.06.2024 15:48:00
    Впервые не используйте «check-certificate=yes», потому что сертификат ещё не установлен. В первый раз нужно делать это вручную без «check-certificate=yes»… также не работает: /certificate remove [ find where authority expired ]; потому что ни один сертификат не является «authority» (authority — это сама машина, которая генерирует сертификаты), поэтому правильно так: /certificate remove [find where name~“certs.pem*” expired=yes]. Ещё это не работает на v6: /tool fetch url= https://mkcert.org/generate/ — потому что отсутствует имя файла. (В версии v7.15.1 работает). И только /generated перенаправляет на /generated/, а v6 не поддерживает HTTP редиректы. В v6 должно быть так: /tool fetch url= https://mkcert.org/generate/all/except/nothing.

    Итого, правильный скрипт, который работает и на v6, и на v7, такой: EDIT: удалено, смотрите пост #16 https://forum.mikrotik.com/viewtopic.php?p=1080456#p1080456
     
     
     
    majestic
    Guest
    #6
    0
    13.06.2024 18:29:00
    Вот изменения, которые я внес, потому что заметил, что скрипт всегда падает при первом запуске. Этот код основан на оригинальной версии, опубликованной @ilium007, поэтому я сделал следующие правки, чтобы он работал надёжнее.

    {
     :local retryCount 0;
     :local maxRetries 3;
     :local success false;

     :do {
       :while ($retryCount < $maxRetries && !$success) do={
         :do {
           /tool fetch url=https://mkcert.org/generate/ check-certificate=yes dst-path=cacert.pem;
           /certificate remove [ find where authority expired ];
           /certificate import file-name=cacert.pem passphrase="";
           /file remove cacert.pem;
           :log info ("Обновлён список доверенных сертификатов");
           :set $success true;
         } on-error={
           :set $retryCount ($retryCount + 1);
           :log error ("Не удалось обновить список доверенных сертификатов. Попытка: $retryCount");
           :delay 5s;  # Задержка перед новой попыткой
         };
       }
       :if (!$success) do={
         /tool e-mail send to="noc@example.io" subject="RouterOS Certificate Update Failed" body="Не удалось обновить список доверенных сертификатов после $maxRetries попыток.";
         :log error ("Не удалось обновить список доверенных сертификатов после $maxRetries попыток");
       }
     } on-error={
       :log error ("Неожиданная ошибка в скрипте обновления");
     };
    }

    Как уже говорил, при первом запуске скрипт падает, как и отметил @rextended, потому что сертификаты удаляются. Поэтому здесь небольшой цикл, который пытается выполнить обновление снова, пока не получится, максимум $maxRetries раз. Если и после этого неудача, приходит письмо.

    Обновление  
    Только что сделал те изменения, которые ты заметил, спасибо, честно говоря, не обратил внимания.

    {
     :local retryCount 0;
     :local maxRetries 3;
     :local success false;

     :do {
       :while ($retryCount < $maxRetries && !$success) do={
         :do {
           /tool fetch url=https://mkcert.org/generate/all/except/nothing check-certificate=yes dst-path=cacert.pem;
           :delay 15s; # Ждём 15 секунд для скачивания
           /certificate remove [find where name~"cacert.pem*" expired=yes];
           /certificate import file-name=cacert.pem passphrase="";
           /file remove cacert.pem;
           :log info ("Обновлён список доверенных сертификатов");
           :set $success true;
         } on-error={
           :set $retryCount ($retryCount + 1);
           :log error ("Не удалось обновить список доверенных сертификатов. Попытка: $retryCount");
           :delay 5s;  # Задержка перед новой попыткой
         };
       }
       :if (!$success) do={
         /tool e-mail send to="noc@example.io" subject="RouterOS Certificate Update Failed" body="Не удалось обновить список доверенных сертификатов после $maxRetries попыток.";
         :log error ("Не удалось обновить список доверенных сертификатов после $maxRetries попыток");
       }
     } on-error={
       :log error ("Неожиданная ошибка в скрипте обновления");
     };
    }
     
     
     
    rextended
    Guest
    #7
    0
    13.06.2024 19:37:00
    Все равно будет постоянно сбоить, пока не убрать check-certificate=yes ИЛИ пока вручную не добавить сертификаты (хотя бы сертификат для mkcert.org) впервые…
     
     
     
    majestic
    Guest
    #8
    0
    13.06.2024 19:38:00
    Это ожидаемо, но я попробую добавить проверочный код, чтобы это можно было обойти с первого раза.
     
     
     
    rextended
    Guest
    #9
    0
    13.06.2024 19:58:00
    Не волнуйся, всё просто…

    /file print file=mkcert.txt :delay 1s  
    set mkcert.txt content="-----BEGIN CERTIFICATE-----\r\nMIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcN­AQELBQAw\r\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNl­Y3VyaXR5IFJlc2Vh\r\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3Qg­WDEwHhcNMTUwNjA0MTEwNDM4\r\nWhcNMzUwNjA0MTEwNDM4WjBPMQswCQYD­VQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu\r\nZXQgU2VjdXJpdHkgUmVzZWFy­Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY\r\nMTCCAiIwDQYJKoZI­hvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc\r\nh77ct984­kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+\r\n­0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3­mX6U\r\nA5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8­+o+u3dpjq+sW\r\nT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ­7hm/ELNKjD+Jo2FR3qyH\r\nB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tuk­mi8mxdAQ4Q7e2RCOFvu396j3x+UC\r\nB5iPNgiV5+I3lg02dZ77DnKxHZu8­A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv\r\nKBds0pjBqAlkd25HN7rO­rFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn\r\nOlFuhjuefXKn­EgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn\r\njh8B­CNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw­\r\nqHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13h­ef4Y53CI\r\nrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB­/wQEAwIBBjAPBgNV\r\nHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl­5AFzgAiIyBpY9umbbjANBgkq\r\nhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQ­DLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL\r\nubhzEFnTIZd+50xx+7LSYK05­qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ\r\n3BebYhtF8GaV0nxv­wuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK\r\nNFtY2PwB­yVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5\r\n­ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvH­u7Ur\r\nTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW­0wdeRlN8NwdC\r\njNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N9­5R1NbdWhscdCb+ZAJzVc\r\noyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsM­ljq4Ui0/1lvh+wjChP4kqKOJ2qxq\r\n4RgqsahDYVvTH9w7jXbyLeiNdd8X­M2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA\r\nmRGunUHBcnWEvgJBQl9n­JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d\r\nemyPxgcYxn/e­R44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=\r\n-----END CERTIFICATE-----"  
    :delay 1s  
    /certificate import file-name=mkcert.txt passphrase="" name=imported-ca-cert_mkcert  
    :delay 1s  
    /file remove [find where name=mkcerts.txt]
    :do {  
    /tool fetch url=https://mkcert.org/generate/all/except/nothing check-certificate=yes dst-path=mkcerts.pem  
    :delay 1s  
    remove [find where name~"imported-ca-cert*" and expired=yes]
    :delay 1s  
    import file-name=mkcerts.pem passphrase="" name=imported-ca-cert  
    :delay 1s  
    /file remove [find where name=mkcerts.pem]
    :log info "Trust Store: Certificates update from mkcert.org succeeded"  
    } on-error={  
    :log error "Trust Store: Не удалось обновить сертификаты с mkcert.org"  
    }

    Этот способ работает до понедельника, 4 июня 2035 года, 11:04:38 GMT. После этой даты встроенный сертификат (на новой машине) нужно будет обновить...

    Также можно сохранить результат в файл через “:execute file=result.txt” и отправить файл result.txt по электронной почте.

    certificates-imported: 147  
    private-keys-imported: 0  
    files-imported: 1  
    decryption-failures: 0  
    keys-with-no-certificate: 0  

    Кстати, с помощью скриптов можно делать отчёты в журнал или на почту о том, какие и сколько сертификатов удалено (если такие есть), и какие и сколько добавлено (если тоже есть).

    EDIT: https://forum.mikrotik.com/viewtopic.php?p=1083839#p1083841 добавлена обратная совместимость на случай неожиданного нового поведения.
     
     
     
    majestic
    Guest
    #10
    0
    13.06.2024 20:34:00
    Просто сначала установи параметр check-certificate=no, а когда сертификаты уже будут получены, переключи обратно на yes. Я пытался добавить логику для этого, но из-за постоянных ошибок при первом импорте скрипт всё равно ломается. Поэтому гораздо проще сначала сделать с no, а потом переключиться на yes, или просто использовать no постоянно (хотя так не рекомендуется).
     
     
     
    patrikg
    Guest
    #11
    0
    13.06.2024 21:04:00
    Говоря о проблеме с сертификатами. Mikrotik даже не обновил их на демонстрационных роутерах. https://demo.mt.lv/ Истёк срок 23 мая 2024 года в 07:41:48… https://demo2.mt.lv/ Истёк срок 18 июня 2024 года в 08:37:45… Написал Нормису, но ничего не изменилось.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2026 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры