Добрый день, коллеги.
Выкладываю свой опыт решения проблем, с которыми столкнулась при установке 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С.
Спасибо за внимание.