Имя: Пароль:
IT
Мобильный мир
Самописный SSL сертификат + мобильная платформа 1С +Андроид
0 МастерВопросов
 
17.09.18
15:06
Из под мобильной платформы подключаюсь к web-сервису по протоколу HTTPS.
На локальном компьютере под Win 7 все получается, а под андроид тот же самый код не работает.
Как то нужно Андроид научить доверять нашему "Центру сертификации" и всё это средствами мобильной платформы.
1 Cyberhawk
 
17.09.18
15:07
Во встроенном языке 1С просто создаешь сертификат из файла
2 Cyberhawk
 
17.09.18
15:08
И указываешь его в ХТТП-соединении (или в прокси веб-сервиса)
3 Cyberhawk
 
17.09.18
15:08
Никого ничему доверять учить не требуется
4 arsik
 
гуру
17.09.18
15:20
5 МастерВопросов
 
17.09.18
15:31
(4) спасибо. Завтра попробую
6 МастерВопросов
 
17.09.18
15:35
(1) (2) так всё и делаю. На Win 7 работает, под Андроид нет.
7 МастерВопросов
 
18.09.18
05:09
+(6)

    Адрес = "https://.../StacionarnayaBaza/ws/hallo.1cws?wsdl";;
    sslСертификат = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаФайл(СокрЛП(ПутьКПапке),"..."),);
    Сообщить("успешно создан сертификат на основе файла:"+СокрЛП(sslСертификат.СертификатКлиента.ИмяФайла));
    Определения = Новый WSОпределения(Адрес,,,,60,sslСертификат);
    URI = "http://localhost/wsHello";;
    Прокси = Новый WSПрокси(Определения, URI, "Hello", "HelloSoap");
    Возврат Прокси;
8 МастерВопросов
 
18.09.18
05:10
// занятно. Миста добавила в некоторых строках вторые ";"
9 МастерВопросов
 
18.09.18
05:19
10 stopa85
 
18.09.18
07:46
(9) А точно Hallo, не Hello?

При создании защищенного соединения нужно указывать не только сертификат клиента, но и сертификат удостоверяющего центра.

СертификатУЦ = новый СертификатыУдостоверяющихЦентровОС();
ДД = Константы.СертификатУЦ.Получить().Получить();
Если ДД <> неопределено Тогда
            
  ИмяФайла = ПолучитьИмяВременногоФайла("crt");
  ДД.Записать(ИмяФайла);
  СертификатУЦ = новый СертификатыУдостоверяющихЦентровФайл( ИмяФайла, "" );
  УдалитьФайлы( ИмяФайла );
            
КонецЕсли;
        
ЗащищенноеСоединение = новый ЗащищенноеСоединениеOpenSSL( СертификатКлиента, СертификатУЦ );


WSОпределения     = Новый WSОпределения(Урл + "ws/datatransfer.1cws?wsdl", ИмяПользователя, Пароль,,ТаймАут, ЗащищенноеСоединение);
11 stopa85
 
18.09.18
07:50
Твой мобильный клиент, не признает твоего сервера.
Когда ты пользуешься виндой, достаточно сертификат УЦ установить в систему и 1С-ка тонкий клиент его "видит".

А вот с мобильный по моему нет (даже если в систему адроид установить сертификат УЦ)
12 МастерВопросов
 
18.09.18
10:24
(11) а есть вариант чтобы увидел сертификат из хранилища сертификатов на Андроид?

Новый СертификатыУдостоверяющихЦентровОС и СертификатыУдостоверяющихЦентровLinux не доступны на мобильной платформе
13 МастерВопросов
 
18.09.18
10:25
(10) методом проб и ошибок разобрались, дело было не в 1С а в настройках доступа к нашей сети из интернет.
14 МастерВопросов
 
18.09.18
10:29
СертификатыУдостоверяющихЦентровLinux (LinuxCertificationAuthorityCertificates)
СертификатыУдостоверяющихЦентровLinux (LinuxCertificationAuthorityCertificates)
Конструкторы:

По умолчанию

Описание:

Объект сертификатов удостоверяющих центров OpenSSL, загружаемых из системного хранилища сертификатов ОС Linux.
Платформа поддерживает только сертификаты, записанные в PEM-формате.
Хранилище сертификатов ОС Linux находится в каталоге /etc/ssl/certs.
Если в каталоге находится много файлов, инициализация объекта СертификатыУдостоверяющихЦентровLinux может занять длительное время.
При необходимости инициализации различных соединений рекомендуется создавать объект СертификатыУдостоверяющихЦентровLinux один раз и использовать его повторно, в противном случае возможно снижение производительности.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший