Имя: Пароль:
1C
1С v8
Мобильное приложение. Подключение через Http сервис по ssl
,
0 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)}: Ошибка при вызове метода контекста (Получить): Ошибка работы с Интернет:   Удаленный узел не прошел проверку"

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

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

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