Автор
Vitekzz
Хочу создать программу для автоматизации работы с KSC c помощью KlAkOAPI при запуске проверочного кода для загрузки информации об обновлениях постоянно выходит ошибка о использовании самоподписанного сертификата, которую не получается убрать, как можно решить данную проблему?
Вот сам код программы:
from KlAkOAPI.AdmServer import KlAkAdmServer
from KlAkOAPI import Updates
from datetime import timedelta
import urllib3
import ssl # Импортируем модуль ssl
import json
username = 'KLAPI'
password = '1234QwZ'
KSC_LIST = {
'WINDOWS': 'https://127.0.0.1:13299'
}
def ConnectKSC(ip):
"""Подключается к серверу Kaspersky Security Center."""
while True:
try:
connect = KlAkAdmServer.Create(ip, username, password, verify=False, vserver='')
if connect:
print('Успешно подключился к {}'.format(ip))
else:
print('Ошибка подключения к {}'.format(ip))
return None # Возвращает None, если подключение не удалось. Не завершает программу.
return connect
except Exception as e:
print(f"Ошибка подключения: {e}")
return None # Возвращает None, если подключение не удалось
def get_status_hosts(server, ip):
"""Получает и печатает информацию о статусе обновлений для сервера KSC."""
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
params = [] # params не используется
if server is not None:
try:
# Создаем SSL-контекст, который не проверяет сертификаты
context = ssl.create_default_context()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
# Модифицируем объект сессии для отключения проверки SSL
server.session.verify = False # Отключаем проверку глобально для сессии
server.session.cert = None # Удаляем существующий сертификат
straccessor = Updates.KlAkUpdates(server).GetUpdatesInfo(pFilter=params) # Нет аргумента ssl_context
ncount = straccessor.RetVal()
if ip == KSC_LIST['WINDOWS']:
if 1 in ncount: # Проверяем, что индекс существует
data = ncount[1]
print('')
print('KSC ======== [ {} ] ========'.format(KSC_LIST['WINDOWS']))
print('Дата создания: {}'.format(data['Date'] + timedelta(hours=3)))
print('Дата получения: {}'.format(data['KLUPDSRV_BUNDLE_DWL_DATE'] + timedelta(hours=3)))
print('============================')
else:
print("Не удалось получить данные для WINDOWS KSC")
else:
print(f"Неизвестный IP-адрес KSC: {ip}") # Добавлена проверка на некорректный IP-адрес KSC
except Exception as e:
print(f"Ошибка при получении информации об обновлениях с {ip}: {e}")
else:
print('Ошибка доступа к серверу') # Это сообщение может вводить в заблуждение, если подключение к серверу не удалось во время ConnectKSC.
if __name__ == '__main__': # Исправлена ошибка 'name' на '__name__'
for ip in KSC_LIST.values():
server = ConnectKSC(ip)
if server: # Продолжаем только если подключение успешно
try:
get_status_hosts(server, ip)
except Exception as e:
print(f"Ошибка в get_status_hosts для {ip}: {e}")
else:
print(f"Не удалось подключиться к {ip}. Пропускаем проверку статуса обновлений.") # Добавлено сообщение, если подключение не удалось.
Ошибка которая появляется при запуске кода:
Успешно подключился к https://127.0.0.1:13299
C:\Users\user\PycharmProjects\ksc\.venv\Lib\site-packages\urllib3\connectionpool.py:1097: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings
warnings.warn(
Не удалось получить данные для WINDOWS KSC
Process finished with exit code 0
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти