Вход | Регистрация
 
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) А подробнее?


Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует