Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Мобильное приложение. Подключение через Http сервис по ssl

Мобильное приложение. Подключение через Http сервис по ssl
Я
   Sargez
 
13.09.18 - 10:34
Здравствуйте

Разработана мобильная конфигурация, которая по http сервису общается с центральной базой. Окружение следующее:

Платформа 1с: 8.3.10.2466
Веб-сервер: Apache (слушает 443 порт, настроен на https соединение)

Необходимо установить https соединение на основе доверенного TLS-соединения с сервером на основе конкретного сертификата. Создал 2 ключа: один ключ центра сертификации: "CA_Test.crt", создал сертификат сервера, подписанный сертификатом "CA_Test.crt" - "server.crt"

Указываю следующие параметры подключения:

ПутьКФайлу = "E:\ssl\Mobile\CA_Test.crt";

СертификатЦА = Новый СертификатыУдостоверяющихЦентровФайл(ПутьКФайлу);

SSL = Новый ЗащищенноеСоединениеOpenSSL(Неопределено,СертификатЦА);   

Попытка

тСоединение = Новый HTTPСоединение(Адрес, Порт , Логин, Пароль , , ,SSL);

тHTTPЗапрос = Новый HTTPЗапрос(ТекстЗапроса);

тОтвет = "";

Попытка

тHTTPОтвет  = тСоединение.Получить(тHTTPЗапрос);

тОтвет = тHTTPОтвет.ПолучитьТелоКакСтроку();

Исключение

Сообщить("Не удалось установить соединение. " + ОписаниеОшибки())//(ОписаниеОшибки());


Возврат Неопределено;

КонецПопытки;
Пытаюсь сначала протестировать даже в режиме 1с: предприятия (не через мобильное устройство), при выполнении кода 

тHTTPОтвет  = тСоединение.Получить(тHTTPЗапрос);
Выдается следующая ошибка:
"Не удалось установить соединение. {Обработка.Тест.Форма.ФормаДляМобильногоТелефона.Форма(149)}: Ошибка при вызове метода контекста (Получить): Ошибка работы с Интернет:   Удаленный узел не прошел проверку"

В чем проблема? что я не правильно делаю? помогите разобраться, без указания сертификата подключение проходит. Сертификат СА включен в корень доверенного.

Спасибо, всем откликнувшимся на проблему.
 
 
   arsik
 
1 - 13.09.18 - 10:44
Посмотри еще логи апача. Может там подробнее будет.
   arsik
 
2 - 13.09.18 - 10:47
Возможно нужно в сертификате сервера указать правильный url в поле CN
   1000110111100101
 
3 - 13.09.18 - 10:57
Установи сертификат в систему, открой ссылку в браузере и посмотри на что он заругается.
   Sargez
 
4 - 13.09.18 - 11:00
(1) в логах апача смотрел, ни в error, ни в access ничего вообще нет, те такое ощущение что до него даже не доходит дело
   Sargez
 
5 - 13.09.18 - 11:03
(3) открыл IE, ввел адрес сервера в строке. получил ошибку окружения, "ошибка сертификата", нажимаю "просмотреть сертификат" - на вкладке путь сертификации "Сертификат действителен". В чем еще может быть проблема? Доверие же обозначено
   Sargez
 
6 - 13.09.18 - 11:08
(3) единственное на ошибке в браузере след.ошибка описана:
"Несовпадающий адрес". Сертификат безопасности этого веб-сайта был выпущен для веб-сайта с другим адресом.
   PloAl
 
7 - 13.09.18 - 11:12
(0)
Зачем использовать сертификат на клиенте при подключении?
Зачем добавлять сертификат в доверенные?
В браузере при подключении к сайту с самоподписанным сертификатом, не указывают сертификат.
А добавление в доверенные, нужно только для зеленого замочка, сомневаюсь что он у вас где то есть.

Странный для мобильного приложения ПутьКФайлу.
   Sargez
 
8 - 13.09.18 - 11:22
(7) путькфайлу - пока такой для теста просто в отладчике в среде 1с, до мобильного приложения еще не могу дойти. Мне нужно добиться, чтобы клиенты общались только с определенным сервером, чтобы убрать уязвимость в виде "человек по середине", для этого и пытаюсь разобраться с сертификатами
   PloAl
 
9 - 13.09.18 - 11:27
(8) С самоподписанным сертификатом вы этого никогда не добьетесь.
   Sargez
 
10 - 13.09.18 - 11:30
(9) почему? если я смогу заставить клиента всегда запрашивать сертификат сервера , а допустим сервер запрашивать сертификат клиента , то вроде бы уязвимость закрывается. главное, чтобы клиент не доверял любому сертификату, а только конкретному.
 
 Рекламное место пустует
   arsik
 
11 - 13.09.18 - 11:31
(6) Вы неправильно создали сертификат сервера 
"CN - имя сертификата, при создании серверных сертификатов используется доменное имя сайта, для клиентских
сертификатов может быть использовано что угодно (CommonName). Обязательный параметр."
   PloAl
 
12 - 13.09.18 - 11:44
(10) А что мешает человеку посередине, сказать я ваш сервер, запросить сертификат с реального сервера и передать клиенту? Доверие как раз и происходит по доменному имени и несамоподписанному сертификату.
   arsik
 
13 - 13.09.18 - 11:45
Ну и у тебя еще должен быть сертификат клиента, я так думаю.
   arsik
 
14 - 13.09.18 - 11:45
(12) Человек по середине никогда не получит закрытый сертификат сервера, а открытый ему ничего не даст.
   Sargez
 
15 - 13.09.18 - 11:48
(14) +1 насчет получения сертификата сервера.
   Sargez
 
16 - 13.09.18 - 11:49
(13) сейчас попробую создать сертификаты заново и уделить внимание CN. Напишу по результату.
да, а что за сертификат клиента? и как его создавать, подскажите, пожалуйста?
   arsik
 
17 - 13.09.18 - 11:52
(16) Какой оснасткой создаешь сертификаты?
   Sargez
 
18 - 13.09.18 - 11:53
(17) Win64OpenSSL-1_1_0i
   arsik
 
19 - 13.09.18 - 11:57
Вот вариант для openssl
http://krd-news.blogspot.com/2014/04/ssl-apache.html
   arsik
 
20 - 13.09.18 - 12:09
   Sargez
 
21 - 13.09.18 - 12:27
(20) подскажите, дошел до этапа создания серверного ключа, в [ alternate_names ] я должен указать IP по которым будет доступен мой сервер. получается если у меня база будет поубликована, скажем на IP 10.10.10.1, а обращаться я буду в локальной сети с 10.10.10.2, то в [ alternate_names ] указываю 10.10.10.1, верно? что я должен в данном случае указать в параметре CN ? у моего веб-сервера нет доменного имени, я указываю IP там или ИмяКомпьютера в локальной сети?
   arsik
 
22 - 13.09.18 - 13:04
если указываешь поле alternate_names, то CN любое.
   arsik
 
23 - 13.09.18 - 13:04
зачем тебе вообще в локальной сети ssl.
   PloAl
 
24 - 13.09.18 - 13:19
(12) Я не писал, открытый или закрытый, ключи и прочие подробности. Я всего лишь повторил написанное в (10), с целью продемонстрировать логику человека посередине.
   arsik
 
25 - 13.09.18 - 13:36
(24) Это просто защита от фишинга сайтов. Она не нужна, когда у тебя на клиенте есть клиентский сертификат.
   PloAl
 
26 - 13.09.18 - 14:00
(25) фишинг это когда на почту или еще куда приходит ссылка похожая на настощую g00gle.com/login, а по ссылке сайт копия настоящего
   Sargez
 
27 - 13.09.18 - 15:36
(11) cпасибо. дело было в ключах сервера и настройки апача.
   arsik
 
28 - 13.09.18 - 15:43
(27) А подробнее?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует