Усунення помилки «Unable to get local issuer certificate».
Під час роботи із сертифікатами SSL/TLS помилка «Unable to get local issuer certificate» (неможливо отримати сертифікат локального видавця), може викликати розчарування, особливо якщо це перериває безпечний зв’язок між клієнтом і сервером. Незалежно від того, чи намагаєтеся ви зробити запит HTTPS, налаштувати веб-сервер або отримати доступ до безпечного веб-сайту, ця помилка може порушити процес. У цьому посібнику ми розглянемо причини, типові сценарії та покрокові способи вирішення цієї проблеми.
Що означає помилка «Неможливо отримати сертифікат локального видавця»?
Помилка «Неможливо отримати сертифікат локального видавця» зазвичай виникає, коли система не може перевірити ланцюжок сертифікатів SSL через відсутній або ненадійний кореневий або проміжний сертифікат. Сертифікати SSL покладаються на ланцюг довіри, який є ієрархічною структурою сертифікатів, яка починається з кореневого сертифіката, виданого довіреним центром сертифікації (CA). Якщо будь-яка ланка в цьому ланцюжку відсутня або неправильно налаштована, система не може встановити безпечне з’єднання, що призводить до цієї помилки.
Поширені сценарії виникнення помилки
Ця помилка може виникати в різних середовищах і ситуаціях. Давайте розглянемо кілька найпоширеніших сценаріїв:
Середовища розробки (наприклад, cURL, Node.js, Python)
У середовищах розробки розробники часто використовують такі інструменти, як cURL, Node.js або Python, щоб надсилати запити HTTPS. Якщо системі не вистачає необхідних кореневих сертифікатів, ці запити можуть не виконуватися, показуючи помилку «Не вдається отримати сертифікат локального видавця». Зазвичай це трапляється, якщо середовище розробки ізольоване або не має доступу до сертифікатів ЦС системи.
Веб-браузери
Веб-браузери можуть відображати цю помилку під час спроби отримати доступ до веб-сайту, який має неправильно налаштований ланцюжок сертифікатів SSL. Це може бути тому, що на сайті відсутні проміжні сертифікати або використовується прострочений кореневий сертифікат. Браузер блокує доступ як засіб безпеки, попереджаючи користувача про ненадійне підключення.
Конфігурації сервера (наприклад, Apache, Nginx)
У робочих середовищах такі веб-сервери, як Apache і Nginx, можуть викликати цю помилку, якщо вони не налаштовані з правильним ланцюжком сертифікатів. Неправильно налаштовані або відсутні проміжні сертифікати є поширеною причиною під час розгортання сертифікатів SSL на веб-серверах.
Основні причини помилки
Розуміння основних причин цієї помилки має вирішальне значення для її вирішення. Ось кілька типових причин, чому ви можете побачити цю помилку.
- Відсутні кореневі або проміжні сертифікати: сервер не може надати повний ланцюжок сертифікатів, через що клієнт не довіряє з’єднанню.
- Неправильно налаштований ланцюжок сертифікатів: ланцюжок сертифікатів неправильно впорядкований або неповний.
- Прострочені або ненадійні сертифікати: можливо, термін дії кореневого сертифіката закінчився або його було відкликано, що призвело до розриву ланцюжка сертифікатів.
- Застарілі сертифікати ЦС: сертифікати ЦС локальної системи можуть бути застарілими або не мати довірених кореневих сертифікатів.
Як працюють ланцюжки сертифікатів SSL
Щоб краще зрозуміти, як виникає ця помилка, важливо знати, як функціонують ланцюжки сертифікатів SSL. Ланцюжок сертифікатів починається з кореневого сертифіката, виданого довіреним центром сертифікації. Цей кореневий сертифікат використовується для перевірки проміжних сертифікатів, які, у свою чергу, перевіряють сертифікат сервера.
Якщо будь-який сертифікат у цьому ланцюжку відсутній або ненадійний, клієнт не зможе перевірити сертифікат сервера, що призведе до помилки «Неможливо отримати сертифікат локального видавця». Переконайтеся, що повний ланцюжок правильно налаштований, щоб уникнути цієї проблеми.
Дії з усунення несправностей для усунення помилки
Тепер, коли ми зрозуміли, що викликає цю помилку, давайте розглянемо, як її вирішити. Ось кілька кроків, які ви можете виконати:
1. Перевірте ланцюжок сертифікатів
Однією з перших речей, які вам слід зробити, є перевірка ланцюжка сертифікатів SSL. Ви можете використовувати такі інструменти, як OpenSSL, щоб перевірити ланцюжок і перевірити, чи немає сертифікатів або неправильно налаштовано. Наприклад, використання такої команди може допомогти вам перевірити ланцюжок сертифікатів:
openssl s_client – підключити yourdomain.com: 443 -showcerts
Ця команда відобразить сертифікат сервера та проміжні сертифікати, які він надає. Якщо ланцюжок неповний, ви знатимете, який сертифікат відсутній.
2. Оновіть довірені кореневі сертифікати
Якщо помилка виникає через відсутність у клієнта довіреного кореневого сертифіката, оновлення довірених кореневих сертифікатів вашої системи може вирішити проблему. У Linux, наприклад, ви можете оновити сертифікати ЦС за допомогою такої команди:
sudo update – ca – сертифікати
Ця команда гарантує, що ваша система має останній набір надійних кореневих сертифікатів, допомагаючи вирішити проблему.
3. Правильно налаштуйте пакети сертифікатів
Під час налаштування SSL на таких серверах, як Apache або Nginx, важливо об’єднати сертифікат сервера з проміжними та кореневими сертифікатами в пакет сертифікатів. Якщо пакет неповний або не в порядку, клієнти не зможуть перевірити ланцюжок сертифікатів, що призведе до помилки. Під час налаштування веб-сервера переконайтеся, що ланцюжок сертифікатів налаштовано правильно.
Виправлення для конкретної платформи
Різні платформи та інструменти вимагають спеціальних рішень для виправлення помилки «Не вдається отримати сертифікат локального видавця». Нижче наведено виправлення для типових середовищ розробки:
1. CURL
У cURL цю помилку часто можна вирішити, вказавши правильний комплект CA за допомогою позначки — cacert. Ви можете завантажити найновіші сертифікати ЦС і використовувати їх наступним чином:
curl – cacert /path/to/cacert.pem https://yourdomain.com
Крім того, ви можете оновити сертифікати ЦС у вашій системі, які cURL використовуватиме за замовчуванням.
2. Node.js
Для Node.js вам може знадобитися оновити змінну середовища NODE_EXTRA_CA_CERTS, щоб включити шлях до ваших сертифікатів ЦС. Ви можете зробити це за допомогою такої команди:
експорт NODE_EXTRA_CA_CERTS= “/шлях/до/cacert.pem”
Це дозволить Node.js використовувати вказаний пакет CA під час надсилання запитів HTTPS.
3. Запити Python
У Python популярна бібліотека запитів може викликати цю помилку, якщо не може знайти необхідні сертифікати ЦС. Встановлення пакета certifi, який містить оновлений список надійних кореневих сертифікатів, зазвичай вирішує проблему:
pip install certifi
Ви також можете вказати пакет CA безпосередньо у своєму коді за допомогою параметра verify:
запити на імпорт запити. get ( ‘https://yourdomain.com’, verify= ‘/path/to/cacert.pem’ )
Запобігання помилці «Неможливо отримати сертифікат локального видавця».
Щоб запобігти цій помилці в майбутньому, вам слід переконатися, що ваші системи регулярно оновлюються довіреними кореневими сертифікатами. Автоматизація перевірки сертифіката SSL під час розгортання та використання інструментів для перевірки ланцюжків сертифікатів може допомогти виявити потенційні проблеми до того, як вони вплинуть на робоче середовище. Крім того, завжди переконайтеся, що ланцюжок сертифікатів правильно налаштовано з усіма необхідними проміжними сертифікатами.
Висновок
Помилка «Не вдається отримати сертифікат локального видавця» може порушити безпечні з’єднання, але, розуміючи основні проблеми з ланцюжками сертифікатів SSL і застосувавши цільові виправлення, ви можете ефективно вирішити цю проблему. Незалежно від того, чи працюєте ви з такими інструментами розробки, як cURL і Node.js, чи налаштовуєте виробничі сервери, виконання кроків з усунення несправностей, викладених у цьому посібнику, допоможе вам визначити та усунути першопричину. Підтримуючи сертифікати ЦС вашої системи в актуальному стані та перевіряючи конфігурації SSL під час розгортання, ви можете запобігти виникненню цієї помилки в майбутньому.
Найцікавіше з нашого блогу:
Корисні посилання

