1С + IIS + SSL: Перевод опубликованной базы на защищенное соединение https с сертификатом от Let's encrypt

Публикация № 1105824

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

https сертификат ssl iss публикация базы

77
Всем Доброго времени! Предлагаю Вам небольшую базовую инструкцию, где я опишу, как быстро перевести опубликованную в веб базу 1С на защищенное https соединение, используя стандартный IIS сервер и бесплатный сертификат SSL от Let's encrypt.

У меня возникла необходимость перевести опубликованную базу в веб 1с на защищенной соединение https.

Для данного примера я работал с Платформой 1С 8.3.13.1865, конфигурацией Розница 2.2.12. Стандартный IIS сервер 8.5.

Решение этой задачи я разобью на 2 этапа: подготовительный и основной.

Здесь я не буду расписывать, как опубликовать базу в веб, благо подобной информации очень много.

 

Итак, подготовительный этап:

 

1.1. Для начала мы должны привязать доменное имя к вашему ip адресу:

Без доменного имени, привязать SSL сертификат НЕЛЬЗЯ, поэтому, заходим на регистратора доменных имен и покупаем любое свободное имя.

Далее, заходим в "Управление доменной зоной" в личном кабинете регистратора доменного имени и делаем 2 записи типа А (для www и без - см.рис), куда прописываем ваш внешний ip (опубликованная база должна быть доступна по этому ip заранее).

 

 

Тут все просто, проверяем доступность базы по подключенному имени, через некоторое время. Через немного времени, убедимся, что все хорошо.

 

 

1.2. Пробросим порт 443 на роутере:

Следующим шагом, заходим на ваш роутер и пробрасываем порт 443 для https. Это должно быть выглядеть примерно вот так:

 

 

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

80 - незащищенное интернет соединение http

3340 - соединение к удаленному рабочему столу (к описанию отношения не имеет, но оставлю для пояснения)

443 - защищенное интернет соединение https

 

1.3. Настройка IIS

Сделаем привязку имени узла к основному сайту в IIS. Для этого, заходим в Диспетчер IIS (см. рис):

Выбираем в раскрывающемся списке Default Web Site и прописываем для него Привязки. В имя узла пропишем наше доменное имя.

 

 

На этом подготовительный этап закончен, переходим к основному:

 

2.1. Создание и запись сертификата Let's encrypt.

Я установил бесплатный сертификат от Let's encrypt https://letsencrypt.org/ сроком на 3 месяца со времени его создания.

Для этого, я воспользовался свободной программкой letsencrypt-win-simple.V1.9.3.zip (приложена к этой инструкции).

Запускаю программу от имени администратора и делаю следующие действия:

 

Вводим электронную почту.

 

На данный вопрос вводим "y".

 

Далее, программа находит DNS записи на сервере IIS. Выбираем нашу запись -  нажимаем "1".

На следующий (последний) вопрос вводим "N"

Сертификат создан и записан в IIS.

 

2.2. Проверяем установленный сертификат

Для этого открываем Диспетчер служб IIS и в разделе "Сертификаты сервера" смотрим наш сертификат.

 

 

Заходим на наше доменное имя по адресу https:// и убедимся, что оно доступно.

 

Теперь, наша база опубликована по доменному имени и работает по защищенному соединению.

Всем спасибо за прочтение, буду рад, если данный материал Вам поможет!

77

Скачать файлы

Наименование Файл Версия Размер
letsencrypt-win-simple.V1.9.3.zip
.zip 4,00Mb
08.08.19
3
.zip 4,00Mb 3 Скачать

См. также

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

Комментарии
Избранное Подписка Сортировка: Древо
1. vsesam80 10.08.19 23:50 Сейчас в теме
Полезная публикация. Я так понял что все серты Let's encrypt будут приниматься Виндой как настоящие и не будут генерить ошибку как в случае с самоподписанными?
Вот еще бы как бы с Апачем это сделать и прикрутить сертификаты к сервису no-ip
2. Xershi 678 11.08.19 01:04 Сейчас в теме
Я так понял если у нас белый статический ip, а домена нет, то ничего не выйдет?
Тоже самое если я допустил развернул веб-сервер у себя в локальной сети, доменного имени нет, есть только имя ПК, тоже пшик или есть варианты?
4. aximo 808 11.08.19 06:13 Сейчас в теме
(2) вариант- купить доменное имя. Ssl сертификаты выдаются только на доменные имена..

если честно не заморачивался локальной сетью - мне нужно было установить именно защищенное соединение с вебсервисом
22. ridgid 12.08.19 15:42 Сейчас в теме
(2)не берите в голову есть бесплатный dns использующий ваш белый ip
Sslip.io
Сертификат 123-56-78-232.sslip.io
23. Xershi 678 12.08.19 16:09 Сейчас в теме
(22) ну это для первого варианта подходит, а для локальной сети для поиграться?
24. mitia.mackarevich 27 12.08.19 18:53 Сейчас в теме
(23) Для локальной сети выпиши сам себе сертификат
3. user953800 11.08.19 01:27 Сейчас в теме
Удивительно - раздавать за "см" не своё, так еще и старьё.
Github - проект win-acme
Lyolik; igee12; mitia.mackarevich; A_Max; ltfriend; iliabvf; Fox-trot; ziercool; 3vs; +9 Ответить
5. ellavs 601 11.08.19 07:28 Сейчас в теме
Let's encrypt - прикольная штука. Как раз недавно у одного сайта закончился покупной 3х годовалый сертификат, решили не продлевать, а воспользоваться Let's encrypt. Он ежемесячно перевыпускает новый SSL сертификат. Практически все этот сертификат признают. Только мы не предложенной в статье консольной утилитой пользовались, а гуишным (визуальным) приложением. Там мастерок вполне не сложный помогает пройти нужные этапы. Приложение монтируется как сервис и занимается генерацией сертификатов и привязкой его к сайту без Вас.
6. ellavs 601 11.08.19 11:55 Сейчас в теме
(5) посмотрела повнимательней статью... самое главное, что забыл сказать автор, упоминая Let's encrypt, это как раз то, о чем выше написала - что его достаточно один раз настроить и про просрочку SSL-сертификатов можно забыть, сервис сам ежемесячно следит за перевыпуском сертификата (т.е. он никогда не просрочится).
А то из статьи получается, что нужно делать сертификат на 3 месяца каждый раз ручками... ну это так, замечание :)
8. aximo 808 11.08.19 12:05 Сейчас в теме
(6) совершенно верно, сертификат получается на 3 месяца, что указано мной. Ну все остальное - на развитие темы конечно!
14. ellavs 601 11.08.19 12:54 Сейчас в теме
(8) да, Вы молодец - что упомянули эту тему, т.к. многие про этот функционал не знают. Мое дополнение лишь для того, чтобы те кто зайдут почитать понимали зачем вообще заморачиваться с этим сервисом (ведь ради трех месяцев этим заниматься не охота, а вот чтобы забыть о проблеме почти навсегда - уже стоит подумать...)
26. valentinko 138 13.08.19 14:17 Сейчас в теме
(6) Ну да, при одном условии.
хттп порт (по-умолчанию 80) должен быть в момент "перевыпуска" открыт на веб-сервере, что есть очень плохой затеей. Поэтому для автоматического "перевыпуска" лучше ограничить запросы по хттп.
27. ellavs 601 13.08.19 15:19 Сейчас в теме
(26) насколько знаю - это только при первой генерации, дальше уже не нужно.
28. valentinko 138 13.08.19 15:43 Сейчас в теме
(27) Я тоже так думал. Однако каждый раз у меня "ругается" на недоступность из вне http://имя_домена/.well-known/acme-challenge....
Причём это и IIS, и apache/nginx.
Может "руки"?)
9. vsesam80 11.08.19 12:13 Сейчас в теме
(5)А вы не поделитесь ссылочкой на это приложение гуишное для перевыпуска сертификатов?
12. user953800 11.08.19 12:40 Сейчас в теме
(9) Описание проектов - доходите до заголовка "Windows / IIS" и ищите там в тексте "GUI"
Полученные ссылки оттуда на страницы скачивания 2-х проектов GUI:
GetCert
Certify SSL Manager
13. ellavs 601 11.08.19 12:51 Сейчас в теме
(9) Certify SSL Manager - https://certifytheweb.com/
Прикрепленные файлы:
vsesam80; +1 Ответить
7. AlexeyPapanov 330 11.08.19 12:03 Сейчас в теме
Уважаемые коллеги, а можно ip привязать к субдомену, чтобы лишний домен не покупать?
к примеру, есть у нас уже site.ru, а мы создадим бесплатно subdomain.site.ru и на него повесим сертификат.
11. user953800 11.08.19 12:23 Сейчас в теме
(7) У меня как раз 1С на поддоменах, в управлении ДНС домена создал А-записи для поддомена с указанием ip.. При этом Let's encrypt умеет wild-сертификаты - т.е. я получаю один сертификат, где прописаны мои поддомены (2шт).
Прикрепленные файлы:
10. vsesam80 11.08.19 12:14 Сейчас в теме
Может кто знает коллеги, как бы ssl к сервису no-ip прикрутить? Не у всех белый, статический ip есть.
15. user953800 11.08.19 12:55 Сейчас в теме
(10) А в чем проблема? Главное сделать проброс 80 и 443 портов. Проверка может проводиться созданием в каталоге сайта файла верификации. Если файл обнаружен, сайт верифицируется и выдается сертификат. Прочие сертификаты на этот сайт, если они были зарегистрированы ранее в том же Let's encrypt, отзываются и считаются недействительными.
Просто поищите запрос "Let's encrypt dyndns" - такие вопросы англоязычные форумы разбирали.
16. vsesam80 11.08.19 13:44 Сейчас в теме
(15)В том и проблема. С пробросом портов нет вопросов. Но прикрутить серт к субдомену no-ip это оказалось той еще историей. Кто то пишет что вообще не возможно.
17. user953800 11.08.19 17:49 Сейчас в теме
(16) У самих NoIp написано, что они не поддерживают (пока) такой функционал в бесплатной версии.
Но можно попробовать скриптом win-acme (последнияя версия на сегодня v2.0.9.386) https://github.com/PKISharp/win-acme/releases
Сайт привязан к 80 порту с обязательным именем узла. (рисунок 1)

1. Скрипт запустить от имени администратора и Ввести "M" - full options (рисунок 2). В простом режиме "N" получал ошибку прохождения аутентификации.
2. Ввести "2" - single binding
3. Ввести цифру сайта из найденных
4. Можно написать свое имя или просто нажать enter
Следующие рекомендуемые шаги подсвечены зеленым - скриншот не стал до конца делать.

По итогу получил сертификат для сайта на динамическом ip. Скрипт также создает задание в планировщике на обновление сертификата.
Прикрепленные файлы:
vsesam80; +1 Ответить
19. Voblhned 39 12.08.19 07:35 Сейчас в теме
Ты забыл что уязвимость определяется по самому тонкому месту, где отключение 80 порта?
20. aximo 808 12.08.19 08:04 Сейчас в теме
(19) разумеется.... отключите 80 порт или сделайте переадресацию на 443
21. starik-2005 1920 12.08.19 09:23 Сейчас в теме
А можно это все в докер обернуть и как переносимый сервис организовать?
30. asved.ru 36 15.08.19 08:52 Сейчас в теме
(21) Можно. Только вазелин закупите, он ва м пригодится, когда докер сломается и убьет базу.
25. baton_pk 393 13.08.19 00:03 Сейчас в теме
Теперь, наша база опубликована по доменному имени и работает по защищенному соединению.

Читаем: "Торчит попкой наружу". Да, соединение шифрованное. Но теперь Главбух Маша с полными правами и паролем "12345" неожиданно начнёт работать из Китая, Швейцарии или Перу.
Торча наружу было бы здорово озаботиться ещё парой штук:
1. Клиентские сертификаты - 1С в них умеет
2. Не привязывать доменное имя непосредственно к внешнему IP-адресу своих серверов - только прослойка.

Иначе "защищённость" есть, а безопасности больше не стало.
asved.ru; +1 Ответить
29. valentinko 138 13.08.19 15:50 Сейчас в теме
(25) Вы всё говорите правильно.
Только автор описал немного другую тему. Конкретно - 1С + IIS + SSL (Letsencrypt) - как базовая инструкция )
А всё что Вы говорите - можно продолжать долго.
31. Novikoff 16.08.19 16:19 Сейчас в теме
По поводу автоматического продления Let's encrypt:

C помощью win-acme получен сертификат 7.06.2019, конец 5.09.2019. В планировщике задание создалось. Все работало. Недавно получил письмо с темой Let's Encrypt certificate expiration notice for domain "cntuik.ddns.net". Решил посмотреть как дела с обновлением сертификата и увидел,что начиная с 2.08.2019 задание вполняется с ошибкой следующего плана:
Authorization timed out
Renewal for "[IISBinding] <имя домена>" failed, will retry on next run

Попробовал вручную запустить обновление - результат тот же:
C:\Windows\system32>C:\Install\win-acme\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/"

[INFO] A simple Windows ACMEv2 client (WACS)
[INFO] Software version 2.0.9.386 (RELEASE)
[INFO] IIS version 10.0
[INFO] Please report issues at https://github.com/PKISharp/win-acme

[INFO] Renewing certificate for [IISBinding] <имя домена>
[INFO] Authorize identifier: <имя домена>
[INFO] Authorizing cntuik.ddns.net using http-01 validation (SelfHosting)
[EROR] Authorization timed out
[EROR] Renewal for [IISBinding] <имя домена> failed, will retry on next run

И так уже две недели - никто не сталкивался?
32. Novikoff 21.08.19 13:01 Сейчас в теме
Отвечаю сам себе. Должен быть открыт 80 порт, возможно лучше 443,но буду проверять после отпуска - https://letsencrypt.org/docs/challenge-types/. Порт был нестандартный,а 80 закрыт.
Оставьте свое сообщение