Настройка https для PERCo-Web
Инструкция предназначена для администратора PERCo-Web и сервера 1С. В примерах используется адрес 192.168.12.22. Замените его на адрес своего сервера PERCo-Web.
1. Подготовка
Адрес в настройках подключения 1С должен совпадать с адресом в сертификате PERCo-Web:
- При подключении по IP сертификат должен содержать этот IP в поле Subject Alternative Name (SAN) как IP Address.
- При подключении по имени сертификат должен содержать это имя в SAN как DNS Name.
Если подходящий сертификат и закрытый ключ уже имеются в файлах .crt и .key, переходите к разделу 3.
Для создания собственного сертификата потребуется OpenSSL. Команды ниже выполняются в PowerShell на Windows. Запускайте их по порядку, каждую строку отдельно.
2. Создание сертификата с помощью OpenSSL
Укажите IP сервера PERCo-Web и создайте папку для файлов:
$CertDir = Join-Path $env:USERPROFILE ("perco-tls-" + (Get-Date -Format "yyyyMMdd-HHmmss"))
New-Item -ItemType Directory -Path $CertDir
Set-Location -LiteralPath $CertDir
Создайте внутренний удостоверяющий центр (УЦ). OpenSSL предложит задать пароль для закрытого ключа ca.key. Сохраните этот пароль.
openssl req -x509 -newkey rsa:3072 -sha256 -days 3650 -keyout ca.key -out ca.crt -config ca.cnf -extensions v3_ca -subj "/CN=PERCo Internal Root CA"
Создайте ключ и запрос на сертификат PERCo-Web:
openssl req -new -sha256 -key perco.key -out perco.csr -subj "/CN=$PercoIP"
Добавьте IP-адрес в SAN и подпишите сертификат. OpenSSL запросит пароль от ca.key.
openssl x509 -req -in perco.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out perco.crt -days 397 -sha256 -extfile server.ext -extensions v3_server
Проверьте выпущенный сертификат:
openssl x509 -in perco.crt -noout -ext subjectAltName -fingerprint -sha256
Первая команда должна вывести perco.crt: OK, вторая — нужный IP Address.
| Файл | Назначение |
|---|---|
| perco.crt | Сертификат сервера PERCo-Web |
| perco.key | Закрытый ключ сервера PERCo-Web |
| ca.crt | Сертификат внутреннего УЦ для доверия на сервере 1С |
| ca.key | Закрытый ключ внутреннего УЦ; хранить отдельно, не загружать в PERCo-Web или на сервер 1С |
3. Установка сертификата в PERCo-Web
Откройте Менеджер PERCo-Web → Настройки → HTTPS и сертификаты.
- В поле сертификата выберите perco.crt.
- В поле ключа выберите соответствующий perco.key.
- Нажмите Сохранить и включите HTTPS.
- Проверьте назначенный порт HTTPS — обычно 443.
- На вкладке Мониторинг перезапустите Web-сервер PERCo-Web.
Важно: после загрузки новых файлов если ранее уже были настроен доступ через 443 порт, сервер может продолжать выдавать прежний сертификат до перезапуска. Чтобы это исправить, перезагрузите сервер PERCo-Web в согласованное время.
Описание настроек HTTPS в документации PERCo-Web
4. Настройка доверия на сервере 1С
При использовании внутреннего УЦ скопируйте ca.crt на компьютер, где выполняется обмен с 1С. Для клиент-серверной базы это сервер 1С. Если обмен может выполняться на нескольких узлах кластера, установите сертификат УЦ на каждом таком узле.
Запустите PowerShell от имени администратора и замените путь на фактический:
Для просмотра установленных сертификатов нажмите Win + R, введите certlm.msc и откройте Доверенные корневые центры сертификации → Сертификаты. Там должен находиться сертификат PERCo Internal Root CA.
Если сертификат PERCo-Web выпущен УЦ, которому сервер 1С уже доверяет, отдельный импорт не требуется.
5. Проверка действующего HTTPS-сертификата
Сначала посмотрите отпечаток созданного файла:
Затем проверьте сертификат, который реально выдаёт порт 443. Укажите фактический IP PERCo-Web:
Отпечатки должны совпасть. Если они разные, PERCo-Web продолжает выдавать старый сертификат либо на порту 443 отвечает другой HTTPS-сервис.
На сервере 1С проверьте подключение без отключения проверки сертификата:
Ответ HTTP 401 или 405 для этой проверки допустим: команда отправляет GET-запрос, а цель проверки — убедиться, что HTTPS-соединение установлено и сертификат принят.
После этого в настройках интеграции 1С укажите тот же адрес, порт 443, включите защищённое соединение и повторите подключение к PERCo-Web.
6. Возможные ошибки
| Сообщение | Что проверить |
|---|---|
| SEC_E_WRONG_PRINCIPAL, «Главное конечное имя неверно» | Адрес отсутствует в SAN или порт 443 выдаёт прежний сертификат |
| «Удаленный узел не прошел проверку» | Доверие к УЦ, срок и цепочку сертификата, проверку отзыва, настройки прокси |
| HTTP 401 | Учётные данные PERCo-Web |
| HTTP 405 при тесте через curl.exe | Для ресурса требуется POST; HTTPS-соединение уже прошло проверку |
Хранение ключей: файл perco.key нужен Web-серверу PERCo-Web. Файл ca.key храните отдельно в защищённом месте.