Page tree
Skip to end of metadata
Go to start of metadata

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

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

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


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


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

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

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


Скачать



  • No labels