Error certificate has expired nextrp

Ошибка:

Начиная с 1 октября 2021 начал получать много сообщений от пользователей, которые получали ошибку «SSL certificate problem: certificate has expired» при попытке обновить компонент через админку.

Ниже попытаюсь вкратце объяснить, из-за чего возникла проблема и как ее решить.

Причина ошибки:

30 сентября 2021 14:01:15 GMT закончился срок действия корневого сертификата IdenTrust DST Root CA X3.

Из-за этого стала невозможна проверка сертификатов, выпущенным центром сертификации Let’s Encrypt.

Эта проверка осуществляется при отправке запросов с вашего сервера на другой сервер через домен, который имеет SSL-сертификат Let’s Encrypt.

Потому все такие запросы, отправленные через cURL будут выдавать ошибку «SSL certificate problem: certificate has expired«

Исправление:

Если вы получаете эту ошибку при попытке обновить компонент через админку Joomla, то Вам необходимо удалить просроченный сертификат из цепочки сертификатов, которые использует Joomla.

Для этого через ФТП найдите файл /libraries/src/Http/Transport/cacert.pem (в более ранних версиях Joomla — /libraries/joomla/http/transport/cacert.pem) и скачайте его на свой ПК, чтобы сделать резервную копию.

Откройте файл и найдите строку, содержащую «DST Root CA X3«. удалите ее и все последующий блок (это и есть просроченный сертификат):

Сохраните файл на сервер.

Если же в Вашем файле сертификаты не подписаны, то найдите нужный по последним 5 буквам — CNTUQ.

Если же Вы столкнулись с ошибкой «SSL certificate problem: certificate has expired» в другом месте, то напишите в тех. поддержку своего хостинга обращение следующего содержания:

«При попытке отправки запросов через cURL получаю ошибку SSL certificate problem: certificate has expired. Удалите, пожалуйста, просроченный сертификат DST Root CA X3 из цепочки сертификатов, которую использует OpenSSL»

C 30 сентября 2021 года на сайтах WordPress, для которых был установлен сертификат Let’s Encrypt, могут перестать работать HTTP API запросы.

Например такой запрос будет выдавать ошибку:

$res = wp_remote_get( 'https://wp-kama.ru/' );

if( is_wp_error( $res ) ){
	echo $res->get_error_message();
}

Получим:

cURL error 60: SSL certificate problem: certificate has expired

Такую ошибку можно будет увидеть где угодно, например:

  • в админке при проверке обновлений WordPress
  • при проверке обновлений плагинов
  • при обращении к апи любого сервиса. Например, перестанет работать плагин TinyPNG — JPEG, PNG & WebP image compression и куча других, которые используют какие бы то ни было запросы.

Почему мы видим ошибку certificate has expired?

Почему так происходит подробно расписано на хабре.

Если коротко, то в ядре WP есть файл корневых сертификатов /wp-includes/certificates/ca-bundle.crt который используется для проверки SSL всех запросов созданных через HTTP API. В этом файле просрочен один из корневых сертификатов на основе которого был создан сертификат для вашего сайта. Поэтому запрос не может пройти проверку и выдается такая ошибка.

С очередными обновлениями WP эта ошибка должна пропасть, но вот что делать если решение нужно уже сегодня, или если вы не планируете обновлять WordPress, а рабочие HTTP запросы нужны.

Решение ошибки: cURL error 60: SSL certificate has expired

Вариант 1

Нужно обновить контент файла /wp-includes/certificates/ca-bundle.crt изменить его на контент этого файла https://curl.haxx.se/ca/cacert.pem.

Изменять в данном случае файл ядра допустимо, потому что при следующем обновлении WP проблема исчезнет. См. соответствующий коммит на GitHub.

Это можно сделать вручную:

  1. Скачайте файл по ссылке https://curl.haxx.se/ca/cacert.pem.
  2. Обновите контент /wp-includes/certificates/ca-bundle.crt контентом из скаченного файла.

Или используйте следующий код

Использовать код удобно, когда у вас есть возможность запустить код из админки или как-то еще, например через плагин Code Snippets.

Добавьте следующий код куда угодно и перейдите на страницу http://ВАШСАЙТ.com/?update-wp-ca-bundle.

/**
 * Goto http://yoursite.com/?update-wp-ca-bundle
 */
if( isset( $_GET['update-wp-ca-bundle'] ) ){

	$crt_file = ABSPATH . WPINC . '/certificates/ca-bundle.crt';
	$new_crt_url = 'https://curl.haxx.se/ca/cacert.pem';

	if( is_writable( $crt_file ) ){
		$new_str = file_get_contents( $new_crt_url );

		if( $new_str && strpos( $new_str, 'Bundle of CA Root Certificates' ) ){
			$up = file_put_contents( $crt_file, $new_str );

			echo $up ? 'OK: ca-bundle.crt updated' : 'ERROR: can`t put data to ca-bundle.crt';
		}
		else {
			echo 'ERROR: cant download https://curl.haxx.se/ca/cacert.pem';
		}
	}
	else {
		echo 'ERROR: ca-bundle.crt not writable';
	}

	exit;
}

После использования, код нужно удалить.

Вариант 2

Решить проблему можно через хук http_request_args. Этот хук нужно использовать в MU плагине.

  1. Создайте файл loader.php в папке wp-content/mu-plugins (если такой папки у вас нет, создайте её).

  2. Добавьте следующий код в этот файл:

    <?php
    
    require_once __DIR__ .'/fix-wp-ca-bundle/main.php';
  3. Создайте папку wp-content/mu-plugins/fix-wp-ca-bundle.

  4. Создайте файлы: main.php и ca-bundle.crt в папке fix-wp-ca-bundle.

    Добавьте следующий код в эти файлы.

    Код файла main.php:

    <?php
    
    defined( 'ABSPATH' ) || exit;
    
    /**
     * Update the path to the WordPress trusted root certificates.
     *
     * Actual certificates can be downloaded at this link: http://curl.haxx.se/ca/cacert.pem
     */
    add_filter( 'http_request_args', 'http_request_change_sslsertificates' );
    
    function http_request_change_sslsertificates( $parsed_args ){
    
    	$parsed_args[ 'sslcertificates' ] = __DIR__ . '/ca-bundle.crt';
    
    	return $parsed_args;
    }

    Контент файла ca-bundle.crt:

    Скопируйте контент этого файла http://curl.haxx.se/ca/cacert.pem

Должна получится такая структура:

Готово! Теперь все должно работать как и прежде.

rickyvaughn2

OpenVpn Newbie
Posts: 6
Joined: Tue Jun 21, 2022 10:26 pm

error=certificate has expired

Tue Jun 21 17:27:05 2022 VERIFY ERROR: depth=0, error=certificate has expired: CN=server_abc, serial=123

I understand that there is something that expires around 10 years but this install is only 3 years old.

I created all keys at one time. All are getting the same error implying that the certificate has expired. If I create a new key, it has the same error. ALL of these systems that connect to this VPN are remote and unmanned. Is there anything I can do on the server that can fix this?

The whole error when I try to use the new key (same error on the old keys)

Tue Jun 21 17:29:51 2022 VERIFY ERROR: depth=0, error=certificate has expired: CN=server_abc, serial=123
Tue Jun 21 17:29:51 2022 OpenSSL: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
Tue Jun 21 17:29:51 2022 TLS_ERROR: BIO read tls_read_plaintext error
Tue Jun 21 17:29:51 2022 TLS Error: TLS object -> incoming plaintext read error
Tue Jun 21 17:29:51 2022 TLS Error: TLS handshake failed


TinCanTech

OpenVPN Protagonist
Posts: 11142
Joined: Fri Jun 03, 2016 1:17 pm

Re: error=certificate has expired

Post

by TinCanTech » Tue Jun 21, 2022 10:42 pm

Your server certificate has expired but not your CA certificate, which means you can make a new server certificate and everything will be ticketty-boo, until your next certificate expires.

You could try the all new Easy-RSA command `show-expire`, if you have the new Easy-RSA (git/master only)



rickyvaughn2

OpenVpn Newbie
Posts: 6
Joined: Tue Jun 21, 2022 10:26 pm

Re: error=certificate has expired

Post

by rickyvaughn2 » Wed Jun 22, 2022 2:35 pm

I really do not want to mess this up… I believe the cert is /etc/openvpn/server_abc.crt and the key is located at /etc/openvpn/server_abc.key

I ran the command: «openssl x509 -in certificate.crt -text -noout» and I see that it did expire on the 15th

I believe I need to do the following:
Export CSR from the expired certificate: «openssl x509 -x509toreq -in server.crt -signkey server.key -out new-server.csr»
Renew self-signed certificate: «openssl x509 -req -days 365 -in new-server.csr -signkey server.key -out new-server.crt»

Questions:
Can I go more than 365 days? (looks like it is limited to 398)
Will the new-server.crt need to overwrite the existing expired one?
Do these steps look correct to not wreck the existing connections to the VPN and get this back up?

I appreciate the help, this is not my primary skill set :|


TinCanTech

OpenVPN Protagonist
Posts: 11142
Joined: Fri Jun 03, 2016 1:17 pm

Re: error=certificate has expired

Post

by TinCanTech » Wed Jun 22, 2022 5:07 pm

We support Easy-RSA.


rickyvaughn2

OpenVpn Newbie
Posts: 6
Joined: Tue Jun 21, 2022 10:26 pm

Re: error=certificate has expired

Post

by rickyvaughn2 » Wed Jun 22, 2022 5:28 pm

lol, so I am doing this ALL wrong. Got it.

./easy-rsa renew /etc/openvpn/server.crt? (looks like no)

or this: «./easyrsa build-server-full serverName nopass»

If not, can you please point me in some direction?



rickyvaughn2

OpenVpn Newbie
Posts: 6
Joined: Tue Jun 21, 2022 10:26 pm

Re: error=certificate has expired

Post

by rickyvaughn2 » Wed Jun 22, 2022 6:10 pm

I have no idea what I am doing and nothing is clear here. It seems I have to run init-pki, it is warning me that it is about to remove things. All this is fine?

To be clear, I am happy to pay for this to be done.


TinCanTech

OpenVPN Protagonist
Posts: 11142
Joined: Fri Jun 03, 2016 1:17 pm

Re: error=certificate has expired

Post

by TinCanTech » Wed Jun 22, 2022 7:24 pm

rickyvaughn2 wrote: ↑

Wed Jun 22, 2022 6:10 pm


I am happy to pay for this to be done.

I am available, tincantech at protonmail dot com



Содержание

  1. Прямые руки → Восстановление заводской прошивки роутера NETGEAR WNDR3700
  2. 1)Подготовка ПК для прошивки
  3. 2)Подготовка роутера
  4. 3)Закачка стандартной прошивки на маршрутизатор
  5. Маршрутизатор NetGear WNR3500L откат на заводскую прошивку с альтернативной от Vampik
  6. Подготовка к прошивке
  7. Восстановление заводской прошивки NetGear
  8. Сброс настроек на значения по-умолчанию
  9. Краткая инструкции по восстановлению заводской прошивки
  10. Сказ о том как я роутер восстанавливал
  11. Предыстория
  12. История восстановления
  13. Момент истины
  14. Восстановление прошивки NetGear WNR3500L
  15. Подготовка к прошивке
  16. Восстановление заводской прошивки NetGear
  17. Сброс настроек на значения по-умолчанию
  18. Краткая инструкции по восстановлению заводской прошивки
  19. Понравилась статья? Поделись с друзьями!

Прямые руки → Восстановление заводской прошивки роутера NETGEAR WNDR3700

Наигравшись, вдоволь, с прошивкой от DD-WRT и не получив желаемого, а на момент написания статьи, эта железяка ни в какую не хотела нормально пропускать multicast трафик –который используется в IPTV, короче телевидение по сети не пашет, решил восстановить стандартную (заводскую) прошивку. В случае если мы попытаемся сделать это в лоб, через WEB интерфейс, подсунув прошивку WNDR3700-V1.0.4.68-то нас ожидает большой сюрприз в виде сбоя и в редких случаях, зависания роутера. Ситуация не тупиковая и довольно легко решаемая.
Все описанное, проводилось на ОС Windows 7 x32( но разрядность значения не имеет)
Фото героя прилагается:

1)Подготовка ПК для прошивки

Первым делом, подключаем роутер к компу, в разъем №1 – тот который черного цвета, НЕ ЖЕЛТОГО.
В настройках сетевого интерфейса назначаем нашему ПК статический IP
IP адрес 192.168.1.2
Маска подсети 255.255.255.0
Больше ничего не указываем.

Качаем прошивку- если вы этого еще не сделали, после закачки распаковываем ее и копируем на диск C:-прямо в корень, далее поймете почему.
Нам необходимо активировать TFTP клиент, которым мы и будем заливать прошивку на роутер, идем: Пуск->Панель управления->Программы и компоненты->Включение или выключение компонентов Windows. Отмечаем галочкой Клиент TFTP и наживаем OK.С ПК пока все-переходим к нашему роутеру.

2)Подготовка роутера

Чтобы залить прошивку, нам необходимо, перевести маршрутизатор в режим восстановления, для этого выключаем его кнопкой (находится сзади роутера) нам понадобится скрепка или любой тонкий предмет который мы вставляем в отвесите кнопки сброса, называется Restore Factory Settings, промахнуться довольно сложно, отверстие обведено красным. Аккуратно наживаем эту кнопку и включаем роутер, кнопкой на задней панели, при этом продолжая удерживать кнопку сброса -держим ее не менее 45 сек, после этого роутер переходит в режим восстановления. Признаком того что роутер находится в этом режиме -светодиод отображающий состояние питания начинает мигать. После этого можно отпускать кнопку сброса и вернуться к нашему ПК.

3)Закачка стандартной прошивки на маршрутизатор

Открывем командную строку и набираем в ней:

Система немного задумается и после этого выдаст:
Успешная передача 6160577 байт за 5 сек., 1232115 байт/с

После этого нам остается подождать, роутер начнет мигать всеми светодиодами, они будут светиться желтым. Дожидаемся того момента когда диоды: Power, 2,4Ghz и сетевые разъемы будут светиться зеленым, а диод 5 Ghz –синим т.е. нормальной загрузки системы. На все уйдет, примерно, 2 мин.
Ни в коем случае не выключайте и не перезагружайте роутер во время его перепрошивки!
После этого заходим в WEB интерфейс, по адресу: 192.168.1.1 и видим знакомый интерфейс.
Логин и пароль стандартные: admin password

Пользуемся, и ждем новую прошивку которая, все таки, исправит этот досадный недостаток т.к. с более дешевыми моделями IPTV нормально работает, а с этим нет…

Источник

Маршрутизатор NetGear WNR3500L откат на заводскую прошивку с альтернативной от Vampik

Маршрутизатор NetGear WNR3500L позиционируется производителем как роутер с открытой прошивкой. То есть на него официально можно ставить альтернативные прошивки для чего существует официальный сайт http://www.myopenrouter.com/. Однако большинство инструкций содержат подробные описания как установить альтернативную прошивку, но ни слова о том как вернуться с нее обратно на заводскую. В данной статье я расскажу как откатиться на оригинальную с прошивки Vampik, основанную на прошивке «от Олега и Энтузиастов».

Подготовка к прошивке

Скачиваем свежую версию официальной прошивки. Для маршрутизатора WNR3500L берем ее на официальном форуме — Актуальные прошивки для WNR3500L. На момент написания статьи это V1.2.2.56_35.0.56RU от 04.05.2013.

Проверяем включен ли в операционной системе TFTP клиент. В Windows 7 он по-умолчанию не установлен. Ищем его по адресу «Панель управления — программы и компоненты — включение или отключение компонентов Windows»

Настраиваем SSH доступ к консоли маршрутизатора, если этого не сделали раньше.

Имя пользователя и пароль совпадают с данными доступа к WEB-конфигуратору роутера. По умолчанию admin / admin.

Восстановление заводской прошивки NetGear

Для восстановления заводской прошивки вам необходимо подключиться к роутеру по SSH и выполнить следующие команды в консоли:

Выполнение которой займет некоторое время (до 3-х минут).
После этого необходимо перезагрузить роутер:

Пока маршрутизатор загружается подключаем компьютер патч-кордом к любому LAN порту роутера и настраиваем IP адресацию сетевой карты. Выбираем любой адрес из подсети 192.168.1.1/24 кроме 192.168.1.1 (например 192.168.1.2):

Далее переименовываем скаченную заводскую прошивку в code.chk и сохраняем ее в удобном месте, к примеру в «c:tmpwnr3500l»

Переходим в эту папку и выполняем команду

Должны получить примерно следующее:

После чего ожидаем примерно 3..5 минут, пока роутер обновит прошивку и перезагрузится. В это время следует вернуть настройки сетевой карты на значения по-умолчанию:

Сброс настроек на значения по-умолчанию

После того как маршрутизатор перезагрузится он будет доступен по адресу http://192.168.1.1 логин и пароль — admin и password. Если подключиться не удается, то попробуйте произвести полный сброс. Для этого выключите роутер, нажмите спичкой или скрепкой кнопку сброса на задней стороне и удерживая ее включите питание. Удерживайте нажатой кнопку сброса не менее 20 секунд, после чего отпустите ее. Эта процедура вернет все настройки на заводские настройки.

Краткая инструкции по восстановлению заводской прошивки

Чтобы откатиться к оригинальной прошивке, надо сделать следующее
Выполнить в SSH консоле

Источник

Сказ о том как я роутер восстанавливал

Добрый день. Перед Вами виновник сего торжества: Netgear WNR2200 И далее я Вам поведаю интересную историю, о том, что не следует делать с роутером.

Предыстория

Когда я только переехал в собственную квартиру, я естественно сразу же провел интернет. Встал выбор «Какой роутер брать?», и я вспомнил, как один знакомый системный администратор из Москвы посоветовал мне брать роутеры фирмы Netgear (о них я тогда услышал впервые). Ну и собственно выбор пал (на тот момент) на простенький Netgear WNR1000. Я был очень доволен результатом, при условии что он работал 24/7, перезагружать мне его приходилось, только раз в полгода (ничто не идеально). Так он у меня проработал 3 года, после чего его отдал родителям и думал приобрести себе что-нибудь посуровее. Однако, на момент покупки нового, я был еще студентом и роутер от Apple или навороченный роутер от ASUS позволить я себе не мог, поэтому купил просто модель постарше — Netgear WNR2200. Тут то и начались выкрутасы.

  • Первое, что меня очень огорчило, это отсутствие новой прошивки v2 для роутера (хотя на тот же WNR1000 она есть и хорошо работает).
  • Второе, что на своей родной прошивке переодически роутер начинает «резать» скорость, и приходится его перезагружать достаточно часто.

Мной было решено поставить «кастомную» прошивку DD-WRT, что моей проблемы не исправило. DD-WRT хоть и была более гибкая и навороченная, но точно также спустякакое то время начинала «резать» скорость. В итоге кое как нашел более-менее рабочий билд Open-WRT. Это и было моей ошибкой. После настройки сети (с которой, кстати я даже не разобрался до конца) роутер зациклился в собственной сети (то есть я закрыл к нему любой доступ извне). Я этого не особо боялся, ведь есть же волшебная кнопка «Reset». Тут я ошибся во второй раз. После применения конфига, сброс произвести не удалось. Кнопка просто не работала. Никак. TFTP не поднят, в общем, все очень грустно.

Итог: КИРПИЧ

История восстановления

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

Нашел в закромах необходимый кабель, отрезал ненужную его часть и искал куда его припаять. Судя по сайту, серийный вход был на JP1

Pin 1 — помечен белой точкой на плате.

Загвоздка была в одном: на COM-порте было всего 3 провода (Rx, Tx, GND) питания на данном кабеле не было. Но я прочитал, что питание требуется только на очень небольшом количестве роутеров, чем я далее пренебрег. Припаял COM-кабель к плате, загрузил PuTTY. В настройках необходимо выставить скорость: 115200.

Включаю роутер, а в консоль начинает сыпаться мусор. Отсюда 2 вывода — метод работает. Но в методе что то не так. Опять же нашел на просторах интернета заметку, что если по UART в консоль сыпется мусор, значит нужно искать преобразователи. Пришлось купить Преобразователь USB-UART на базе PL2303 с разъемом USB-A.

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

Момент истины

Ну а теперь все просто. Сбрасываем роутер:

Подключаем WAN роутера, уже к работающему и подключенному интернету. Проверяем соединение с интернетом:

Источник

Восстановление прошивки NetGear WNR3500L

Подготовка к прошивке

Скачиваем свежую версию официальной прошивки. Для маршрутизатора WNR3500L берем ее на официальном форуме — Актуальные прошивки для WNR3500L. На момент написания статьи это V1.2.2.56_35.0.56RU от 04.05.2013.

Проверяем включен ли в операционной системе TFTP клиент. В Windows 7 он по-умолчанию не установлен. Ищем его по адресу «Панель управления — программы и компоненты — включение или отключение компонентов Windows»

Настраиваем SSH доступ к консоли маршрутизатора, если этого не сделали раньше.

Имя пользователя и пароль совпадают с данными доступа к WEB-конфигуратору роутера. По умолчанию admin / admin.

Восстановление заводской прошивки NetGear

Для восстановления заводской прошивки вам необходимо подключиться к роутеру по SSH и выполнить следующие команды в консоли:

Выполнение которой займет некоторое время (до 3-х минут).

После этого необходимо перезагрузить роутер:

Пока маршрутизатор загружается подключаем компьютер патч-кордом к любому LAN порту роутера и настраиваем IP адресацию сетевой карты. Выбираем любой адрес из подсети 192.168.1.1/24 кроме 192.168.1.1 (например 192.168.1.2):

Далее переименовываем скаченную заводскую прошивку в code.chk и сохраняем ее в удобном месте, к примеру в «c:tmpwnr3500l»

Переходим в эту папку и выполняем команду

Должны получить примерно следующее:

После чего ожидаем примерно 3..5 минут, пока роутер обновит прошивку и перезагрузится. В это время следует вернуть настройки сетевой карты на значения по-умолчанию:

Сброс настроек на значения по-умолчанию

После того как маршрутизатор перезагрузится он будет доступен по адресу http://192.168.1.1 логин и пароль admin и admin. Если подключиться не удается, то попробуйте произвести полный сброс. Для этого выключите роутер, нажмите спичкой или скрепкой кнопку сброса на задней стороне и удерживая ее включите питание. Удерживайте нажатой кнопку сброса не менее 20 секунд, после чего отпустите ее. Эта процедура вернет все настройки на заводские настройки.

Краткая инструкции по восстановлению заводской прошивки

Чтобы откатиться к оригинальной прошивке, надо сделать следующее

  • Выполнить в SSH консоле
  • Установить на компьютере адрес из подсети 192.168.1.1/24 (например 192.168.1.2)
  • Переименовать файл прошивки в code.chk
  • Выполнить команду
  • Ждем минуты 3-4

Понравилась статья? Поделись с друзьями!

Напишите, пожалуйста, подробно для новичка, как это сделать

«Для восстановления заводской прошивки вам необходимо подключиться к роутеру по SSH и выполнить следующие команды в консоли:

Здесь описывается альтернативный способ восстановления без использования утилиты от NETGEAR. (Взято с форума Олега)

1) Убить железку, чтобы заморгал оранжевый или зелёный индикатор питания; wink

2) Взять сетевой кабель (витую пару), подключить один хвост в любой из LAN портов устройства, другой к сетевому адаптеру Вашего ПК (не через свич)

3) В Windows для протокола TCP/IP назначить адаптеру адрес 192.168.1.2, сетевую маску 255.255.255.0, шлюз 192.168.1.1.

4) Запустить cmd.exe

5) Проверить, что есть связь с устройством, выполнив команду

Должно появится нечто похожее на

Pinging 192.168.1.1 with 32 bytes of data:

Reply from 192.168.1.1: bytes=32 time=2ms TTL=100

Reply from 192.168.1.1: bytes=32 time=2ms TTL=100

Reply from 192.168.1.1: bytes=32 time=2ms TTL=100

Reply from 192.168.1.1: bytes=32 time=2ms TTL=100

Ping statistics for 192.168.1.1:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 2ms, Maximum = 2ms, Average = 2ms

Обращаем внимание на TTL=100 — это отвечает встроенный загрузчик.

6) Восстанавливаем прошивку (d:firmware.chk нужно заменить на имя файла с прошивкой, с указанием полного пути до файла)

tftp -i 192.168.1.1 put d:firmware.chk

7) Ждём несколько секунд, вываливается надпись типа

Transfer successful: 3706880 bytes in 7 seconds, 529554 bytes/s

8) Ждём от 2-х минут до 10-ти, пока прошивка не запрограммируется и не загорится индикатор Wi-Fi — устройство загрузилось. Если через 10 минут Wi-Fi не загорелся, то необходимо включить/выключить роутер — автозагрузка не сработала по какой-то причине.

9) Не забываем сбросить железку на заводские настройки.

Замечание: Владельцам ПК с Windows Vista и Windows 7: умельцы в майкрософте опять удивили: tftp клиент (ровно как и telnet) может отсутствовать при начальной установке. Его нужно доустановить, посетив Панель управления и выбрав «Программы и …».

Источник

@luispaulorsl

This is not an issue.
The TLS/SSL certificate from the server you fetch has actually expired.
Use .catch() to handle the Error.

@MelyHC

Gracias por la aclaración, lo había intentado colocando un catch pero sali ese error, pero al ver tu respuesta y volverlo a intentar salio, errores, que pasan

@PierBover

I’m having this error in an Electron app using node-fetch and I know for certain the certificate has not expired. It’s a Heroku app with a Let’s Encrypt certificate that expires on November 2, 2019.

It only happens to some users so I’m guessing Node or node-fetch is not renewing the certificate…

Any idea what might be happening?

@Richienb

@PierBover If you’re using Electron, wouldn’t the fetch API be natively supported in the browser window?

@PierBover

@Richienb yes but in this case I need to do the request in the Node part since this involves working with the filestystem.

@PierBover

Apparently the default config on the HTTPS agent is to cache 100 TLS sessions:

https://nodejs.org/api/https.html#https_class_https_agent

I will try passing a custom agent to node-fetch and see if that fixes it.

Edit:

No, that didn’t work.

I created an agent without SSL caching and passed it to node-fectch:

const agent = new https.Agent({
	maxCachedSessions: 0
});

const headers = {
	'Authorization': 'Bearer ' + token
};

const options = {
	headers,
	agent
}

const response = await fetch('/endpoint', options);

The only thing that fixes it is using this insecure hack:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;

Edit 2:

So we’ve tried with the request library and the native https client from Node with the same problem so I think it’s safe to say the issue is not in node-fetch. Sorry for the noise.

@promatik

Hi @PierBover did you find out the issue?
I’m having that issue right now. Don’t know why, the certificate was renews 2 weeks ago, and lasts for almost more 3 months.

And I’m having a failed, reason: certificate has expired.

@pigochu

Hi @PierBover did you find out the issue? I’m having that issue right now. Don’t know why, the certificate was renews 2 weeks ago, and lasts for almost more 3 months.

And I’m having a failed, reason: certificate has expired.

@promatik

Me too , are u using let’s encrypt ?

@vineet-celebrate

We were facing the same issue. Did the following as a quick fix:

const https = require("https");

// custom agent as global variable
const agent = new https.Agent({
  rejectUnauthorized: false,
});
// node-fetch request with custom agent
const response = await fetch(config.get('url'),
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: `data=${JSON.stringify(payload)}`,
  agent,
});
Araxeus, hasan-retrace, dmdum, smit-code, wizzfizz94, arenn23, and jinpill reacted with thumbs up emoji
bebjakub, Araxeus, lynhan-tiki, gask, gmcavalheiro, dmdum, smit-code, arenn23, mdworczyyk, and jinpill reacted with heart emoji
Araxeus, lynhan-tiki, dmdum, smit-code, arenn23, and jinpill reacted with rocket emoji

@promatik

Hi @pigochu yes, I’m using let’s encrypt.
I had to disable TLS validation in the mean time, until I find a proper solution 😕

This started to happen all of the sudden.

process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;

Note this should NOT be done, this is a temporary fix.

@PierBover

Sorry guys, I don’t remember how I solved that and don’t have access to the repo anymore.

@promatik

dnm13, sirkrisp, leohxj, dadonc, iaincollins, Burstyx, zprjk, Araxeus, jasonandmonte, Srokap, and 2 more reacted with thumbs up emoji
sjcovell reacted with heart emoji

@Trysystems

@Araxeus

@dmdum

We were facing the same issue. Did the following as a quick fix:

const https = require("https");

// custom agent as global variable
const agent = new https.Agent({
  rejectUnauthorized: false,
});
// node-fetch request with custom agent
const response = await fetch(config.get('url'),
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: `data=${JSON.stringify(payload)}`,
  agent,
});

This worked for me. Should this be a temporary solution?

alexaor

added a commit
to KSG-IT/XApp-Electron
that referenced
this issue

Jan 7, 2023

@alexaor

The best way to fix this:

Renew the certificate. This can be done for free using Greenlock which issues certificates via Let’s Encrypt™ v2

A less insecure way to fix this:

'use strict';

var request = require('request');
var agentOptions;
var agent;

agentOptions = {
  host: 'www.example.com'
, port: '443'
, path: '/'
, rejectUnauthorized: false
};

agent = new https.Agent(agentOptions);

request({
  url: "https://www.example.com/api/endpoint"
, method: 'GET'
, agent: agent
}, function (err, resp, body) {
  // ...
});

By using an agent with rejectUnauthorized you at least limit the security vulnerability to the requests that deal with that one site instead of making your entire node process completely, utterly insecure.

Other Options

If you were using a self-signed cert you would add this option:

agentOptions.ca = [ selfSignedRootCaPemCrtBuffer ];

For trusted-peer connections you would also add these 2 options:

agentOptions.key = clientPemKeyBuffer;
agentOptions.cert = clientPemCrtSignedBySelfSignedRootCaBuffer;

Bad Idea

It’s unfortunate that process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; is even documented. It should only be used for debugging and should never make it into in sort of code that runs in the wild. Almost every library that runs atop https has a way of passing agent options through. Those that don’t should be fixed.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Error class ntpclient has no member named getformatteddate
  • Error certificate has expired next rp
  • Error certificate common name
  • Error class node js
  • Error certificate authority not found

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии