Некоторые особенности установки 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)

Внешняя обработка, подходит для любых конфигураций. Поддерживает apache и iis! Публикуйте базы легко и просто!

1 стартмани

22.11.2024    636    11    Rafael-87    14    

15

Администрирование веб-серверов Сервера Системный администратор Программист Абонемент ($m)

WEB приложение для управления сеансами сервера 1С, имеет адаптивный web интерфейс. Возможности: удаление сеансов; завершение rphost процессов; запуск службы 1С сервера (если остановлена). Используется авторизация BasicAuth с защитой от брутфорса. Поддерживает работу по http https протоколам.

1 стартмани

08.11.2024    422    6    gortrex    2    

3

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

Ошибка 1С веб-сервис IIS. Ошибка доступа к файлу...183(0x000000B7) Невозможно создать файл, так как он уже существует.

27.09.2024    649    California_Dreaming    0    

3

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

В материале описан порядок действий по настройке Apache для работы по защищенному протоколу HTTPS c 1С на операционной системе РедОС с выпуском сертификата SSL.

09.05.2024    2356    artemusII    1    

9

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

Инструкция, как опубликовать веб-сервис с помощью OSPanel.

06.05.2024    1664    lostcay    0    

5

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

Статья описывает алгоритм установки, настройки и "сопряжения" с 1С веб-сервера Apache на РедОС. Статья, может, будет полезна тем, кто ищет в сети работающие алгоритмы установки веб-сервера и публикации на нем информационных баз 1С в контуре операционной системы РедОС. Помимо этого в статье рассмотрены некоторые спорные моменты, для анализа которых не удалось найти достаточно информации в сети.

25.04.2024    3158    artemusII    8    

18

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL, 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    1393    1    0    

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

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

16. Sedaiko 590 03.12.20 06:19 Сейчас в теме
(15) Ну тогда 100% вариант - с тем же Let’s Encryp или подобным
Восьмой; +1 Ответить
19. jenyavp 103 03.12.20 10:30 Сейчас в теме
(16)Спасибо, надо попробовать, когда это реально станет необходимым.
9. Sedaiko 590 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 103 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 103 03.12.20 14:17 Сейчас в теме
(21) Здорово, надо попробовать, этот вариант мне больше нравится, если не будет никаких подводных камней. Спасибо!
17. frkbvfnjh 805 03.12.20 08:23 Сейчас в теме
Статья и полезная и вообще не понятная одновременно, особенно для новичка. К примеру про пункт
2. Вторая проблема: проблема аутентификации.

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

Что значит в папке cacert.pem? cacert.pem это папка или это файл? Если это файл, то о какой папке речь, а если это папка, где она находится? Так что да, было бы хорошо если бы дописали подробнее или оставили ссылки где почитать.
А так, даже из того, что понял, очень полезная статья.
Восьмой; +1 Ответить
18. jenyavp 103 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 805 03.12.20 10:56 Сейчас в теме
(18) Спасибо за пояснение.
24. oldcopy 174 07.12.20 09:36 Сейчас в теме
(18)
Есть вариант, конечно, указывать учетные данные в строке запроса, но, по мне, этот вариант не совсем верный


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

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

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