Изменения документа Настройка https для PERCo-Web
Редактировал(а) PROSTO:СКУД 2026/10/30 12:30
От версии 3.1
отредактировано PROSTO:СКУД
на 2026/09/30 09:58
на 2026/09/30 09:58
Изменить комментарий:
К данной версии нет комментариев
К версии 1.1
отредактировано PROSTO:СКУД
на 2026/09/30 09:35
на 2026/09/30 09:35
Изменить комментарий:
К данной версии нет комментариев
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -1,125 +1,133 @@ 1 - =Подключение1С к PERCo-Web по HTTPS=1 +# Подключение ПРОСТО:СКУД к PERCo-Web по HTTPS 2 2 3 -Инструкция предназначена для администратора PERCo-Web и сервера 1С.В примерахиспользуетсяадрес##192.168.12.22##.Замените его на адрес своего сервераPERCo-Web.3 +Инструкция для администратора PERCo-Web и сервера 1С. Пример ниже использует IP-адрес `192.168.12.22`; перед выполнением замените его на адрес своего сервера. 4 4 5 - ==1.Подготовка==5 +## 1. Определите адрес подключения 6 6 7 -Адрес в настройках подключения1С должен совпадать с адресом в сертификате PERCo-Web:7 +Адрес, указанный в настройках интеграции 1С, должен совпадать с адресом в сертификате PERCo-Web: 8 8 9 - *При подключениипо IP сертификат должен содержать этот IP в поле Subject Alternative Name (SAN) как##IP Address##.10 - *При подключениипо имени сертификат должен содержать это имя в SAN как##DNS Name##.9 +- Если 1С подключается по IP, сертификат должен содержать этот IP в поле **Subject Alternative Name (SAN)** как `IP Address`. 10 +- Если 1С подключается по имени, сертификат должен содержать это имя в SAN как `DNS Name`. 11 11 12 - Еслиподходящийсертификатизакрытыйключужеимеются вфайлах ##.crt## и ##.key##, переходите к разделу3.12 +Одного поля `CN` недостаточно для надёжной проверки адреса. [Правила проверки HTTPS-сертификата](https://www.rfc-editor.org/rfc/rfc9110.html#section-4.3.5) 13 13 14 - Длясозданиясобственного сертификатапотребуетсяOpenSSL. Командыниже выполняютсявPowerShell наWindows.Запускайтеихпопорядку,каждуюстроку отдельно.14 +Если у вас уже есть подходящий сертификат и закрытый ключ в файлах `.crt` и `.key`, переходите к разделу 3. 15 15 16 - ==2. Создание сертификатас помощью OpenSSL==16 +## 2. Создайте сертификат с помощью OpenSSL 17 17 18 - УкажитеIPсервераPERCo-Webисоздайтепапку дляфайлов:18 +Команды выполняются в **PowerShell на Windows**. OpenSSL можно запустить на отдельном компьютере администратора. Выполняйте команды по порядку, **каждую строку отдельно**. 19 19 20 -{{code language="powershell"}} 20 +Укажите IP PERCo-Web и создайте новую папку: 21 + 22 +```powershell 21 21 $PercoIP = "192.168.12.22" 24 +``` 25 + 26 +```powershell 22 22 $CertDir = Join-Path $env:USERPROFILE ("perco-tls-" + (Get-Date -Format "yyyyMMdd-HHmmss")) 28 +``` 29 + 30 +```powershell 23 23 New-Item -ItemType Directory -Path $CertDir 32 +``` 33 + 34 +```powershell 24 24 Set-Location -LiteralPath $CertDir 25 - {{/code}}36 +``` 26 26 27 -Создайте внутренний удостоверяющий центр (УЦ). OpenSSL пр едложитзадатьпароль длязакрытого ключа##ca.key##. Сохраните этот пароль.38 +Создайте внутренний удостоверяющий центр (УЦ). OpenSSL запросит пароль для файла `ca.key`: 28 28 29 - {{code language="powershell"}}40 +```powershell 30 30 Set-Content -Path .\ca.cnf -Encoding ascii -Value @('[req]','distinguished_name = dn','x509_extensions = v3_ca','[dn]','CN = PERCo Internal Root CA','[v3_ca]','basicConstraints = critical,CA:TRUE,pathlen:0','keyUsage = critical,keyCertSign,cRLSign','subjectKeyIdentifier = hash') 42 +``` 43 + 44 +```powershell 31 31 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" 32 - {{/code}}46 +``` 33 33 34 -Создайте ключ и запрос на сертификат PERCo-Web:48 +Создайте ключ и запрос на сертификат сервера: 35 35 36 - {{code language="powershell"}}50 +```powershell 37 37 openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out perco.key 52 +``` 53 + 54 +```powershell 38 38 openssl req -new -sha256 -key perco.key -out perco.csr -subj "/CN=$PercoIP" 39 - {{/code}}56 +``` 40 40 41 -Добавьте IP -адресв SAN и подпишите сертификат.OpenSSLзапросит пароль от##ca.key##.58 +Добавьте IP в SAN и выпустите сертификат. При выпуске снова потребуется пароль от `ca.key`: 42 42 43 - {{code language="powershell"}}60 +```powershell 44 44 Set-Content -Path .\server.ext -Encoding ascii -Value @('[v3_server]','basicConstraints = critical,CA:FALSE','keyUsage = critical,digitalSignature,keyEncipherment','extendedKeyUsage = serverAuth',"subjectAltName = IP:$PercoIP",'subjectKeyIdentifier = hash','authorityKeyIdentifier = keyid,issuer') 62 +``` 63 + 64 +```powershell 45 45 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 46 - {{/code}}66 +``` 47 47 48 -Проверьте выпущенныйсертификат:68 +Проверьте сертификат: 49 49 50 - {{code language="powershell"}}70 +```powershell 51 51 openssl verify -CAfile ca.crt -purpose sslserver -verify_ip $PercoIP perco.crt 52 -openssl x509 -in perco.crt -noout -ext subjectAltName -fingerprint -sha256 53 -{{/code}} 72 +``` 54 54 55 - Первая командадолжнавывести##perco.crt: OK##,вторая— нужный ##IPAddress##.74 +Ожидаемый результат — `perco.crt: OK`. Проверка SAN: 56 56 57 -|=Файл|=Назначение 58 -|##perco.crt##|Сертификат сервера PERCo-Web 59 -|##perco.key##|Закрытый ключ сервера PERCo-Web 60 -|##ca.crt##|Сертификат внутреннего УЦ для доверия на сервере 1С 61 -|##ca.key##|Закрытый ключ внутреннего УЦ; хранить отдельно, не загружать в PERCo-Web или на сервер 1С 76 +```powershell 77 +openssl x509 -in perco.crt -noout -ext subjectAltName -fingerprint -sha256 78 +``` 62 62 63 - ==3.Установка сертификата вPERCo-Web ==80 +В выводе должен быть нужный `IP Address`. Использованные расширения сертификата описаны в [документации OpenSSL](https://docs.openssl.org/3.0/man5/x509v3_config/). 64 64 65 - Откройте**МенеджерPERCo-Web → Настройки→ HTTPS исертификаты**.82 +## 3. Установите сертификат в PERCo-Web 66 66 67 -1. В поле сертификата выберите ##perco.crt##. 68 -1. В поле ключа выберите соответствующий ##perco.key##. 69 -1. Нажмите **Сохранить** и включите **HTTPS**. 70 -1. Проверьте назначенный порт HTTPS — обычно ##443##. 71 -1. На вкладке **Мониторинг** перезапустите **Web-сервер** PERCo-Web. 84 +Откройте **Менеджер PERCo-Web → Настройки → HTTPS и сертификаты**: 72 72 73 -**Важно:** после загрузки новых файлов если ранее уже были настроен доступ через 443 порт, сервер может продолжать выдавать прежний сертификат до перезапуска. Чтобы это исправить, перезагрузите сервер PERCo-Web в согласованное время. 86 +1. В поле сертификата выберите `perco.crt`. 87 +2. В поле ключа выберите соответствующий `perco.key`. 88 +3. Нажмите **Сохранить** и включите **HTTPS**. 89 +4. Проверьте, что для HTTPS назначен нужный порт, обычно `443`. 90 +5. На вкладке **Мониторинг** перезапустите **Web-сервер**. Если после этого порт 443 продолжает отдавать прежний сертификат, перезагрузите сервер PERCo-Web в согласованное время. 74 74 75 - [[ОписаниенастроекHTTPSвдокументацииPERCo-Web>>https://ru.percoweb.com/help/server_db.htm]]92 +Поля загрузки сертификата и ключа описаны в [руководстве PERCo-Web](https://ru.percoweb.com/help/server_db.htm). **Не загружайте в PERCo-Web файл `ca.key`.** 76 76 77 - ==4. Настройкадоверияна сервере 1С==94 +## 4. Настройте доверие на сервере 1С 78 78 79 - При использованиивнутреннегоУЦ скопируйте##ca.crt##на компьютер, где выполняется обменс1С.Дляклиент-серверной базыэто сервер 1С.Еслиобменможет выполняться нанесколькихузлахкластера,установитесертификатУЦна каждомтакомузле.96 +Если использован внутренний УЦ из раздела 2, скопируйте **только `ca.crt`** на компьютер, где выполняется обмен 1С. В клиент-серверной базе это сервер 1С; при наличии кластера выполните шаг на каждом узле, который может выполнять обмен. 80 80 81 -Запустите PowerShell **отимениадминистратора**изаменитепуть нафактический:98 +Запустите PowerShell от администратора и укажите фактический путь к скопированному файлу: 82 82 83 - {{code language="powershell"}}100 +```powershell 84 84 Import-Certificate -FilePath "C:\путь\к\ca.crt" -CertStoreLocation Cert:\LocalMachine\Root 85 - {{/code}}102 +``` 86 86 87 -Для просмотра установленных сертификатовнажмите **Win + R**,введите##certlm.msc##и откройте**Доверенные корневые центры сертификации → Сертификаты**.Там долженнаходитьсясертификат ##PERCoInternal RootCA##.104 +Для просмотра хранилища нажмите **Win + R** и выполните `certlm.msc`. Сертификат УЦ должен появиться в **Доверенные корневые центры сертификации → Сертификаты**. [Документация Microsoft](https://learn.microsoft.com/en-us/powershell/module/pki/import-certificate?view=windowsserver2025-ps) 88 88 89 -Если сертификатPERCo-WebвыпущенУЦ, которомусервер1Суже доверяет, отдельный импорт не требуется.106 +Если в PERCo-Web установлен сертификат от уже доверенного УЦ, отдельный импорт может не потребоваться. 90 90 91 - ==5. ПроверкадействующегоHTTPS-сертификата==108 +## 5. Проверьте действующий сертификат и подключение 92 92 93 - Сначала посмотритеотпечаток созданногофайла:110 +После перезапуска PERCo-Web проверьте **не файл на диске, а сертификат, который реально выдаёт порт 443**: 94 94 95 - {{code language="powershell"}}96 -openssl x509-in.\perco.crt -noout -fingerprint -sha256 -ext subjectAltName97 - {{/code}}112 +```powershell 113 +'' | openssl s_client -connect "${PercoIP}:443" -noservername -showcerts 2>$null | openssl x509 -noout -subject -issuer -fingerprint -sha256 -ext subjectAltName 114 +``` 98 98 99 - Затемпроверьте сертификат,который**реальновыдаёт порт 443**. УкажитефактическийIPPERCo-Web:116 +Сравните его SHA-256 отпечаток с отпечатком `perco.crt`. Они должны совпадать. В нашем случае именно эта проверка обнаружила, что после загрузки нового файла PERCo-Web продолжал выдавать старый сертификат до перезагрузки. 100 100 101 -{{code language="powershell"}} 102 -'' | openssl s_client -connect 192.168.12.22:443 -noservername -showcerts 2>$null | openssl x509 -noout -fingerprint -sha256 -ext subjectAltName 103 -{{/code}} 118 +На сервере 1С проверьте HTTPS без отключения проверки сертификата: 104 104 105 -Отпечатки должны совпасть. Если они разные, PERCo-Web продолжает выдавать старый сертификат либо на порту 443 отвечает другой HTTPS-сервис. 120 +```powershell 121 +curl.exe -v --noproxy "*" "https://${PercoIP}:443/api/system/auth" 122 +``` 106 106 107 - На сервере1Спроверьтеподключениебезотключенияпроверкисертификата:124 +Ответ HTTP `401` или `405` для этого тестового `GET` допустим: он означает, что HTTPS-соединение установлено и сервер ответил. После этого в настройках интеграции 1С укажите тот же IP, порт `443`, включите защищённое соединение и повторите подключение. 108 108 109 -{{code language="powershell"}} 110 -curl.exe -v --noproxy "*" https://192.168.12.22:443/api/system/auth 111 -{{/code}} 126 +| Ошибка | Что проверить | 127 +| :-- | :-- | 128 +| `SEC_E_WRONG_PRINCIPAL`, «Главное конечное имя неверно» | IP или имя отсутствует в SAN; PERCo-Web выдаёт прежний сертификат | 129 +| «Удаленный узел не прошел проверку» | Доверие к УЦ, срок и цепочку сертификата, доступ к проверке отзыва, настройки прокси | 130 +| HTTP `401` | Учётные данные PERCo-Web | 131 +| HTTP `405` при тесте через `curl.exe` | Для `/api/system/auth` нужен `POST`; проверка HTTPS уже прошла | 112 112 113 -Ответ HTTP ##401## или ##405## для этой проверки допустим: команда отправляет GET-запрос, а цель проверки — убедиться, что HTTPS-соединение установлено и сертификат принят. 114 - 115 -После этого в настройках интеграции 1С укажите тот же адрес, порт ##443##, включите защищённое соединение и повторите подключение к PERCo-Web. 116 - 117 -== 6. Возможные ошибки == 118 - 119 -|=Сообщение|=Что проверить 120 -|##SEC_E_WRONG_PRINCIPAL##, «Главное конечное имя неверно»|Адрес отсутствует в SAN или порт 443 выдаёт прежний сертификат 121 -|«Удаленный узел не прошел проверку»|Доверие к УЦ, срок и цепочку сертификата, проверку отзыва, настройки прокси 122 -|HTTP ##401##|Учётные данные PERCo-Web 123 -|HTTP ##405## при тесте через ##curl.exe##|Для ресурса требуется POST; HTTPS-соединение уже прошло проверку 124 - 125 -**Хранение ключей:** файл ##perco.key## нужен Web-серверу PERCo-Web. Файл ##ca.key## храните отдельно в защищённом месте. 133 +**Хранение ключей:** `perco.key` необходим Web-серверу PERCo-Web. `ca.key` — закрытый ключ внутреннего УЦ; храните его отдельно и не передавайте на сервер 1С или в PERCo-Web.