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

Публикация № 1335503 30.11.20

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

Apache 2.4 1Сx64

Проблемы, возникшие при установке 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С.

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

Специальные предложения

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

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

16. Sedaiko 417 03.12.20 06:19 Сейчас в теме
(15) Ну тогда 100% вариант - с тем же Let’s Encryp или подобным
Восьмой; +1 Ответить
19. jenyavp 76 03.12.20 10:30 Сейчас в теме
(16)Спасибо, надо попробовать, когда это реально станет необходимым.
9. Sedaiko 417 02.12.20 12:56 Сейчас в теме
Ужос. В CentOS все ставится парой команд.
12. kirillkr 28 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 76 02.12.20 22:58 Сейчас в теме
(12) Конечно, ставится все просто, когда знаешь как и делаешь это не в первый раз. ) И гугл, конечно, все знает, главное знать, как спросить)

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

Потому что для работы с HTTP - сервисами в 1С также создавали пользователя локального, назначали ему определенные права и в проверке подлинности сайта ( в диспетчере IIS) устанавливали Анонимную проверку подлинности под этим пользователем. И в 1С создавали пользователя с аутентификацией ОС.
21. kirillkr 28 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 76 03.12.20 14:17 Сейчас в теме
(21) Здорово, надо попробовать, этот вариант мне больше нравится, если не будет никаких подводных камней. Спасибо!
17. frkbvfnjh 617 03.12.20 08:23 Сейчас в теме
Статья и полезная и вообще не понятная одновременно, особенно для новичка. К примеру про пункт
2. Вторая проблема: проблема аутентификации.

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

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


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

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

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

См. также

Служебные http-сервисы, которые работают даже в заблокированной базе

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

В этой публикации описывается опыт доступа к служебным http-сервисам в обход установленной блокировки информационной базы.

16.03.2021    3570    ardn    9    

Запуск Apache 2.4 с модулем 1С внутри Docker контейнера

Администрирование данных 1С WEB docker Apache v8 Бесплатно (free)

Про Apache и про Linux слышали, наверное, все. А вот про Docker пока нет, но он сильно набирает популярность последнее время и не зря. Поделюсь своим опытом и дам пошаговую инструкцию настройки веб-сервера Apache с модулем 1С внутри Docker контейнера на Linux хосте. При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе. Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP. В статье дам подробное пояснение по каждой используемой команде со ссылками на документацию по Docker, чтобы не создавалось ощущение непонятной магии. Также прилагаю git репозиторий с описанием всей конфигурации, можете попробовать развернуть у себя буквально за 10 минут.

04.04.2018    32433    petr.myazin    38    

1C + Linux + PostgreSQL + Apache

Администрирование данных 1С Apache Администрирование СУБД Администрирование веб-серверов Linux Сервера v8 Бесплатно (free)

Дружим 1С с Линуксом ИЛИ Установка окружения для работы с 1С на Линуксе под Постгресом и Апачем (в 2021-м году).

26.03.2018    59346    SerVer1C    100    

Установка сервера Аpache 2.4

Администрирование данных 1С Apache v8 1cv8.cf Бесплатно (free)

В публикации описана установка web-сервера Аpache 2.4 на платформе Windows

26.10.2017    143056    ВикторП    18    

Настройка веб сервера Apache + 1С (Пошаговое руководство)

Администрирование данных 1С Apache v8 1cv8.cf Бесплатно (free)

Пошаговое руководство настройки Web сервера Apache на Windows. Не секрет, что файловые базы через веб-сервер будут работать намного шустрее, чем через обычный доступ к сетевому каталогу. Эффект особенно заметен, когда старые компы вообще не справляются с обычным сетевым доступом, регулярно выплевывают 1С. А доступ через веб сервер даже на компьютерах серии "Хлам" работает на ура!

19.07.2017    336258    Aleksey81    171    

Публикация мобильной конфигурации на web-сервере Apache на Linux Ubuntu

Администрирование данных 1С WEB Apache v8 1cv8.cf Бесплатно (free)

Публикация мобильной конфигурации на web-сервере Apache на Linux

22.09.2014    26246    spezc    13    

Публикация базы 1С на веб-сервере Apache на сервере Linux

Администрирование данных 1С WEB Apache Linux v8 1cv8.cf Бесплатно (free)

В отличие от других подобных публикаций здесь будет описано как опубликовать базу (располагающуюся на сервере windows) на веб-сервере apache (расположенном на соседнем сервере под linux).

20.09.2014    159299    spezc    75    

Установка 1С:Предприятие 8.3. "Управление небольшой фирмой" на веб-сервер Apache 2.2, работающий в Ubuntu Server 12.04.2 LTS x86_64.

Администрирование данных 1С Apache v8 1cv8.cf Бесплатно (free)

На предприятии в качестве файл-сервера используется компьютер, на который установлена операционная система Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-37-generic x86_64). Мне была поставлена задача перенести информационную базу "Управление небольшой фирмой" на веб-сервер Apache установленный на 64-х битной Ubuntu. После переноса ИБ у сотрудников появилась возможность работать через интернет, в любом обозревателе.

17.02.2013    49275    VintikComUa    13    

1С + Apache + SSL: почему вы должны использовать SSL (наглядная демонстрация)

Администрирование данных 1С Apache v8 1cv8.cf Россия Бесплатно (free)

Иллюстрированных руководств по установке веб-сервера Apache и публикации базы в интернете достаточно. Однако почти никто не обращает внимания на безопасность и не настраивает использование защищенного https протокола, а не http. В этой заметке описана пошаговая установка и настройка Apache, продемонстрирована лёгкость, с которой злоумышленник может узнать ваш пароль, если вы не используете https. Описана пошаговая настройка https для Apache.

06.08.2012    169608    galuse    87    

Публикация конфигурации на веб-сервере apache (в картинках)

Администрирование данных 1С Apache v8 УТ10 Розница УПП1 УНФ Россия Бесплатно (free)

Посвящается всем тем, кто никогда еще не выкладывал свою конфу в интернет.

25.10.2011    104546    shira84    47    

Настройка веб-сервера в домашних условиях. Часть 2 (VirtualBox + Win7 + Apache + 1C82 + PostgreSQL)

Администрирование данных 1С Apache v8 1cv8.cf Россия Бесплатно (free)

В продолжение начатой мной темы "Настройка веб-сервера в домашних условиях (WinXP + IIS + 1C82)". Статья является логическим продолжением и посвящена вопросам повышения безопасности "домашнего веб-сервера".

09.04.2011    36071    1cspecialist    14