| 
    
        
     
     | 
    
    
  | 
HTTPСоединение + https + сертификат | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        zak555    
     15.07.11 
            ✎
    13:37 
 | 
         
        Есть сертификат sert.p12
  
        Установил сертификат Захожу на web http://web/ выбираю сертификат установленный получаю таблицу как её распарсить ?  | 
|||
| 
    1
    
        zak555    
     15.07.11 
            ✎
    13:39 
 | 
         
        wget'ом знаю, как получить
  
        а как из 8.2 ?  | 
|||
| 
    2
    
        zak555    
     15.07.11 
            ✎
    13:40 
 | 
         
        как реализовать аутентификацию пользователей по клиентским SSL сертификатам ?     
         | 
|||
| 
    3
    
        smaharbA    
     15.07.11 
            ✎
    13:43 
 | 
         
        (2) в 8.2 СП написано, что хттпс работает, но как не вкурсе - восьмерку тока осваявываю и то только по форуму, платформа есть только базовая и та далеко (     
         | 
|||
| 
    4
    
        zak555    
     15.07.11 
            ✎
    13:43 
 | 
         
        вот, что нашёл в СП, пример :
  
        // инициализируем объект для записи XML ИмяФайлаЗапроса = ПолучитьИмяВременногоФайла(); ОбъектЗапись = Новый ЗаписьXML; ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("windows-1251", , Ложь); ОбъектЗапись.ОткрытьФайл(ИмяФайлаЗапроса, ПараметрыЗаписиXML); ОбъектЗапись.ЗаписатьОбъявлениеXML(); // выводим корневой элемент Request ОбъектЗапись.ЗаписатьНачалоЭлемента("Request"); // выводим элемент ClientInfo ОбъектЗапись.ЗаписатьНачалоЭлемента("ClientInfo"); ОбъектЗапись.ЗаписатьАтрибут("email", АдресОтправителя); ОбъектЗапись.ЗаписатьКонецЭлемента(); Если ИмяФайлаСертификата <> Неопределено Тогда // кодируем в Base64 сертификат ДвДанные.Прочитать(ИмяФайлаСертификата); ФайлСертификатаBase64 = ДвДанные.ПолучитьСтрокуBase64(); // выводим элемент Certificate ОбъектЗапись.ЗаписатьНачалоЭлемента("Certificate"); ОбъектЗапись.ЗаписатьТекст(ФайлСертификатаBase64); ОбъектЗапись.ЗаписатьКонецЭлемента(); КонецЕсли; Если ИмяФайлаЗашифрованногоКонтейнера <> Неопределено Тогда // кодируем в Base64 зашифрованный контейнер ДвДанные.Прочитать(ИмяФайлаЗашифрованногоКонтейнера); ФайлЗашифрованногоКонтейнераBase64 = ДвДанные.ПолучитьСтрокуBase64(); // выводим элемент Data ОбъектЗапись.ЗаписатьНачалоЭлемента("Data"); ОбъектЗапись.ЗаписатьТекст(ФайлЗашифрованногоКонтейнераBase64); ОбъектЗапись.ЗаписатьКонецЭлемента(); КонецЕсли; // записываем конец для корневого элемента ОбъектЗапись.ЗаписатьКонецЭлемента(); ОбъектЗапись.Закрыть(); АдресСервераОнлайнПроверки = "onlinefc.taxcom.ru"; РесурсНаСервере = "/online_fc/online_fc.dll" + ?(ПолучитьСертификат, "?IncludeCertificate", ""); // устанавливаем соединение с сервером Попытка Соединение = Новый HTTPСоединение(АдресСервераОнлайнПроверки, , , , Прокси); Исключение Сообщить("Не удалось установить соединение с сервером онлайн-проверки:" + Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); Возврат; КонецПопытки; // посылаем запрос ФайлРезультата = ПолучитьИмяВременногоФайла(); Попытка Соединение.ОтправитьДляОбработки(ИмяФайлаЗапроса, РесурсНаСервере, ФайлРезультата); Соединение = Неопределено; Исключение Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); КонецПопытки;  | 
|||
| 
    5
    
        zak555    
     15.07.11 
            ✎
    13:44 
 | 
         
        вот где реализован этот код ?     
         | 
|||
| 
    6
    
        zak555    
     15.07.11 
            ✎
    13:47 
 | 
         
        вот что такое : ДвДанные ???     
         | 
|||
| 
    7
    
        smaharbA    
     15.07.11 
            ✎
    13:47 
 | 
         
        двоичные данные     
         | 
|||
| 
    8
    
        zak555    
     15.07.11 
            ✎
    13:49 
 | 
         
        (7)
  
        ДвДанные = Новый ДвоичныеДанные ???  | 
|||
| 
    9
    
        smaharbA    
     15.07.11 
            ✎
    13:50 
 | 
         
        х.з. в восьмерке дуб-дубом     
         | 
|||
| 
    10
    
        zak555    
     15.07.11 
            ✎
    13:51 
 | 
         
        я не знаю, что тогда прочитать
  
        ибо у Двочных данных нет это метода  | 
|||
| 
    11
    
        zak555    
     15.07.11 
            ✎
    13:52 
 | 
         
        > ПолучитьСтрокуBase64
  
        вот это что ?  | 
|||
| 
    12
    
        zak555    
     15.07.11 
            ✎
    13:52 
 | 
         
        в 8.2.13.205 нету такого =(     
         | 
|||
| 
    13
    
        GenV    
     15.07.11 
            ✎
    13:59 
 | 
         
        (10) В принципе, двоичные данные другими методами можно в Base64 преобразовывать. Base64Строка, Base64Значение. По-моему так.     
         | 
|||
| 
    14
    
        zak555    
     15.07.11 
            ✎
    14:00 
 | 
         
        (13) так я пытаюсь понять пример (4) из СП     
         | 
|||
| 
    15
    
        zak555    
     15.07.11 
            ✎
    14:00 
 | 
         
        я ж 7шник =)     
         | 
|||
| 
    16
    
        GenV    
     15.07.11 
            ✎
    14:04 
 | 
         
        (14) Может раньше так было в 8.0 или в 8.1, уже не помню.
  
        ДвДанные.Прочитать(ИмяФайлаСертификата); - ДвДанные = Новый ДвоичныеДанные(ИмяФайлаСертификата); ФайлЗашифрованногоКонтейнераBase64 = ДвДанные.ПолучитьСтрокуBase64(); - Base64Строка(ДвДанные);  | 
|||
| 
    17
    
        zak555    
     15.07.11 
            ✎
    14:05 
 | 
         
        (16) жесть     
         | 
|||
| 
    18
    
        zak555    
     15.07.11 
            ✎
    14:06 
 | 
         
        только я не понял
  
        мне из sert.p12 доставать сертификат и контейнер ?  | 
|||
| 
    19
    
        GenV    
     15.07.11 
            ✎
    14:20 
 | 
         
        (18) Посмотри в типовых (например БП) обработку "ДокументооборотСКонтролирующимиОрганами". Может что подсмотришь похожее. Твой пример скорее всего оттуда. Там тоже есть ДвДанные = ... )     
         | 
|||
| 
    20
    
        GenV    
     15.07.11 
            ✎
    14:23 
 | 
         
        19+ этот метод из внешней компоненты.     
         | 
|||
| 
    21
    
        zak555    
     15.07.11 
            ✎
    14:30 
 | 
         
        (19) открыл
  
        изверги песали  | 
|||
| 
    22
    
        zak555    
     15.07.11 
            ✎
    14:36 
 | 
         
        Функция СоздатьОбъектДляРаботыСДвоичнымиДанными(ТихийРежим = Ложь) Экспорт
  
        Если КомпонентаЗагружена = Ложь Тогда // попытка загрузки компоненты завершилась неудачно Возврат Неопределено; ИначеЕсли КомпонентаЗагружена = Неопределено Тогда // компонента на загружалась Если НЕ ЗагрузитьКомпонентуОбменаСНалоговымиОрганами() Тогда Возврат Неопределено; КонецЕсли; КонецЕсли; Попытка ДвоичныеДанные = Новый("Addin.BinaryDataS"); ДвоичныеДанные.НеВыводитьСообщенияОбОшибках = Ложь; Возврат ДвоичныеДанные; Исключение Если НЕ ТихийРежим Тогда Сообщить("Не удалось создать объект для работы с двоичными данными:", СтатусСообщения.Важное); Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное); КонецЕсли; Возврат Неопределено; КонецПопытки; КонецФункции ДвДанные = СоздатьОбъектДляРаботыСДвоичнымиДанными();  | 
|||
| 
    23
    
        zak555    
     15.07.11 
            ✎
    14:46 
 | 
         
        ExtIntgr.dll
  
        эта фигня только для windows ?  | 
|||
| 
    24
    
        zak555    
     15.07.11 
            ✎
    15:20 
 | 
         
        {Форма.Форма.Форма(27)}: Ошибка при вызове метода контекста (ЗаписатьТекст)
  
        ОбъектЗапись.ЗаписатьТекст(ФайлСертификатаBase64); Несоответствие типов (параметр номер '1') ФайлСертификатаBase64 = Base64Значение(Куда + "sert.crt");  | 
|||
| 
    25
    
        zak555    
     15.07.11 
            ✎
    15:20 
 | 
         
        почему так ?     
         | 
|||
| 
    26
    
        GenV    
     15.07.11 
            ✎
    15:26 
 | 
         
        (24) У тебя строка сохраняется. Причем из двоичных данных которые формируются на основании файла (так понимаю имя файла - Куда +  "sert.crt").
  
        ДвДанные = Новый ДвоичныеДанные(Куда + "sert.crt"); ФайлСертификатаBase64 = Base64Строка(ДвДанные);  | 
|||
| 
    27
    
        zak555    
     15.07.11 
            ✎
    15:29 
 | 
||||
| 
    28
    
        zak555    
     15.07.11 
            ✎
    15:31 
 | 
         
        Глобальный контекст (Global context)
  
        Base64Строка (Base64String) Синтаксис: Base64Строка(<Значение>) Параметры: <Значение> (обязательный) Тип: ДвоичныеДанные. Двоичные данные, которые необходимо закодировать по алгоритму base64. Возвращаемое значение: Тип: Строка. Описание: Получает строку, закодированную по алгоритму base64. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.  | 
|||
| 
    29
    
        zak555    
     15.07.11 
            ✎
    15:31 
 | 
         
        (26) мне нужно получить строку ? или расшифровать файл сертификата ?     
         | 
|||
| 
    30
    
        GenV    
     15.07.11 
            ✎
    15:33 
 | 
         
        (29) Согласно примера у тебя формируется файл XMl в котором в виде строки (закодированной в Base64) сохраняется файл сертификата.     
         | 
|||
| 
    31
    
        zak555    
     15.07.11 
            ✎
    15:36 
 | 
         
        {Форма.Форма.Форма(40)}: Ошибка при вызове метода контекста (ЗаписатьТекст)
  
        ОбъектЗапись.ЗаписатьТекст(ФайлСертификатаBase64); по причине: Несоответствие типов (параметр номер '1') Сертификат = Куда + "sert.crt"; ЗакрытыйКлюч = Куда + "sert.key"; _ФайлЗашифрованногоКонтейнераBase64 = Новый ДвоичныеДанные(ЗакрытыйКлюч); _ФайлСертификатаBase64 = Новый ДвоичныеДанные(Сертификат); ФайлЗашифрованногоКонтейнераBase64 = Base64Значение(_ФайлЗашифрованногоКонтейнераBase64); ФайлСертификатаBase64 = Base64Значение(_ФайлСертификатаBase64);  | 
|||
| 
    32
    
        GenV    
     15.07.11 
            ✎
    15:41 
 | 
         
        (31) Прикалываешься? Base64Строка. Уже два раза пример написал ... Base64Значение возвращает ДвоичныеДанные из строки.     
         | 
|||
| 
    33
    
        zak555    
     15.07.11 
            ✎
    15:51 
 | 
         
        (32) т.е. мне надо получить строку из сертификата сначала ?!     
         | 
|||
| 
    34
    
        GenV    
     15.07.11 
            ✎
    15:58 
 | 
         
        (33) Сначала твой сертификат (файл) сохраняется как двоичные данные (в памяти). Потом он преобразуется из двоичных данных в строку Base64, пригодную для записи в XML.     
         | 
|||
| 
    35
    
        zak555    
     15.07.11 
            ✎
    16:00 
 | 
         
        > Сначала твой сертификат (файл) сохраняется как двоичные данные (в памяти)
  
        как ? не понял  | 
|||
| 
    36
    
        GenV    
     15.07.11 
            ✎
    16:14 
 | 
         
        (35)
  
        _ФайлСертификатаBase64 = Новый ДвоичныеДанные(Сертификат); теперь файл в памяти (ФайлСертификатаBase64) в виде двоичных данных. Ты его можешь преобразовать в строку, можешь сохранить в ХранилищеЗначения в базу.  | 
|||
| 
    37
    
        zak555    
     02.08.11 
            ✎
    13:14 
 | 
         
        стал ковырять в БП обработку ДокументооборотСКонтролирующимиОрганами
  
        так там просто по почте отправляется зашаифрованный файл  | 
|||
| 
    38
    
        zak555    
     02.08.11 
            ✎
    14:06 
 | 
         
        + как узнать, какой должен быть заголовок запроса ?     
         | 
|||
| 
    39
    
        zak555    
     02.08.11 
            ✎
    20:47 
 | 
         
        !вверх!     
         | 
|||
| 
    40
    
        zak555    
     02.08.11 
            ✎
    22:17 
 | 
         
        GenV приди     
         | 
|||
| 
    41
    
        GenV    
     03.08.11 
            ✎
    02:14 
 | 
         
        (40) Ради интереса поискал инфу по теме.
  
        1) Общая информация по HTTP в 1С: http://forum.aeroion.ru/viewtopic.php?p=2089#2089 Получение файлов соотв. методом "Получить" 2) Использование HTTPS соединения определяется последним параметром конструктора HTTPСоединение 3) По поводу использования сертификата проверить не могу - нет такого сайта. Не нашел подтверждений работоспособности, только: v8: HTTPS соединение (сертификаты) - порядок конвертации  | 
|||
| 
    42
    
        zak555    
     03.08.11 
            ✎
    06:47 
 | 
         
        ещё раз внимательно стал смотреть ДокументооборотСКонтролирующимиОрганами
  
        там передаётся всё не по https (!)  | 
|||
| 
    43
    
        zak555    
     03.08.11 
            ✎
    07:12 
 | 
         
        на ИТС даже нету     
         | 
|||
| 
    44
    
        GenV    
     03.08.11 
            ✎
    09:43 
 | 
         
        (41)+ можешь еще попробовать через WinHttpRequest:
  
        1С+HTTPS+SSL+Цифровой сертификат X.503 v3 http://msdn.microsoft.com/en-us/library/aa384106(v=VS.85).aspx  | 
|||
| 
    45
    
        zak555    
     03.08.11 
            ✎
    10:52 
 | 
         
        GenV идея в том, чтоб этот запрос можно получать не только на windows-машинах     
         | 
|||
| 
    46
    
        zak555    
     03.08.11 
            ✎
    10:53 
 | 
         
        + и использовать только платформу 1с     
         | 
|||
| 
    47
    
        zak555    
     03.08.11 
            ✎
    10:55 
 | 
         
        т.е. понятно, что можно будет запускать wget и на unix-платформах     
         | 
|||
| 
    48
    
        zak555    
     04.08.11 
            ✎
    13:15 
 | 
         
        что-то ошибка какая-то
  
        Ошибка работы с Интернет: Couldn't resolve host name  | 
|||
| 
    49
    
        zak555    
     04.08.11 
            ✎
    13:22 
 | 
         
        вернее такая :
  
        Ошибка работы с Интернет: Peer certificate cannot be authenticated with known CA certificates  | 
|||
| 
    50
    
        zak555    
     04.08.11 
            ✎
    13:31 
 | 
         
        кстати, какое имя заголовка писать в cacert.pem ?
  
        sert с пробелом и без не катит  | 
|||
| 
    51
    
        zak555    
     05.08.11 
            ✎
    06:07 
 | 
         
        ?     
         | 
|||
| 
    52
    
        zak555    
     13.08.11 
            ✎
    06:52 
 | 
         
        !     
         | 
|||
| 
    53
    
        Stilet    
     13.08.11 
            ✎
    11:08 
 | 
         
        Сертификат передать не получится. Сам эту тему изучал, задавал вопрос тех. поддержке 1С.
  
        Используй либо curl, либо на инфостарте есть платная внешняя компонента для передачи сертификата (1000 руб)  | 
|||
| 
    54
    
        zak555    
     17.08.11 
            ✎
    00:10 
 | 
         
        (53) других вариантов нет ?     
         | 
|||
| 
    55
    
        zak555    
     25.08.11 
            ✎
    08:43 
 | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |