Page tree

Смена сертификата через интерфейс

TRASSIR актуальных версий позволяет заменять сертификат через интерфейс. Функционал доступен как на TRASSIR OS, так и на Windows. Рекомендуется менять сертификат через интерфейс.

  1. Зайти в «Настройки сервера» и нажать кнопку «Управление сертификатами».


  2. В появившемся окне нажать кнопку «Изменить».


  3. В появившемся диалоговом окне указать пути к файлам сертификатов. Если ключ защищён паролем, указать пароль.

Основные функции

Скрипт позволяет сменить 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)


Скачать



  • No labels