О чем пойдет речь
Безопасность для многих всегда идет на первом месте, многие интернет-гиганты, типа Google даже добавляют в свои браузеры предупреждения, что соединение не безопасно, если на сайте не используется SSL-сертификат.
1С:Предприятие тоже может работать по протоколу HTTPS.
Мы предлагаем статью-инструкцию, как настроить HTTPS в Apache таким образом, чтобы 1С:Предприятие работало без проблем через SSL.
Ну что же начнем…
Для начала установим 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
Дописываем строку 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
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С. В браузере открывается:
Теперь попробуем открыть базу через тонкий клиент и если мы использовали самодписанный сертификат то тут нас ждет разочарование:
Ошибка 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С не проверять сертификат. Для этого необходимо отредактировать информационную базу:
Далее:
Ну и наконец заветное окно:
Пробуем запустить и…
Все замечательно работает по https.
Отлично. Вы все настроили!
Для публикации информационных баз 1С:Предприятие на платформе Windows часто используют альтернативу штатному IIS — веб сервер Apache, который, несмотря на ряд ограничений, тоже неплохо подходит для небольших и средних установок. Одним из очевидных преимуществ Apache является его кроссплатформенность, т.е. если вы умеете настраивать данный веб-сервер на одной платформе, то без особого труда сделаете это и на другой. В данной публикации мы расскажем вам как установить и настроить Apache для публикации баз с SSL-защитой на базе сертификатов Let’s Encrypt и дополнительной аутентификацией по паролю.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Установка сервера Apache для работы с платформой 1С:Предприятие в Windows
В настоящее время официальной бинарной сборки Apache для Windows не существует, взамен предлагается скачать одну из популярных сборок. В нашем случае мы будем использовать сборку от Apache Haus, вы можете использовать и другие сборки, но некоторые настройки в них могут оказаться отличными от приведенных в статье.
При скачивании будьте внимательны, вам необходимо скачать сборку той же разрядности, что и разрядность используемой вами платформы 1С:Предприятие, на сегодня особых причин использовать 32-разрядные системы нет, поэтому отдаем предпочтение 64-разрядной платформы.
Сборка распространяется в виде архива, поэтому просто распакуйте ее в корень диска C:, чтобы пусть к папке с веб-сервером получился C:\Apache24. Для установки сервера используйте команду (требуются права администратора):
C:\Apache24\bin\httpd.exe -k install
После чего вам потребуется разрешить доступ к веб-серверу по портам 80 и 443 в брандмауэре Windows, это можно сделать как в графической оснастке:
Так и при помощи PowerShell:
New-NetFirewallRule -DisplayName "Apache 2.4" -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Protocol TCP -LocalPort 80,443
После чего следует с другого узла сети набрать в адресной строке браузера IP-адрес или доменное имя вашего сервера и убедиться, что порты открыты и вы видите стандартную заглушку Apache.
Следующим шагом установим платформу 1С:Предприятие, вам потребуются только компоненты 1С:Предприятие 8 и Модули расширения веб-сервера:
Отдельного лицензирования, за исключением некоторых случаев, данная установка не требует.
Публикация информационной базы 1С:Предприятие
Существует два способа публикации информационных баз, первый — более простой, при помощи Конфигуратора, но для его запуска вам потребуется клиентская лицензия 1С:Предпритяие. Какой-либо разницы между публикацией серверной или файловой базы на сервере Apache нет.
Для публикации загрузите нужную информационную базу в режиме Конфигуратора и перейдите в Администрирование — Публикация на веб-сервере. В поле Сервер — укажите Apache 2.4, поле Имя — это виртуальная директория публикации, которая потом станет частью URL, Каталог — физическое расположение публикации, которое должно находится внутри папки C:\Apache24\htdocs:
Также имейте ввиду, что для обычной работы с базой достаточно только оставить Публиковать доступ для клиентских приложений, остальное следует отключить, это упростит публикацию и уменьшит возможную поверхность атаки на нее. Принцип прост: если сервис не нужен — не публикуем.
После публикации будет предложено перезапустить веб-сервер, соглашаемся с этим предложением.
Альтернативой конфигуратору служит утилита webinst, которая располагается в директории bin установленной версии платформы, ее использование не требует наличия клиентской лицензии, для клиент-серверной базы команда публикации будет выглядеть так:
webinst -publish -apache24 -wsdir hrm-1 -dir "C:\Apache24\htdocs\hrm-1" -connstr "Srvr=SRV-1C;Ref=HRM-1;" -confpath "C:\Apache24\conf\httpd.conf"
Разберем ключи:
- publish — публикация базы
- apache24 — использование веб-сервера Apache 2.4
- wsdir — виртуальный каталог, аналог поля Имя в конфигураторе, по сути, представляет имя публикации
- dir — каталог с физическим расположением публикации, должен находится в C:\Apache24\htdocs
- connstr — строка подключения к базе, в нашем случае это сервер SRV-1C и база HRM-1
- confpath — путь к конфигурационному файлу Apache
Для файловой базы изменится только строка подключения к базе:
webinst -publish -apache24 -wsdir hrm-2 -dir "C:\Apache24\htdocs\hrm-2" -connstr "File=""C:\1C_Bases\HRM-2"";" -confpath "C:\Apache24\conf\httpd.conf"
После публикации перезапускаем веб-сервер командой:
C:\Apache24\bin\httpd.exe -k restart
Публикация файловой базы имеет некоторые особенности: при работе через браузер вам понадобиться установить на узел с веб-сервером количество клиентских лицензий по количеству сеансов. После завершения сеанса в браузере он продолжает сохраняться на сервере в течении 20 минут на случай повторного подключения, все это время за ним сохраняется выданная лицензия.
Получение сертификата Let’s Encrypt и настройка защищенного соединения
Пожалуй, самая сложная часть нашей настройки, потому что при получении сертификата вам нужно быть предельно внимательным и правильно указать все параметры, в противном случае сертификат получить не удастся и все придется начинать заново. Для получения и обновления сертификатов мы будем использовать Windows ACME Simple (WACS), откуда нам потребуется скачать архив win-acme.vX.X.X.XXXX.x64.trimmed.zip. Распакуем его в С:\Apache24\letsencrypt.
Но не будем спешить получать сертификат, а сначала выполним некоторые подготовительные действия. Для работы с Let’s Encrypt нам понадобится доменное имя, которое должно указывать на внешний IP-адрес вашего веб-сервера. В нашем примере мы будем использовать служебный поддомен tech.host31.ru. Также помните, что изменения в системе DNS распространяются не мгновенно, а в течении некоторого времени, которое зависит от значения TTL-записи, поэтому вносите изменения в DNS заранее.
Убедившись, что ваша DNS-запись работает можно переходить к получению сертификата. Перейдем в С:\Apache24\letsencrypt и запустим и запустим wasc.exe от имени администратора. Это консольная текстовая утилита, работающая в диалоговом режиме. На каждом из этапов вам нужно либо указать выбранный пункт меню, либо ввести свое значение. Действие по умолчанию подсвечено цветным выделением и можно просто нажать Enter. Работу с утилитой начнем с пункта M: Create certificate (full options).
Далее нажимаем Enter (так как по умолчанию подсвечен нужный нам пункт 2) и вводим имя домена или список доменов, разделенных запятой.
Затем еще раз нажимаем Enter, следующий пункт меню спрашивает, как вы хотите получить сертификаты если у вас указано несколько доменов. В подавляющем большинстве случаев можно выбрать пункт по умолчанию 4: Single certificate, либо получить отдельные сертификаты на каждый домен или поддомен.
Следующим шагом выбираем 1: [http] Save verification files on (network) path и указываем корневую директорию веб-сервера C:\Apache24\htdocs.
На вопрос Copy default web.config before validation? (y/n*) отвечаем нет, это также действие по умолчанию (обозначено звездочкой, поэтому можно просто нажать Enter.
Потом выбираем 2: RSA key и 2: PEM encoded files (Apache, nginx, etc.), после чего указываем директорию для хранения сертификатов C:\Apache24\conf\ssl.
Будет предложено установить пароль на закрытый ключ, выбираем 1: None. Затем вы повторно вернетесь в вышестоящее меню, но на этот раз действие по умолчанию 5: No (additional) store steps, поэтому просто нажимаем Enter.
Следующий пункт спрашивает, какие действия нужно выполнить по получению сертификата. Нам нужно обязательно перезапустить веб-сервер, поэтому указываем 2: Start external script or program. После чего у нас есть два пути: сразу указать команду на перезапуск в настройках или запускать пакетный файл с той же самой командой.
Делая выбор нужно понимать, что если здесь у вас кроме веб-публикации не будет больше никаких служб, то можно указать команду сразу, иначе лучше использовать пакетный файл, так как это более гибко.
Выбрав вариант с пакетным файлом, создадим текстовый файл со следующим содержимым:
C:\Apache24\bin\httpd.exe -k restart
И сохраним его под именем: C:\Apache24\letsencrypt\Scripts\ApacheRestart.bat и укажем это значение в поле File:, если вы решили обойтись тут без скрипта, то укажите путь к исполняемому файлу Apache: C:\Apache24\bin\httpd.exe, а затем в поле Parameters: укажите -k restart.
Потом вы снова попадете в меню вышестоящего уровня, выходим из него через Enter и приступаем непосредственно к получению сертификата, после чего все нужные ключи и сертификаты окажутся в C:\Apache24\conf\ssl. Задание на продление будет добавлено в планировщик автоматически. В этом процессе не забываем указать действительный адрес почты, куда будут приходить сообщения при возникновении проблем.
Теперь перейдем к настройкам HTTPS на веб-сервере Apache, сборка от Apache Haus имеет собственные настройки, которые подключены из файла C:\Apache24\conf\extra\httpd-ahssl.conf, откроем его на редактирование.
Прежде всего обратим внимание на секцию <IfDefine ENABLE_TLS13>, так как в основном конфиге переменная установлена как Истина, то применяться будет именно этот блок настроек. Здесь указаны разрешенные протоколы и используемые шифры, настройки по умолчанию достаточно актуальны и можно использовать их без изменений. Либо установить собственные настройки, для их генерации можете использовать сайт moz://a SSL.
Затем спускаемся к секции <VirtualHost _default_:443> и меняем в ней следующие параметры:
ServerName tech.host31.ru
SSLCertificateFile "${SRVROOT}/conf/ssl/tech.host31.ru-crt.pem"
SSLCertificateKeyFile "${SRVROOT}/conf/ssl/tech.host31.ru-key.pem"
В опции ServerName указываете полное доменное имя сервера, ниже пути к файлам сертификата и закрытого ключа, обратите внимание, что они указываются от корневой папки веб-сервера, т.е. относительно C:\Apache24.
Сохраняем содержимое файла и выходим из него, после чего в основном конфигурационном файле C:\Apache24\conf\httpd.conf находим секцию с подключенными модулями и убеждаемся, что все указанные ниже строки раскомментированы:
LoadModule headers_module modules/mod_headers.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
Затем сразу после строки:
Listen 80
Добавим:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
Что обеспечит перенаправление всех HTTP запросов, кроме запросов на продление сертификата, на HTTPS порт.
Проверяем конфигурацию и, при отсутствии ошибок, перезапускаем веб-сервер:
C:\Apache24\bin\httpd.exe -t
C:\Apache24\bin\httpd.exe -k restart
Открываем нашу публикацию и убеждаемся, что она автоматически перенаправляется на защищенную версию. Как видим, в нашем случае используется протокол TLS v1.3, совершенная прямая секретность на базе эллиптической кривой Curve25519 и шифр ChaCha20-Poly1305.
В целом каких-либо сложностей при получении сертификата нет, но сам процесс достаточно длительный и требующий внимательного и кропотливого указания настроек. Но это процесс разовый, далее все будет работать автоматически.
Настройка дополнительной аутентификации по паролю
У нас нет основания сомневаться во встроенном механизме аутентификации 1С:Предприятия, во всяком случае в онлайн-сервисах дополнительной аутентификации не предусмотрено, но есть слабое место — пользователи. Во многих базах могут использоваться простые пароли или не использоваться вообще, часть таких паролей могут использоваться скриптами и средствами автоматизации, поэтому взять и установить сразу всем сложные пароли будет не так-то просто.
Ситуация усугубляется, если администрирование 1С выполняют другие сотрудники, они вполне могут, пойдя на поводу пользователей снова установить им слабые пароли, что сильно снижает безопасность собственного механизма аутентификации. Поэтому мы пойдем другим путем и установим дополнительную аутентификацию на уровне веб-сервера, тут уже точно без нас никто пароль не изменит. Основная его цель — оградить собственный механизм аутентификации 1С от доступа всех желающих, которым достаточно будет просто узнать ссылку.
Веб-сервер Apache использует собственную базу пользователей, поэтому займемся ее созданием. Первого пользователя заводим командой:
htpasswd.exe -c -B C:\Apache24\conf\.htpasswd user_1c
Последующих:
htpasswd.exe -B C:\Apache24\conf\.htpasswd glbuch
Ключ -с предписывает создать указанный файл или перезаписать, если он существует, ключ -B указывает использовать для шифрования пароля более надежный, чем MD5 алгоритм bcrypt. После выполнения команды будет интерактивно запрошен пароль, он должен соответствовать всем требованиям сложности, в противном случае теряется весь смысл всей этой затеи.
Теперь создадим в директории с публикацией, в нашем случае C:\Apache24\htdocs\hrm-1 файл .htaccess со следующим содержимым:
AuthName "1C user only"
AuthType Basic
Require valid-user
AuthUserFile C:\Apache24\conf\.htpasswd
Первая строка задает наименование области безопасности, можете вписать туда все что угодно, вторая включает Basic-аутентификацию. Затем указывается политика аутентификации и путь к файлу паролей, valid-user обозначает что доступ получит любой аутентифицированный пользователь. Если нужно указать конкретные учетные записи, то строку нужно изменить следующим образом:
Require user user_1c glbuch
Сохраняем файл, перезапуск веб-сервера при этом не требуется.
Проверяем, если все сделано правильно — будет запрошен логин и пароль.
При работе через браузер достаточно запомнить пароль, а при работе через тонкий клиент пользователю придется вводить учетные данные два раза, первый раз аутентифицироваться на веб-сервере, а только уже потом средствами 1С.
Запомнить пароль там не представляется возможным, и это может вызывать недовольство пользователей, поэтому укажем в свойствах базы дополнительные параметры запуска:
/WSN user_1c /WSP Pa$$w0rd_1
Где ключ /WSN определяет пользователя веб-сервера, а ключ /WSP — пароль.
Теперь платформа будет проходить первый этап аутентификации автоматически.
Как видим, настроить безопасную публикацию информационных баз 1С:Предприятие на веб-сервере Apache в Windows достаточно не сложно. А какой именно из веб-серверов выбрать уже решать вам.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Существует множество причин, по которым может возникнуть необходимость организации доступа к базе через web. Например, для организации доступа к базе из Интернета, для организации обменов с базой 1С через http или web сервисы, для работы с файловой базой в многопользовательском режиме по локальной сети – все это даст значительный прирост производительности по сравнению с доступом к файлу базы данных через общую сетевую папку. Для организации такого доступа к базе, потребуется стороннее ПО в виде веб-сервера. Базы 1С могут быть опубликованы на веб серверах IIS и Apache. Далее рассмотрим установку и настройку перечисленных веб серверов и порядок публикации баз 1С на каждом из них. Если у вас веб сервер уже установлен и настроен, тогда можете переходить сразу к публикации.
1. Установка и настройка веб сервера IIS.
Для выполнения публикации базы 1С на веб сервере IIS для начала потребуется установить и настроить сам веб-сервер. Дистрибутив данного веб-сервера уже входит в состав операционной системы Windows. Для правильной работы опубликованной базы 1С достаточно компонентов «Расширения ISAPI» («ISAPI Extensions») и «Фильтры ISAPI»(«ISAPI Filters»). Однако для более удобного управления веб-сервером потребуется также установить и «Консоль управления IIS» («IIS Managment Console»). Расположение данных компонентов в зависимости от операционной системы может отличаться, наша задача их найти и установить.
Windows 10
В Windows 10 для их установки требуется открыть панель управления (Control panel) и выбрать пункт меню Программы – Программы и компоненты (Programs – Programs and features) и нажать на кнопку «Включение или отключение компонентов Windows» («Turn Windows features on or off»).
В открывшемся окне найти и отметить галочкой компоненты: Расширения ISAPI(ISAPI Extensions), Фильтры ISAPI(ISAPI Filters), Консоль управления IIS(IIS Managment Console) и нажать ОК:
Windows Server 2012 R2, 2016, 2019 и 2022
Настройка компонент для Windows Server 2012 R2, Windows Server 2016 и Windows Server 2019 одинаковая, и все настройки производятся в диспетчере серверов (Server Manager).
Откройте диспетчер серверов (Server Manager) и нажмите Управление – Добавить роли и компоненты (Manage – Add Roles and Features).
В ответ на нажатие откроется окно мастера добавления ролей и компонентов (Add Roles and Features).
В этом окне нажмите два раза «Далее» («Next»), пока мастер не переключится на страницу ролей сервера (Server Roles).
Во вкладке роли сервера (Server Roles) установите флажок «Web Server IIS». Так как эта роль зависит от другой роли ([Tools] IIS Management Console), то будет предложено установить ее дополнительно. Это можно сделать с помощью нажатия кнопки «Добавить компоненты» (Add Features) в открывшемся окне. После чего нажимаем кнопку «Далее» («Next»), пока мастер не дойдет до вкладки «Выбор служб ролей». На этой вкладке нужно найти пункт «Разработка приложений»(«Application Development») и выбрать в нем пункты «ISAPI Extensions» и «ISAPI Filters».
Как только закончите с установкой флажков нажимайте «Далее» («Next») и «Установить» («Install»).
На этом установка необходимых компонентов веб-сервера завершена.
2. Публикация базы на веб сервере IIS
После установки веб-сервера можно переходить непосредственно к публикации информационной базы. Для этого заходим в конфигуратор нужной базы, предварительно запустив программу 1С от имени администратора. Далее выбираем пункт «Администрирование» — «Публикация на веб-сервере». Придумываем имя для нашей публикации, например, «test_1c_iis», проверяем что правильно определился веб сервер — «Internet Information Services», каталог оставляем по умолчанию и жмем «Опубликовать».
Соглашаемся на перезапуск веб-сервера и переходим к проверке корректности публикации. Для проверки доступности опубликованной базы нужно сформировать путь к ней. Если не были внесены дополнительные настройки на веб сервере, то путь будет иметь следующий вид: http://<Имя веб сервера>/<Имя публикации> Имя вашего веб сервера, где производилась его установка (например, server1) Имя публикации базы (которое было указано в окне настройки публикации). Для таких параметров ссылка будет иметь вид:
http://server1/test_1c_iis
Обратите внимание, что если выполняется публикация файловой базы, то:
- необходимо дать права на чтение для пользователя, от лица которого выполняются запросы (IUSR_ для IIS версий 5.1 или 6.0 или группу IIS_IUSRS для IIS версий 7.x и старше), на каталог bin файлов конкретной версии системы «1C:Предприятие»;
- дать права на модификацию пользователю, от лица которого выполняются запросы (IUSR_ для IIS версий 5.1 или 6.0 или группу IIS_IUSRS для IIS версий 7.x и старше), на каталог информационной базы.
Вставляем в браузер сформированную ссылку на публикацию. Если база открылась, значит публикация выполнена корректно.
3. Настройка веб сервера Apache
Первым делом необходимо скачать и установить веб-сервер. Список доступных реализаций можно найти на официальном сайте производителя по ссылке, а в статье будет использован самый первый из списка дистрибутивов. Он поставляется в виде zip-архива без инсталлятора. Поэтому нужно скачать архив и разархивировать в «C:\Program Files» или «C:\Program Files (x86)» в зависимости от того, какую разрядность вы выбрали. Потом нужно открыть каталог, куда вы распаковали архив и найти в нем папку «conf», а в ней конфигурационный файл веб сервера — «httpd.conf». Далее в конфигурационном файле (у меня он лежит по пути «C:\Program Files (x86)\Apache24\conf\httpd.conf») необходимо отредактировать путь к корневому каталогу веб сервера. Для этого находим переменную SRVROOT и прописываем путь к каталогу, куда мы распаковали архив, в моем случае это «C:\Program Files (x86)\Apache24».
Далее откройте командую строку от имени администратора. Самый простой вариант – это открыть меню Пуск и ввести cmd. После того, как приложение будет найдено щелкнуть по нему правой кнопкой мыши и выбрать пункт меню «Запустить от имени Администратора» («Run as Administrator»).
В командной строке переходим в директорию распакованного Apache с помощью команды cd. Например:
cd «C:\Program Files (x86)\Apache24\bin»
и вводим команду:
httpd.exe -k install
Это установит службу Apache, которой можно будет управлять в окне служб.
На этом установка Apache завершена. Осталось только опубликовать информационную базу.
4. Публикация базы на веб сервере Apache
Процесс аналогичен публикации баз на IIS, который описан выше, однако следует обратить внимание на то, что каталог по умолчанию не заполняется. Создайте пустой каталог на диске и укажите путь к нему. Также нужно проверить, что указан правильный веб-сервер, а именно «Apache 2.4». После чего жмите кнопку «Опубликовать».
Проверить доступность публикации можно тем же способом, как делали для IIS. Также необходимо дать права пользователю, от лица которого запускается Apache, на каталог bin файлов конкретной версии системы «1C:Предприятие» (чтение и выполнение) и каталог информационной базы (чтение и запись, в случае файлового варианта).
5. Организация доступа к опубликованной базе из Интернета
Теперь имея ссылку на публикацию мы можем работать с базой через браузер или через тонкий клиент, прописав путь к публикации. Однако нужно учитывать, что при текущих настройках доступ публикации будет только из локальной сети. Для того чтобы опубликованная база была доступна за рамками локальной сети нужно выполнить ряд шагов:
- Получить у своего интернет-провайдера статический IP-адрес, по-другому «белый IP». Это адрес, который провайдер выдаёт пользователю в аренду на постоянной основе. Он не меняется никогда, и при любом выходе в интернет он одинаковый.
- Зарегистрировать в интернете доменное имя. Это можно сделать, обратившись к интернет-провайдеру, или заказать, например, тут. Домен – это тот адрес, по которому будет доступен ваш веб-сервер из глобальной сети Интернет, например, www.myserver.ru.
- Настроить на маршрутизаторе правило перенаправления портов (по- другому говорят «пробросить порт»). Делать это нужно для того, чтобы все внешние запросы, приходящие на конкретный порт, были перенаправлены на тот сервер, где мы настраивали веб-сервер. Обычно это делают системные администраторы. Для этого им потребуется назвать имя сервера и порт, на котором работает веб-сервер, по умолчанию это 80 порт для http и 443 для https.
- Приобрести SSL-сертификат. Сделать это можно там же, где приобретали доменное имя, так как сертификат выдается на конкретное доменное имя. Он позволит зашифровать трафик, который передается между браузером и веб-сервером, во избежание перехвата паролей и прочей ценной информации злоумышленниками.
- Перенаправить все запросы к вашему доменному имени к выданному статическому IP-адресу.
Следует учитывать, что данные действия должны быть выполнены заранее. Пункты 1,2,4 могут быть выполнены заказчиком самостоятельно. Пункт 3 и 5 выполняется системным администратором заказчика или сторонней организацией на платной основе, например, можно посоветовать клиенту обратиться к нашей обслуживающей организации.
Только после выполнения вышеописанных шагов можно приступить к настройке веб-сервера, для организации доступа к опубликованной базе из интернета.
Стоит сказать, что вместо покупки SSL-сертификата, есть возможность его получить и другими способами. Например, можно самостоятельно сгенерировать самоподписанный сертификат или выпустить бесплатный временный сертификат с помощью стороннего сервиса. О всех недостатках и преимуществах данных способов в таблице ниже:
|
Сертификат |
Преимущества |
Недостатки |
|
Платный |
Выпущен аккредитованным центром сертификации. Ему доверяют все браузеры. Автоматически продлевается |
Выдается на платной основе, выпуск происходит не моментально, нужно ждать обработки заказа |
|
Самоподписанный |
Быстрый самостоятельный выпуск. Можно выпустить на длительный срок |
Нет доверия от всех браузеров. Чтобы браузер ему доверял, требуется его включение в список доверенных всем пользователям, которые будут работать с опубликованными базами |
|
Временный |
Быстрый самостоятельный выпуск. Доверяют большинство браузеров |
Срок действия 90 дней, после чего требуется его перевыпуск |
Если у клиента уже есть купленный сертификат, нужно его запросить и добавить его в настройках веб сервера. Как это сделать, будет рассказано ниже. Если сертификата нет, и недостатки сертификатов, выпущенных альтернативными способами, для клиента несущественны, тогда можно приступить к выпуску самоподписанного или временного сертификата.
5.1. Выпуск самоподписанного сертификата
Алгоритм выпуска самоподписанного сертификата для IIS и Apache различается.
5.1.1. IIS
IIS сам включает в себя нужные средства для выпуска самоподписанного сертификата. Для этого откройте окно Диспетчера служб IIS (Internet Information Services (IIS) Manager) и выделите сервер в списке Подключений (Connections). После этого нажмите на ссылку «Сертификаты сервера» («Server Certificates»).
В этом же окне мы можем добавить уже купленный ранее сертификат или сгенерировать новый. Для импорта существующего сертификата нужно нажать ссылку «Импортировать (Import)», указать путь к сертификату в формате «.pfx» и пароль от него:
Обратите внимание, что добавить мы можем только сертификаты с расширением «.pfx». Что делать в случае, если нет сертификата нужного формата, будет описано позже.
Для создания самоподписанного сертификата нужно нажать «Создать самозаверенный сертификат…» («Create Self-Signed Certificate…»).
В окне мастера создания самоподписанного сертификата остается указать только произвольное название сертификата. В большинстве случаев, во избежание путаницы, лучше явно указывать в качестве значения «Полное имя сертификата» («Specify a friendly name for the certificate») адрес сервера, на котором расположен сервер IIS.
Для того, чтобы при подключении пользователей к опубликованной базе браузер не ругался на сертификат, требуется его выгрузить и отправить пользователю, чтобы он его себе установил в список доверенных сертификатов.
На этом процесс создания самоподписанного сертификата в IIS завершен. Для того чтобы опубликованная база открывалась по протоколу HTTPS нужно указать сертификат в настройках сайта. Для этого выделяем сайт по умолчанию (Default Web Site), жмем на ссылку «Привязки». Как мы видим в данный момент наш сайт доступен только по протоколу HTTP на 80 порту. Нам нужно добавить новую привязку, для того чтобы все публикации на этом сайте были доступны также и по протоколу HTTPS.
При добавлении новой привязки нам нужно выбрать только протокол HTTPS и выбрать сгенерированный ранее сертификат.
На этом настройка веб сервера IIS для работы по протоколу HTTPS завершена. Если на маршрутизаторе выполнены все настройки, о которых было упомянуто выше, то база должна успешно открыться по защищенному каналу. Ее ссылка будет формироваться по следующему принципу: https://<имя купленного домена>/<имя публикации>
5.1.2. Apache
В отличии от IIS, сертификат для Apache выпускается с помощью стороннего программного обеспечения OpenSSL. По умолчанию в операционной системе Windows его нет. Поэтому его нужно скачать и установить самостоятельно. Возможные дистрибутивы OpenSSL для Windows указаны на wiki- странице официального сайта. В статье рассматривается дистрибутив по ссылке, который указан первым на странице wiki. После скачивания дистрибутива установки необходимо его запустить.
На первой странице нужно согласиться с условиями лицензионного соглашения (переключить переключатель на «I accept the agreement») и нажать кнопку «Next».
Мастер переключится на страницу размещения дистрибутива. Если местоположение не планируется изменять, то можно оставить поле в значении по умолчанию и нажать кнопку «Next».
На следующем шаге ничего менять не нужно, и можно просто нажать «Next».
Дистрибутив готов к установке. Нужно нажимать кнопку «Install» и дождаться завершения установки.
Финальный шаг – это страница пожертвований в пользу поддержки проекта. Если в планы не входит перечисление пожертвований, то необходимо снять все флажки и нажать кнопку Finish.
Далее потребуется открыть командную строку от имени администратора и перейти в директорию исполняемого файла OpenSSL(у меня это «C:\Program Files\OpenSSL-Win64\») командой:
cd «C:\Program Files\OpenSSL-Win64\bin»
потом нужно выполнить команду ниже (параметры «-keyout» и «-out» содержат пути, куда будут сгенерированы сертификаты, рекомендую использовать путь как в примере. Также вместо «myserver» рекомендуется использовать реальное имя сервера):
openssl.exe req -x509 -nodes -days 365 -newkey rsa:2048 -keyout «C:\Program Files (x86)\Apache24\conf\ssl\myserver.key» -out «C:\Program Files (x86)\Apache24\conf\ssl\myserver.crt»
Во время выполнения команды необходимо будет заполнить информацию о владельце сертификата. Обязательно нужно заполнить «Common Name (e.g. server FQDN or Your bane)», остальные поля можно оставить по умолчанию. После выполнения команды в указанном вами каталоге должны появиться сгенерированные сертификаты.
Для включения протокола HTTP на веб-сервере, нам потребуется снова открыть конфигурационный файл «httpd.conf» и раскомментировать строки ниже путем удаления символа решетки (#) в начале строки:
Еще необходимо убедиться, что раскомментирована строка «Include conf/extra/httpd-ahssl.conf»
Теперь осталось только прописать путь к сгенерированным сертификатам в файле httpd-ahssl.conf. У меня полный путь к нему такой: «C:\Program Files (x86)\Apache24\conf\extra\httpd-ahssl.conf». В нем мы ищем параметры «SSLCertificateFile» и «SSLCertificateKeyFile», где указываем путь к сгенерированным ранее сертификатам с расширением «.crt» и «.key». Так как мы генерировали сертификаты в «C:\Program Files (x86)\Apache24\conf\ssl\» и указывали ранее путь к корневому каталогу веб сервера (SRVROOT «C:\Program Files (x86)\Apache24»), то нам тут необходимо только поменять имя сертификата на то, которое мы указали при генерации. Впрочем, если напишете полный путь к сертификату, например, «C:\Program Files (x86)\Apache24\conf\ssl\myserver.crt», тоже будет работать. В итоге должно получиться примерно так:
На этом настройка веб-сервера завершена. Если озвученные ранее подготовительные действия были выполнены, то можно проверять доступность публикации из интернета. Действия аналогичные как для веб-сервера IIS.
5.2. Выпуск временного сертификата (Let’s Encrypt)
Прежде чем приступить к выпуску временного сертификата, у нас уже должен быть доступный веб-сервер из Интернета по 80 порту. Далее нужно скачать с официального сайта и установить на свой компьютер (необязательно на сервер, для которого будет генерироваться сертификат) утилиту для командной строки certBot. После ее установки должны запустить командную строку от имени администратора и выполнить команду:
certbot certonly —authenticator manual
Тут программа нам предлагает ввести имя домена, для которого нужно выпустить сертификат. После ввода имени домена нажимаем «Enter». Следующим шагом нужно в корневом каталоге веб сервера создать файл с указанным именем и содержимым (это делается для подтверждения прав владения указанным доменом):
Должно получится как-то так:
Примечание: для создания каталога с точкой в начале имени каталога, воспользуйтесь командной строкой.
После создания указанного каталога и файла в нем жмем «Enter» и дожидаемся завершения выполнения команды. Если все выполнилось успешно, программа нам сгенерирует в каталог «C:\Certbot\archive» нужные нам сертификаты.
Теперь сгенерированные сертификаты можно добавлять в настройки веб-сервера.
6. Преобразование формата сертификата
Иногда может потребоваться преобразование сертификатов из одного формата в другой. Например, как добавить сгенерированные ранее сертификаты на веб- сервер IIS, когда мы помним, что для импорта сертификата нужен один файл с расширением «pfx»? Для этого нужно их сконвертировать в нужный нам формат. Для этой цели можно воспользоваться установленной ранее программой OpenSSL, выполнив команду:
openssl.exe pkcs12 -export -out «C:\Certbot\archive\app.rg-spc.ru\app.rg-spc.r.pfx» -inkey «C:\Certbot\archive\app.rg-spc.ru\privkey1.pem» -in «C:\Certbot\archive\app.rg-spc.ru\cert1.pem» -certfile «C:\Certbot\archive\app.rg-spc.ru\fullchain1.pem»
где нужно указать пути к сгенерированным ранее сертификатам и путь, куда должен быть сгенерирован преобразованный сертификат, а также придумать пароль к сертификату, который потребуется при его добавлении на веб-сервер.
После окончания выполнения команды в указанной нами папке должен появится сконвертированный сертификат:
Если вам прислали сертификат в виде двух файлов с расширениями «key» и «crt», тогда команда на преобразование в формат «pfx» будет выглядеть примерно так:
«C:\Program Files\OpenSSL-Win64\bin.openssl.exe» pkcs12 -inkey «C:\Сертификаты\KEY.key» -in «C:\Сертификаты\certificate.crt» -export -out «C:\Сертификаты\certificate.pfx»
Во время работы программа предложит придумать пароль для созданного сертификата и ввести его. Его потребуется ввести еще при добавлении сертификата на веб-сервер IIS, поэтому его нужно запомнить. Как импортировать сертификаты на IIS было описано ранее. После выполнения команды в указанном каталоге должен появится нужный нам сертификат.
Таким образом, мы наглядно показали, как выполнить публикацию баз 1С на веб-сервере с использованием сертификата или без такового.
Всем привет! С вами Низамов Илья и мы продолжаем изучать интеграцию 1С с web сайтами. Работа 1С в веб невозможна без создания безопасного соединения. В данном уроке мы настроим локальный веб сервер APACHE для работы с SSL. Ознакомится с полным курсом по интеграции вы можете здесь.
Для генерации SSL сертификата нам понадобится выполнить несколько команд. Запустите командную строку и выполните по очереди команды.
cd C:\Server\bin\Apache24\bin\
set OPENSSL_CONF=C:\Server\bin\Apache24\conf\openssl.cnf
openssl.exe genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out localhost.key
openssl.exe req -new -key localhost.key -out localhost.csr
openssl.exe req -new -key localhost.key -out www.web1s.site.csr
openssl.exe x509 -req -days 365 -in www.web1s.site.csr -signkey localhost.key -out www.web1s.site.crt
В примере мы генерирует SSL для сайта localhost, вы можете указать любой другой.
После выполнения всех команд в папке APACHE появятся несколько файлов. Это секретный ключ и самоподписанный сертификат для сервера localhost.
Создадим в корне нашего локального веб сервера папку certs и переместим в нее 2 файла для настройки apache ssl.
Теперь надо настроить наш apache для работы с ssl. Настройки ниже мы прописываем в наш конфигурационный файл apache.
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost _default_:443>
DocumentRoot "z:/www/"
ServerName localhost:443
ServerAdmin admin@localhost.com
ErrorLog "${SRVROOT}/logs/error-ssl.log"
TransferLog "${SRVROOT}/logs/access-ssl.log"
SSLEngine on
SSLCertificateFile "C:\Server\certs\localhost.crt"
SSLCertificateKeyFile "C:\Server\certs\localhost.key"
</VirtualHost>
Отключаем apache на 80 порту. Работать он будет только через безопасное соединение на 443 порту.
Перезапустим apache и обратимся к нашему локальному сайту через https соединение. К сожалению браузер не доверяет нам и говорит, что наш сертификат не действителен.
Добавим наш сертификат в доверенные
В принципе для дальнейшей работы с нашим интернет магазином через rest api этого вполне достаточно. Но если вы хотите потом разместить свой проект в интернете и получить действительный SSL сертификат бесплатно на 1 год то читайте далее.
APACHE SSL ДЕЙСТВИТЕЛЬНЫЕ СЕРТИФИКАТЫ
Переходите по ссылке и при покупке вводите промокод 14D2-32A5-0F52-F322, это даст вам небольшую скидку при покупке хостинга.
Подбираем имя домена (сайта).
В дополнение в домену сразу покупаю хостинг.
В личном кабинете заказываю бесплатный ssl сертификат для нашего apache 2.4
Приходит письмо с данными для генерации сертификата
В письме вам должна прийти ссылка на панель администрирования хостинга.
Выбираем наше доменное имя и создаем новую TXT запись, вставляем данные их письма.
Перед установкой ssl сертификата надо перенастроить наш сайт на wordpress.
На время разработки мы будем работать с локальным web сайтом, поэтому в файле hosts надо прописать перенаправление запросов к сайту не в интернет, а на наш локальный веб сервер.
Изменим немного конфиг Apache 2.4. Уберем комментарий подключающий библиотеку ssl.
Прослушивание порта ставим на 443.
Внизу конфига удалим внесенные ранее изменения. И включим виртуальные хосты, уберем комментарий у соответствующей строки.
Переходим к конфигурированию виртуальных хостов.
Указываем параметры нашего локального сайта.
Изменим название папки нашего веб сайта.
В папке с сертификатами создадим еще 2 файла. Один сертификат и ключ. Это просто текстовые файлы в которые мы вставляем данные из письма пришедшего к нам от reg.ru. Сделайте все по аналогии с файлами localhost.
Переходим к нашему сайту и видим, что сертификат теперь действительный.
Обновим страницу и теперь видим, что у нас установлено безопасное подключение. Так как браузер доверяет центру сертификации выдавшему сертификат для сайта.
На этом настройка безопасного SSL соединения на нашем web сервере Apache 2.4 завершена. В следующем уроке мы приступаем к настройке плагина интернет магазина woocommerce и отправке товаров из 1С на наш сайт.
Доп материалы только для авторизованых пользователей. Пожалуйста войдите.
Публикация web решений в интернете всё глубже входить в нашу IT жизнь. Рассмотрим стандартную задачу по публикации 1С базы, например, для обмена между сервисами Битрикса по https протоколу.
- Скачиваем Apache_2.4.2-x86-openssl и устанавливаем его.
2. Проверяем работоспособность переходом по ссылке в браузере http://localhost
3. Публикуем базу. Запускаем от имени администратора 1C Предприятие. Заходим в конфигураторе.
Теперь включаем SSL протокол в Apache
В файле httpd.conf в папке C:\ProgramFiles(x86)\ApacheSoftwareFoundation\Apache2.4\conf. Ищем строчку с Listen 80 и комментируем ее. Под ней добавляем — Listen 443
Копируем файлы ssleay32.dll и libeay32.dll из C:\ProgramFiles(x86)\ApacheSoftwareFoundation\Apache2.2\bin в C:\WINDOWS\system32.
Копируем файл openssl.cnf из «C:\ProgramFiles(x86)\ApacheSoftwareFoundation\Apache2.2\conf» в «C:\ProgramFiles(x86)\ApacheSoftwareFoundation\Apache2.2\bin».
Создаем ключи. Включаем CMD от имени Администратора и переходим в каталог bin апача:
cd C:\ProgramFiles\ApacheSoftware Foundation\Apache2.4\bin
Дальше можно просто копировать следующие команды:
openssl req -config openssl.cnf -new -out my-server.csr
openssl rsa -in privkey.pem -out my-server.key
Вот здесь нужно будет ввести пароль, который вы указывали в первой команде.
openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 5999
openssl x509 -in my-server.cert -out my-server.der.crt -outform DER
Создаем папку ssl в «C:\ProgramFile(x86)s\ApacheSoftwareFoundation\Apache2.4\conf» и перемещаем файлы my-server.key и my-server.cert из «C:\ProgramFiles(x86)\ApacheSoftwareFoundation\Apache2.4\bin» в «C:\ProgramFiles(x86)\ApacheSoftware Foundation\Apache2.4\conf\ssl»
В файле httpd.conf ищем строку #LoadModule ssl_module modules/mod_ssl.so и раскомментируем её. Идем в самый конец httpd.conf, там после закомментированных строк стираем всё и вставляем:
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
Mutex default
SSLSessionCache none
</IfModule>
<VirtualHost localhost:443>
SSLEngine On
SSLCertificateFile conf/ssl/my-server.cert
SSLCertificateKeyFile conf/ssl/my-server.key
</VirtualHost>
812 ИТ-Сервис всегда готовы оказать помощь в настройке публикации 1С через веб с помощью Apache 2.4. Мы готовы произвести настройку удаленно и приехать в офис. С нашими тарифами на выездное обслуживание вы можете ознакомится здесь
Для работы с пользователями мы используем систему заявок.
