Настройка Apache для работы 1С через HTTPS (SSL)

О чем пойдет речь

Безопасность для многих всегда идет на первом месте, многие интернет-гиганты, типа Google даже добавляют в свои браузеры предупреждения, что соединение не безопасно, если на сайте не используется SSL-сертификат.

1С:Предприятие тоже может работать по протоколу HTTPS.

Мы предлагаем статью-инструкцию, как настроить HTTPS в Apache таким образом, чтобы 1С:Предприятие работало без проблем через SSL.

Установка Apache

Ну что же начнем...

Для начала установим Apache. Рассмотрим это для 1С:Предприятие x86-64 и для Windows.

1. Идем на сайт https://www.apachehaus.com/cgi-bin/download.plx и качаем файл httpd-2.4.55-o111s-x64-vs17.zip  (цифры на момент скачивания могут быть другими).

2. Устанавливаем Apache.

Первое что нужно сделать - установить Visual C++ 2008 Redistributable Package. После его установки распаковываем архив в корневой каталог любого диска. Например c:\Apache24.

Для проверки работоспособности делаем следующее:

  • открываем командную строку (нажимаем Win+r и в появившееся окно вводим cmd)
  • переходим на диск, куда распаковали Апач (например  x:)
  • переходим в директорию с исполняемыми файлами Апач (например cd \Apache 24\bin)
  • запускаем Апач (httpd.exe + Enter). Если не появилось ошибок, то Апач запущен. Предупреждения не останавливают работу сервера
  • открываем браузер и вводим адрес http://localhost. Если все сделано правильно и без ошибок, то отобразится приветственная страница Апача

3. Теперь зарегистрируем Апач как сервис в системе, что бы он стартовал самостоятельно. Это делается так:

  • открываем нашу любимую командную строку от имени администратора
  • переходим в папку с распакованным Апачем (например cd \Apache 24\bin)
  • выполняем httpd -k install
  • и запускаем Апач командой httpd -k start

Настройка Apache по SSL

4. Отлично. Apache установлен, теперь давайте настроем его работу по SSL.

Находим в папке c:\Apache 24\conf файл httpd.conf

httpd_conf

Дописываем строку Listen 443

Это стандартный порт HTTPS. Заставляем Apache слушать и этот порт тоже. Если нам не нужен стандартный 80-ый порт и мы не планируем его использовать, то строку Listen 80 можно закомментировать добавив символ # (решетки) в начале строки. Так же имейте ввиду, что при изменении файлов в папке Program Files потребуется открытие файла в режиме администратора.

Раскомментируем в файле httpd.conf строчку

#LoadModule ssl_module modules/mod_ssl.so

Убрав символ #. Т.е. строка должна стать такой:

LoadModule ssl_module modules/mod_ssl.so

httpd_conf_2

4. В конце файла httpd.conf изменяем

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

на:

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLSessionCache none
</IfModule>

Записываем файл httpd.conf

5. Из каталога bin установленной папки с Apache скопируем файлы ssleay32.dll и libeay32.dll в C:\Windows\System32. Так же скопируем файл openssl.cnf из папки c:\Apache 24\conf\ в папку c:\Apache 24\bin\.

6. Запустим редактор реестра regedit (Пуск > Выполнить ввести текст regedit и нажать Enter) откроется окно реестра в нем найдем ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2.4

В этой ветке найдем переменную ImagePath и два раза кликнем на ней.

Редактор реестра

Добавим ключ запуска -D ssl

7. Добавим SSL-сертификаты для домена. Тут есть варианты...

7.1. Если у Вас уже есть SSL-сертификаты для домена, то создайте папку ssl в папке C:\Apache 24\conf и переместите их туда (файлы *.key и *.cert). Идем на шаг 8.

7.2. Если у Вас нет SSL-сертификатов, то вы можете их сгенерировать самостоятельно.

7.2.1. Открываем командную строку в режиме администратора и переходим в папку bin Apache. Вводим команду:

cd "C:\Apache 24\bin"

7.2.2. Далее вводим:

openssl req -config openssl.cnf -new -out ssl.csr

Идем по шагам в командной строке и заполняем необходимые поля. То, что вы введете не принципиально. Самое главное на этом этапе надо запомнить пароль (когда спросит pass phrase)

7.2.3. Выполним:

openssl rsa -in privkey.pem -out ssl.key

Спросит пароль, который вы вводили ранее.

7.2.4. Затем:

openssl x509 -in ssl.csr -out ssl.cert -req -signkey ssl.key -days 3000

days - это срок действия сертификата в днях.

7.2.5. Ну и наконец:

openssl x509 -in ssl.cert -out ssl.der.crt -outform DER

7.2.6. Создадим папку ssl в C:\Apache 24\conf и переместим из папки bin файлы ssl.key и ssl.cert (а вообще можно все сразу туда скопировать, что было получено на шагах 7.2.1. - 7.2.5) из C:\Apache 24\bin в C:\Apache 24\conf\ssl.

8. Снова открываем файл httpd.conf из папки C:\Apache 24\conf и добавляем секцию VirtualHost в самый конец файла httpd.conf:

<VirtualHost demo.soft.ru:443>
SSLEngine On
SSLCertificateFile conf/ssl/ssl.cert
SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>

Вместо адреса demo.soft.ru замените на свой сайт или IP-адрес, а можно вообще поставить звездочку (*) и будет *:443 (это означает, что сработает для всех запросов). Ну и если у вас есть свои ключи, и вы их не генерировали сами, то переименуйте ssl.cert и ssl.key

9. Перезапустим Apache. Открываем Monitor в правом нижнем углу, щелкнем по иконке и нажимаем restart. Если все хорошо, то Apache запустится без ошибок и появится зеленый значок.

10. Пробуем открыть сайт через HTTPS. В нашем случае можно и так https://localhost и вот так https://demo.soft.ru:

Пробуем открыть

Обратите внимание на то, что сертификат самоподписанный и службы типа антивируса Касперского понимают, что дело не очень... Это нормально, так как ваш сертификат не был изготовлен корневыми центрами сертификации. Но если вы захотите использовать https внутри организации, то почему бы и нет?

11. Теперь попробуем запустить 1С. В браузере открывается:

Попытка открыть базу 1С в браузере по HTTPS

Теперь попробуем открыть базу через тонкий клиент и если мы использовали самодписанный сертификат то тут нас ждет разочарование:

Удаленный узел не прошел проверку

Ошибка HTTP при обращении к серверу ... Удаленный узел не прошел проверку.

12. Дело в том, что сервер 1С содержит собственный контроль достоверности HTTPS-соединений и корневых центров.
Необходимо открыть папку сервера 1С:Предприятия c:\Program Files\1cv8\8.3.15.1747\bin\ и в ней найти файл cacert.pem

Он отвечает как раз за эти центры сертификации.

Открываем командную строку и в ней выполняем команду:

openssl x509 -inform der -in ssl.der.crt -out ssl.pem -text -fingerprint -md5

После выполнения команды на экране Вы увидите Fingerprint. Скопируйте его. Это будет строка вида:

MD5 Fingerprint=64:5C:11:03:46:F1:22:9A:5B:C3:DD:AA:CC:EE:FF:A3

Откройте файл cacert.pem в папка 1С, перейдите в конец файла и с этой строки начинайте добавление своего сертификата в файл cacert.pem. После строки контрольной суммы сертификата, нужно добавить в файл cacert.pem содержимое файла, в который Вы экспортировали сертификат.

После этого запуск тонкого клиента будет работать без ошибок.

Если же и после этого есть ошибки, то можно вообще заставить клиент 1С не проверять сертификат. Для этого необходимо отредактировать информационную базу:

Редактируем информационную базу 1С

Далее:

Второй шаг

Ну и наконец заветное окно:

Выбираем не проверять сертификат сервера

Пробуем запустить и...

Все отлично! Все работает!

Все замечательно работает по https.

Отлично. Вы все настроили!

Изображение автора статьи

Основатель и директор по развитию Софтонит. Практикующий руководитель разработки. Эксперт в области автоматизации техподдержки

Загрузка...
Поделитесь статьей
Рекомендуем почитать
Статьи Решение проблемы "Обнаружено нарушение целостности системы 1С"

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

Статьи Подключение терминала сбора данных к 1С

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

Статьи Ошибка HTTP 500.0 - Internal Server Error после публикации базы 1С на веб-сервере IIS

Рассмотрим ошибку, которая может возникать при публикации информационной базы 1С на web-сервере IIS Windows.
Попытаемся ее решить. Ошибка HTTP 500.0 - Internal Server Error.

Статьи Как удалить данные по организации в базе 1С?

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

Статьи Быстро растет база MS SQL

Часто наши клиенты задают нам вопросы связанные с быстрым ростом размеров базы данных MS SQL.
1С:Предприятие использует БД MS SQL, а сервер на котором все это работает может столкнуться с тем, что банально для базы не хватит места.

Статьи Подсветка синтаксиса 1С в Notepad++

Notepad++ мощный и очень функциональный блокнот.
Часто для нужд 1С необходимо сохранить какой-то код в файл, или отредактировать скрипт на OneScript, который имеет 1С-подобный синтаксис.
Иногда очень удобно это сделать в Notepad++, но есть одно огорчение - в нем не работает подсветка синтаксиса.
А это печаль...
Но мы эту печаль исправляем :)

0 / 0