Настройка сервера
Для взаимодействия приложений с веб-сервером «1С:Шина» использует протоколы HTTP и HTTPS. HTTPS обеспечивает безопасную передачу данных, шифруя трафик между клиентом и сервером. Это шифрование реализуется с помощью протокола TLS.
Принципы работы TLS-подключения
HTTPS-соединение с использованием TLS-протокола устанавливается следующим образом:
- Клиент отправляет запрос на сервер с информацией о поддерживаемых алгоритмах шифрования.
- Сервер отвечает, выбирая оптимальный алгоритм, и отправляет:
- свой SSL-сертификат;
- открытый ключ (для реализации асимметричного шифрования).
- Клиент проверяет:
- подлинность — выдан ли сертификат удостоверяющим центром;
- актуальность — не истек ли срок действия сертификата;
- действительность — не отозван ли сертификат;
- соответствие домену.
- Если проверка пройдена, устанавливается защищенное соединение — создаются сессионные закрытые ключи для симметричного шифрования:
- клиент генерирует pre-master secret, шифрует его открытым ключом и отправляет серверу;
- сервер расшифровывает его своим закрытым ключом;
- обе стороны вычисляют общий симметричный ключ, который будет использоваться для шифрования передаваемых данных.
- Далее все передаваемые данные шифруются симметричными алгоритмами, каждая сессия использует уникальные ключи.
Пример настройки HTTPS для локального сайта на примере сертификата PFX
Формат PFX или PKCS#12 — это стандартный способ хранения и передачи SSL-сертификатов вместе с закрытым ключом в одном защищенном файле. Используется в Windows-системах и многих веб-серверах. Файл сертификата имеет расширение .pfx или .p12.
В этом примере используется утилита с открытым исходным кодом mkcert. Она позволяет создать локальный удостоверяющий центр, а также сгенерировать самоподписанные SSL-сертификаты для этого центра.
Чтобы настроить HTTPS для локального сайта, выполните следующие действия:
- Windows
- Linux
-
Скачайте подходящий релиз утилиты, например mkcert-v1.4.4-windows-amd64.exe, и установите утилиту.
-
Выполните команду
mkcert-v1.4.4-windows-amd64.exe -install, чтобы создать локальный удостоверяющий центр. -
Выполните команду
mkcert -pkcs12 localhost, чтобы сгенерировать закрытый ключ и сертификат. -
Переименуйте созданный файл
localhost.p12вlocalhost.pfx. -
Импортируйте сертификат в хранилище Windows, указав в качестве пароля для закрытого ключа changeit.
-
Скопируйте файл
localhost.pfxвdata\securityкаталога экземпляра сервера. -
Задайте настройки сервера в файлах server.yml и security.yml для HTTPS-протокола.
-
Запустите сервер:
element-server.exe start --instance c:\instance_dir\ --jvmopt -Djavax.net.ssl.trustStoreType=WINDOWS-ROOT -
Откройте панель управления, чтобы проверить правильность настройки.
-
Скачайте подходящий релиз утилиты, например mkcert-v1.4.4-linux-amd64, и установите утилиту.
-
Выполните к оманду
sudo apt install libnss3-tools, чтобы установить утилиту libnss3-tools, которая обеспечивает поддержку работы с протоколом SSL/TLS. -
Выполните команду
./mkcert-v1.4.4-linux-amd64 -install, чтобы создать локальный удостоверяющий центр. -
Добавьте корневой сертификат mkcert в хранилище JKS. Используйте ту же версию Java, которую использует сервер:
sudo /opt/1C/1CE/components/azul-jdk-full-17.0.13+11-x86_64/bin/keytool -import -trustcacerts -keystore /opt/1C/1CE/components/azul-jdk-full-17.0.13+11-x86_64/lib/security/cacerts -storepass changeit -noprompt -alias mkcert -file ~/.local/share/mkcert/rootCA.pem` -
Выполните команду
mkcert -pkcs12 localhost, чтобы сгенерировать ключ и сертификат. -
Переименуйте созданный файл
localhost.p12вlocalhost.pfx:mv localhost.p12 localhost.pfx. -
Скопируйте файл
localhost.pfxвdata\securityкаталога экземпляра сервера. -
Задайте настройки сервера в файлах server.yml и security.yml для HTTPS-протокола.
-
Откройте панель управления, чтобы проверить правильность настройки.