- Создал(а) Александр Акимов, редактировал(а) Антон Бутвин июл 03, 2024
Смена сертификата через интерфейс
TRASSIR актуальных версий позволяет заменять сертификат через интерфейс. Функционал доступен как на TRASSIR OS, так и на Windows. Рекомендуется менять сертификат через интерфейс.
- Зайти в «Настройки сервера» и нажать кнопку «Управление сертификатами».
- В появившемся окне нажать кнопку «Изменить».
- В появившемся диалоговом окне указать пути к файлам сертификатов. Если ключ защищён паролем, указать пароль.
Основные функции
Скрипт позволяет сменить SSL сертификат, используемый на серверах TRASSIR OS.
Установка
- Перейти в автоматизацию, нажать «Загрузить пример» и выбрать «Из файла», указав путь к скрипту.
- Снять галочку «Включить скрипт» и нажать сохранить.
- Перейти в параметры, выбрать сервер и ввести тело (только содержимое внутри тегов) ssl_cert и ssl_pkey, по примеру:
- Снова сохранить скрипт.
- Для присвоения сертификата, поставьте галочку включить скрипт.
В случае успешного завершения работы скрипта вы увидите сообщение: ERROR: ResultMessage: Certificates successfully changed
code
# Change SSL v2.0 """ <parameters> <company>AATrubilin</company> <title>Change SSL</title> <version>2.0</version> <parameter> <type>server</type> <id>SERVER_GUID</id> <name>Trassir server</name> <value></value> </parameter> <parameter> <type>string</type> <name>Certificate</name> <id>SSL_CERT</id> <value></value> </parameter> <parameter> <type>string</type> <name>Private key</name> <id>SSL_PKEY</id> <value></value> </parameter> </parameters> """ import host GLOBALS = globals() SERVER_GUID = GLOBALS.get("SERVER_GUID", "") SSL_CERT = GLOBALS.get("SSL_CERT", "") SSL_PKEY = GLOBALS.get("SSL_PKEY", "") if not SERVER_GUID: raise ValueError(host.tr("Server not selected")) class ResultMessage(Exception): def __init__(self, message): message = """<span style="color: #009900">{message}</span>""".format( message=message ) super(ResultMessage, self).__init__(message) def update_certificates(server_guid, cert, pkey): """Update server certificates Args: server_guid (str): Server guid cert (str): Certificate pkey (str): Private key Raises: ValueError: if empty cert or pkey RuntimeError: if no access to ssl_cert or ssl_pkey key in system_wide_options ResultMessage: if changed success """ if not server_guid: server_guid = host.settings("").guid if not cert: raise ValueError(host.tr("Empty certificate")) if not pkey: raise ValueError(host.tr("Empty private key")) system_wide_options = host.settings("/{}/system_wide_options".format(server_guid)) try: system_wide_options["ssl_cert"] = ( "-----BEGIN CERTIFICATE-----\n{certificate}\n-----END CERTIFICATE-----" ).format(certificate=cert) system_wide_options["ssl_pkey"] = ( "-----BEGIN RSA PRIVATE KEY-----\n{private_key}\n-----END RSA PRIVATE KEY-----" ).format(private_key=pkey) except KeyError: raise RuntimeError( host.tr("Script user has no enough access or you need upgrade Trassir!") ) raise ResultMessage(host.tr("Certificates successfully changed")) update_certificates(SERVER_GUID, SSL_CERT, SSL_PKEY)