NetXMS Support Forum

Russian Support => Общие вопросы => Topic started by: Akira on February 14, 2023, 08:25:50 AM

Title: После перехода с 3.9 на 4.3.1 плохо работает проверка сертификатов
Post by: Akira on February 14, 2023, 08:25:50 AM
Постоянно стало падать в ошибку проверки.
Причем с тех серверов с которых на 3.9 все время проверялось нормально
Снимок.PNG
Title: Re: После перехода с 3.9 на 4.3.1 плохо работает проверка сертификатов
Post by: Filipp Sudanov on February 15, 2023, 12:54:22 AM
На 7 уровне дебага на агенте видны подробности, там openssl вызывается:

2023.02.15 00:46:09.805 *D* [comm.cs.98        ] Requesting metric "HTTPS.CertificateExpireDate(host)"
2023.02.15 00:46:09.805 *D* [comm.cs.98        ] H_ExternalMetric called for "HTTPS.CertificateExpireDate(host)" "openssl s_client -showcerts -servername $1 -connect $1:443 </dev/null 2>/dev/null | openssl x509 -inform pem -noout -enddate | cut -d = -f 2"
2023.02.15 00:46:09.805 *D* [exec              ] RunExternal called for "HTTPS.CertificateExpireDate(host)" "openssl s_client -showcerts -servername $1 -connect $1:443 </dev/null 2>/dev/null | openssl x509 -inform pem -noout -enddate | cut -d = -f 2"
2023.02.15 00:46:09.806 *D* [exec              ] RunExternal: command line is "openssl s_client -showcerts -servername host -connect host:443 </dev/null 2>/dev/null | openssl x509 -inform pem -noout -enddate | cut -d = -f 2"
2023.02.15 00:46:09.809 *D* [procexec          ] ProcessExecutor::execute(): process "openssl s_client -showcerts -servername host -connect host:443 </dev/null 2>/dev/null | openssl x509 -inform pem -noout -enddate | cut -d = -f 2" started
2023.02.15 00:46:09.827 *D* [procexec          ] ProcessExecutor::readOutput(): stopped on read (rc=0 err=Success)
2023.02.15 00:46:09.827 *D* [comm.cs.98        ] GetMetricValue("HTTPS.CertificateExpireDate(host)"): 0 (SUCCESS) value = "unable to load certificate"

Можно агента оставить с дебагом на 7 уровне, там будет видно что возвращается. Или просто погонять на эту команду на системе.
Title: Re: После перехода с 3.9 на 4.3.1 плохо работает проверка сертификатов
Post by: Akira on February 15, 2023, 07:48:39 AM
Windows Server 2019
дебаг агента 9 уровень, агент 4.3.1
включен субагент SubAgent = portcheck.nsm
вызова openssl не видно

2023.02.15 08:45:36.170 *D* [comm.cs.1          ] Requesting metric "TLS.Certificate.ExpiresIn(mail. ###,443)"
2023.02.15 08:45:36.201 *D* [netsvc            ] NetConnectTCP(mail. ###.ru:443): connect failed (timeout 30 ms)
2023.02.15 08:45:36.201 *D* [comm.cs.1          ] GetMetricValue("TLS.Certificate.ExpiresIn(mail.###.ru,443)"): 500 (INTERNAL_ERROR) value = ""

Нет там таймаута, валится сразу

Вызов openssl с того же сервера нормально возвращает ответ
openssl s_client -showcerts -servername mail.###.ru -connect mail.###.ru:443

P.S. Кстати, агент мне не предлагает параметр  HTTPS.CertificateExpireDate, как в примере.
Title: Re: После перехода с 3.9 на 4.3.1 плохо работает проверка сертификатов
Post by: Filipp Sudanov on February 16, 2023, 02:47:41 PM
Да, HTTPS.CertificateExpireDate - это я фигню написал - на системе где я смотрел был настроен такой ExternalParameter.

А с TLS.Certificate.ExpiresIn есть ошибка в коде - там таумаут по умолчанию должен был быть 30 сек, а получился 30 мс. Будет поправлено в следующем патч релизе.

На сейчас можно сделать так:
TLS.Certificate.ExpiresIn(mail.###.ru,443,,timeout=30000)
Только после патч релиза нужно будет это убрать или заменить на timeout=30, иначе таймаут станет 30 тысяч секунд
Title: Re: После перехода с 3.9 на 4.3.1 плохо работает проверка сертификатов
Post by: Filipp Sudanov on February 16, 2023, 07:47:36 PM
Таймаут все-таки будет задаваться в миллисекундах, так что TLS.Certificate.ExpiresIn(mail.###.ru,443,,timeout=30000) может оставаться и в дальнейшем
Title: Re: После перехода с 3.9 на 4.3.1 плохо работает проверка сертификатов
Post by: Akira on February 20, 2023, 07:41:12 AM
с такими настройками работает