- Created by Александр Акимов, last modified by Никита Никитин on Mar 11, 2025
Смена сертификата через интерфейс
TRASSIR актуальных версий позволяет заменять сертификат через интерфейс. Функционал доступен как на TRASSIR OS, так и на Windows. Рекомендуется менять сертификат через интерфейс.
- Зайти в «Настройки сервера» и нажать кнопку «Управление сертификатами».
- В появившемся окне нажать кнопку «Изменить».
- В появившемся диалоговом окне указать пути к файлам сертификатов. Если ключ защищён паролем, указать пароль.
Основные функции
Скрипт позволяет сменить SSL сертификат, используемый на серверах TRASSIR OS.
Установка
- Перейти в автоматизацию, нажать «Загрузить пример» и выбрать «Из файла», указав путь к скрипту.
- Снять галочку «Включить скрипт» и нажать сохранить.
- Перейти в параметры, выбрать сервер и ввести тело (только содержимое внутри тегов) ssl_cert и ssl_pkey, по примеру:
- Снова сохранить скрипт.
- Для присвоения сертификата, поставьте галочку включить скрипт.
В случае успешного завершения работы скрипта вы увидите сообщение: ERROR: ResultMessage: Certificates successfully changed
# 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)