Некоторые особенности установки Apache 2.4 для 1С + SSL

30.11.20

Администрирование - Администрирование веб-серверов

Проблемы, возникшие при установке Apache 2.4, их решение.

Добрый день, коллеги.

Выкладываю свой опыт решения проблем, с которыми столкнулась при установке APACHE 2.4 . Надеюсь, кому-то поможет сэкономить время.

На другом сервере используется IIS. Но при передаче больших объемов данных, вот выкладывала вопрос по этой ссылке Мой вопрос, жутко грузит систему. Ничего не помогло, поэтому было решение попробовать поработать с APACHE 2.4 .

Саму установку не буду описывать, на просторах интернета выложено много статей на эту тему. Отмечу то, что использовала:

  • это установка готовой сборки со встроенной OpenSSL, (подробно как это сделать описано здесь Готовая сборка)
  • и отдельно установка APACHE 2.4 , скачанная с официального сайта (Оф сайт) + настройка SSL (Настройка SSL).

Оба попробовала и оба рабочие варианты.

Больше понравился первый вариант со встроенным Openssl, хотя OpenSSL пришлось все равно устанавливать (не для создания сертификата), но об этом ниже.

Входные данные:

Сервер:



1С Платформа: 1С:Предприятие 8.3 (8.3.18.1208) 64-разрядная.

1. Первое, с чем столкнулась, это не запускалась служба Apache 2.4 При запуске выдавалась информация про специфическую ошибку 1 (при рестарте вручную).

В логах Apache пусто.

В логах ОС в журнале "Неверно указаная функция".

При рестарте через командную строку httpd.exe -k restart можно было увидеть описание ошибки: невозможно запустить Apache и что по-умолчанию Apache использует порты 80 или 8090 (пишу по памяти).

Для того, чтобы проверить порт 80 на доступность, воспользовалась командой netstat -aon | findstr 0.0:80.

Для этого необходимо запустить командную строку с правами администратора и выполнить эту команду.

Получается такой список. Это как у меня сейчас, уже после решения проблемы.




В моем случае показало, что PID процесса 4 (последний столбец PID). Это значит, что порт занят системным процессом.
(Если отличный от 4, то нужно сохранить PID , перейти в диспетчер задач, выбрать Вид - Выбрать столбцы , поставить галку ИД процесса(PID). найти процесс, который занимает порт 80.)

Вернемся к PID = 4. Здесь было непонятно, что за процесс и как его искать. я пошла другим путем, не стала искать, что за процесс.

Мне помогло решить эту проблему следующее:

Выбираем Выполнить - regedit (идем в реестр), открываем ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP

Находим параметр "Start" (определяющий порядок запуска драйвера или сервиса) и меняем значение на 0 (число).

Перезагружаем компьютер.

После этого успешно получилось запустить Apache.

2. Вторая проблема: проблема аутентификации.

При переходе в браузере по адресу публикации базы постоянно требует ввода пользователя и пароля.

После публикации HTTP сервиса в 1С при тестировании (использую для тестирования http сервисов insomnia designer) показывает ошибку 401 (ошибка аутентификации).

Есть два способа решения, которыми воспользовалась и которые работают. Первый и очевидный: прописать в самом файле default.vrd имя пользователя и пароль, но это будет не совсем верно, так как при повторной публикации придется прописывать заново.

Второй вариант: создание отдельной учетной записи для запуска службы Apache. Опишу по шагам.

Именно его использую.

1. Создаем пользователя домена, запоминаем его пароль.
2. Заходим в локальную политику безопасности (Панель управления - Администрирование) находим Локальные политики - Назначение прав пользователя. Назначаем пользователю права: вход в качестве службы, работа в режиме операционной системы.
3. Проверяем, что пользователь является членом группы "Пользователи"
4. Предоставляем полный доступ к папке Apache 2.4. В мануале по Apache 2.4 написано, что достаточно прав на чтение и выполнение, и только на папку logs - запись, но так у меня служба не запускалась.
5. Находим службу Apache 2.4 , переходим в свойства и выбираем этого пользователя для запуска службы. Перезапускаем Apache. Если ошибка, то проверяем все ли права.
6. Далее идем в 1С. Создаем пользователя, устанавливаем ему Аутентификация ОС и указываем созданного пользователя.

3. Третье. Это даже не проблема, скорее дополнение. Использование сертификата, который уже был создан на сервере.

В статьях, которые использовала для установки выше, описано, как самим создать сертификат и его использовать. У меня уже был созданный само подписанный сертификат, для его использования необходимо было разобрать файл pfx (формат, в котором сохраняется сертификат при экспорте) на cert и key. При экспорте, отмечу, необходимо указать пароль и указать экспорт закрытого ключа.

1. Для этого устанавливаем OpenSSL по ссылке
Open SSL

2. В командной строке переходим к bin папки, где был установлен OPENSSL. Вводим команду
openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out certificate.crt
с помощью команды получаем сертификат (необходимо указать пароль, который был указан при
экспорте)

3. Извлекаем ключ , указав и пароль экспорта и новый пароль ключа.
openssl pkcs12 -in certificate.pfx -nocerts -out key-encrypted.key

4. Снимаем пароль с ключа командной
openssl rsa -in key-encrypted.key -out key-decrypted.key

5. Если нужно получить cert, то команда
openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out certificate.cert

В итоге получаем файлы: certificate.crt , key-decrypted.key.

Теперь можем использовать эти файлы для настройки Apache по SSL.

4. Проблема, которую так и не решила: Для работы 1С в режиме тонкого клиента необходимо указать сертификат в папке cacert.pem (здесь также использовала OPENSSL, если кому будет интересно, могу дописать, а так можно найти информацию на Инфостарте).

Добавила сертификат в этот файл, но через https 1С в режиме тонкого клиента так и не заработал.

Помогает только отключение проверки сертификата в 1С, возможно, это из-за того, что сертификат самоподписанный. Или, еще как вариант, это блокировка интернет провайдера, или настройки сети. Буду признательна за подсказки.

И теперь, самое главное, установкой Apache решилась самая основная проблема: это зависание всей системы при передаче большого объема данных при использовании http сервисов 1С.

Спасибо за внимание.

Apache 2.4 1Сx64

См. также

Путь самурая. Ставим локальный Сервер взаимодействия

Сервера Администрирование веб-серверов Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подробная пошаговая инструкция (как делал я) установки Сервера взаимодействия версия 22.0.26 на Windows Server 2022. Установка собственного объектного хранилище с помощью системы MinIO (https://min.io/). Настройка Сервера взаимодействия для обмена файлами в сообщениях.

1 стартмани

07.04.2023    12584    VPanin56    40    

72

Публикатор 1С. Как публиковать базы с комфортом

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

Сегодня я расскажу вам про публикатор 1С баз. Это приложение, которое позволит с комфортом и удобством управлять зоопарком ваших веб публикаций. Если у вас больше 5 публикаций, и вам надо с ними что-то делать с завидным постоянством. Если для того чтобы опубликовать тестовую базу, вам приходится идти в техподдержку Если вам просто надоело копаться в конфигах, раздумывая, а нигде ли вы не ошиблись в пробелах и запятых - то тогда вам будет интересна эта публикация.

20.03.2023    6707    72    Segate    4    

26

Midnight Commander, установленный с Entware, не выполняет команды и не запускает файлы

Администрирование веб-серверов Linux Бесплатно (free)

Столкнулся с проблемой, установил на роутер Midnigt Commander с репозитория Entware, при попытке выполнения команды программа пишет ошибку "The shell is already running a command". Данная публикация описывает способ решения этой проблемы.

20.03.2023    3395    Eugen-S    2    

3

Публикация 1С на Apache SSL в локальной среде разработки

Администрирование веб-серверов Платформа 1С v8.3 Бесплатно (free)

В статье описывается установка и настройка веб-сервера Apache для работы с 1С через https.

09.02.2023    5355    lone_mayson    4    

41

Контейнер Docker для размещения публикации базы 1С на разных платформах

Администрирование веб-серверов Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

Появилась необходимость развернуть на одном хосте две публикации базы, но не на одной платформе, а на разных. Тут я расскажу, как это сделать для версии 8.3.22.1704.

02.02.2023    3380    Sney_Kice    1    

21

Быстрое конфигурирование серверов с Ansible

Администрирование веб-серверов Сервера Бесплатно (free)

Всю рутину по обновлению платформы, настройке веб-серверов и серверов хранилищ на всем парке серверов компании можно автоматизировать с помощью удобочитаемых YAML-скриптов Ansible. О том, как написать сценарии такой автоматизации, чтобы запускать их параллельно для группы серверов, на митапе «Инструменты автоматизации рутины в 1С-разработке» рассказал ведущий разработчик компании ПИК Digital Павел Комаров.

26.01.2023    4910    lopatrik    4    

22
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Восьмой 87 30.11.20 13:40 Сейчас в теме
Вот это респект, материал очень хорошо изложен, конечно нужно еще немного поработать над стилистикой но Гайд по апачу - то что доктор прописал.
AlexK_2012; jenyavp; +2 Ответить
2. Flok 2 30.11.20 14:46 Сейчас в теме
Спасибо ,есть интересные моменты, но не совсем понял в чем проблема описанная в 2. Вторая проблема: проблема аутентификации.
Можно ее как -то дополнить скриншотами ?
3. jenyavp 101 30.11.20 15:04 Сейчас в теме
(2)
Прикрепленные файлы:
4. Восьмой 87 30.11.20 15:14 Сейчас в теме
(3) А это что за программа на скрин шоте?
5. jenyavp 101 30.11.20 15:22 Сейчас в теме
(4) insomnia designer, вот ссылка здесь можно скачать.
Очень удобный инструмент для тестирования http сервисов.
Возможно, напишу статью про него.
Восьмой; +1 Ответить
6. Восьмой 87 30.11.20 16:41 Сейчас в теме
(5) Спасибо большое буду разбиратся
7. zaoproxy 36 01.12.20 08:00 Сейчас в теме
Добрый день.
Что бы 1С в режиме тонкого клиента работала по протоколу https без отключения проверки сертификата нужно обязательно использовать не самоподписанный сертификат.
Восьмой; jenyavp; +2 Ответить
8. jenyavp 101 01.12.20 09:58 Сейчас в теме
(7) Спасибо! Значит именно в этом и проблема.
10. Sedaiko 572 02.12.20 12:57 Сейчас в теме
(7) Необязательно. Просто нужно это же сертификат добавить в доверенные корневые средствами windows
11. jenyavp 101 02.12.20 19:32 Сейчас в теме
(10) Добавляла, но это мне не помогло, к сожалению.
14. Sedaiko 572 03.12.20 00:18 Сейчас в теме
(11)Открываем сертификат прямо в браузере (у меня его, как видно на снимке, даже хром признал). Нажимаем "копировать в файл", потом импортируем в Windows - Доверенные корневые центры сертификации.

P.S. Есть сервисы с бесплатными SSL, я использую Бот Let’s Encrypt. Сертификат выдается на 3 месяца, но у меня в CentOS он автоматически обновляется. Разумеется сервер должен смотреть наружу.
Прикрепленные файлы:
15. jenyavp 101 03.12.20 05:46 Сейчас в теме
(14) Про импорт знаю, делала и так и через mmc, но дело в том, что если подключение идет из вне или по VPN, то признает как "безопасное подключение", но если внутри сети то Нет. В 4 пункте я говорила про работу 1С в режиме тонкого клиента.

16. Sedaiko 572 03.12.20 06:19 Сейчас в теме
(15) Ну тогда 100% вариант - с тем же Let’s Encryp или подобным
Восьмой; +1 Ответить
19. jenyavp 101 03.12.20 10:30 Сейчас в теме
(16)Спасибо, надо попробовать, когда это реально станет необходимым.
9. Sedaiko 572 02.12.20 12:56 Сейчас в теме
Ужос. В CentOS все ставится парой команд.
12. kirillkr 29 02.12.20 22:01 Сейчас в теме
(9) Да и в Windows все ставиться очень просто. Особенно когда занимаешься не только 1С, но и веб-технологиями.
Проблемы с сертификатами одинаковы как для linux, так и для Windws. Или ты устанавливаешь валидный сертификат (платный или LE), или проблемы с самоподписанным.
Аутентификация всегда была. Для того чтобы авторизация проходила на уровне операционной системы, надо использовать и настраивать IIS или Kerberos.
Насчет 80 порта, то тут да... Windows может занять порты 80 и 443 либо IIS, либо Skype (а на последней версии Windows это стало еще актуальнее). Но, да... Быстрое гугление порт 80 SYSTEM решит проблему.

Так что это памятка для новичков, которые хотят поставить Apache для 1С.
13. jenyavp 101 02.12.20 22:58 Сейчас в теме
(12) Конечно, ставится все просто, когда знаешь как и делаешь это не в первый раз. ) И гугл, конечно, все знает, главное знать, как спросить)

По поводу аутентификации на IIS,просвятите, пожалуйста, что вы имеете ввиду, какой способ используете?

Потому что для работы с HTTP - сервисами в 1С также создавали пользователя локального, назначали ему определенные права и в проверке подлинности сайта ( в диспетчере IIS) устанавливали Анонимную проверку подлинности под этим пользователем. И в 1С создавали пользователя с аутентификацией ОС.
21. kirillkr 29 03.12.20 11:58 Сейчас в теме
(13)
https://its.1c.ru/db/metod8dev/content/5944/hdoc

В публикации информационной базы найти настройки аутентификации
В настройках аутентификации отключить анонимную аутентификацию и включить Windows-аутентификацию. В Windows-аутентификации упорядочить доступных провайдеров так, чтобы на первом месте был Negotiate.
Пул приложений публикации не нуждается в настройках, в нем можно оставить все по умолчанию.

После изменения настроек перезапустить веб-сервер с помощью команды iisreset в командной строке.

Убедиться, что в контроллере домена в свойствах компьютера, на котором запущен веб-сервер, на вкладке делегирование установлено "Доверять компьютеру делегирование любых служб (только Kerberos)"

Для этого откройте оснастку Active Directory Users and Computers (dsa.msc), в компьютерах найдите веб-сервер, перейдите в его свойства и на вкладке Делегирование установить значение "Доверять компьютеру делегирование любых служб (только Kerberos)" и нажать применить.

Убедиться, что на клиенте в свойствах обозревателя разрешена встроенная проверка подлинности Windows.
Показать


А то, что в статье прописали запускать службу под конкретным пользователем, то это эффект точно такой же как и жестко прописать авторизацию при публикации базы.
22. jenyavp 101 03.12.20 14:17 Сейчас в теме
(21) Здорово, надо попробовать, этот вариант мне больше нравится, если не будет никаких подводных камней. Спасибо!
17. frkbvfnjh 785 03.12.20 08:23 Сейчас в теме
Статья и полезная и вообще не понятная одновременно, особенно для новичка. К примеру про пункт
2. Вторая проблема: проблема аутентификации.

вообще не понятно. Вы не описали исходные данные и конечную цель. Как я понял в Вашей базе есть пользователи с паролем, но при запросе к http-сервисам 1С Вы не хотите указывать логин и пароль. Так что ли? Просто не понятно, почему вас не устраивает указывать данные авторизации. Другое дело если Вы целенаправленное хотите сделать подключении через Аутентификацию ОС. А то вы так пишите как будто бы basic authentication вообще не вариант при работе с 1С, или я опять же Вас не правильно понял.
Так же не понятен вот этот пункт:
4. Проблема, которую так и не решила: Для работы 1С в режиме тонкого клиента необходимо указать сертификат в папке cacert.pem (здесь также использовала OPENSSL, если кому будет интересно, могу дописать, а так можно найти информацию на Инфостарте).

Что значит в папке cacert.pem? cacert.pem это папка или это файл? Если это файл, то о какой папке речь, а если это папка, где она находится? Так что да, было бы хорошо если бы дописали подробнее или оставили ссылки где почитать.
А так, даже из того, что понял, очень полезная статья.
Восьмой; +1 Ответить
18. jenyavp 101 03.12.20 10:29 Сейчас в теме
(17)
http-сервисам 1С

Спасибо за комментарий, хорошие вопросы.

по 2 пункту: говоря про HTTP-сервисы, я имею ввиду использование объекта конфигурации HTTP-сервис.

Он в моем случае используется для отработки запросов от стороннего сервиса, формат передаваемых данных JSON. К примеру, запроса от маркетплейса, для регистрации данных, для отправки каких-то данных и т.д. Вот для этого нужна такая заморочка с авторизацией. Есть вариант, конечно, указывать учетные данные в строке запроса, но, по мне, этот вариант не совсем верный, для проверки авторизации можно использовать другие механизмы: шифрование, токены и т.п.

по 4 пункту: в папке 1С имелось ввиду. cacert.pem - это, конечно, файл. Сам файл находится примерно вот по такому пути C:\Program Files\1cv8\8.3.18.1208\bin. У вас может быть, по-другому.
По поводу ссылок, спасибо, учту на будущее.
20. frkbvfnjh 785 03.12.20 10:56 Сейчас в теме
(18) Спасибо за пояснение.
24. oldcopy 173 07.12.20 09:36 Сейчас в теме
(18)
Есть вариант, конечно, указывать учетные данные в строке запроса, но, по мне, этот вариант не совсем верный


Если вы используете HTTPS, то передавать учетные данные в строке запроса безопасно, так как они будут передаваться в зашифрованном виде.

Если ваш сервис смотрит наружу, то следует использовать Lets Encrypt, это не сложно и снимает кучу вопросов с сертификатами (самозаверенный сертификат в наши дни - это, мягко говоря, неправильно и неудобно).

По поводу того, что кто-то занял порт - легче и правильнее изменить порты в конфиге Апача, все равно вам не нужен ни 80, ни 8090, а только 443.
23. пользователь 07.12.20 08:14
Сообщение было скрыто модератором.
...
Оставьте свое сообщение