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