|   |   | 
| 
 | Чем заменить объект WinHttp.WinHttpRequest в случае сертификатов с одноименным названием? | ☑ | ||
|---|---|---|---|---|
| 0
    
        ILNIK19 27.02.23✎ 17:07 | 
        ВТБ в конце 2022г изменил методику выдачи сертификатов - теперь сертификаты выдают физлицу, а не организации.
 В итоге все новые сертификаты теперь имеют название в виде ФИО. Обращение в банк идет посредством xml запросов методом post через объект WinHttp.WinHttpRequest.5.1. У этого объекта есть метод SetClientCertificate, который устанавливает сертификат в запрос и этот метод умеет искать сертификат в хранилище windows только по названию. И получается, если у меня 50 юрлиц и куча сертификатов в том числе одноименных, то метод SetClientCertificate находит некорректный сертификат (первый попавшийся по имени) и банк выдает ошибку при запросе выписки. Кто-то с этим сталкивался? Есть ли альтернатива объекту WinHttpRequest? | |||
| 1
    
        Garykom гуру 27.02.23✎ 17:27 | 
        1. В 1С встроено https://infostart.ru/1c/articles/1564337/
 2. https://stackoverflow.com/questions/57919942/msxml2-serverxmlhttp-clientcertificate 3. stunnel-msspi https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=16815 по сути на разных локальных портах поднять разные "прокси" с разными сертификатам и обращаться к нужному | |||
| 2
    
        Garykom гуру 27.02.23✎ 17:30 | 
        полный путь указывать пробовал?
 https://learn.microsoft.com/ru-ru/windows/win32/winhttp/iwinhttprequest-setclientcertificate аля SetClientCertificate("CURRENT_USER\My\TestCert") | |||
| 3
    
        ILNIK19 27.02.23✎ 18:38 | 
        (2) все сертификаты лежат в одном месте в разделе личных     | |||
| 4
    
        ILNIK19 27.02.23✎ 18:46 | 
        (1) Спасибо за ответ.
 Про stunnel уже находил в интернете информацию, но это те еще танцы с бубном и при 50 сертификатах... Про встроенный hhtp сервис конечно интересно, но боюсь с втб не прокатит такой фокус "объединить файлы cert.pem и key.pem в один файл cert.p12" и потом пароль прикручивать через какую-то утилиту OpenSSL | |||
| 5
    
        Garykom гуру 27.02.23✎ 20:04 | 
        (4) с 1С там все проще через СертификатКлиентаWindows 
 https://master1c8.ru/integratsiya-i-obmen-dannmi/5265/ | |||
| 6
    
        Garykom гуру 27.02.23✎ 20:11 | 
        (0) Эээ можно вопрос.
 А зачем для одного ФИО (физика) на 50 разных юрлиц иметь 50 разных сертификатов? Когда достаточно одного сертификата для физика + доверки на юрлица | |||
| 7
    
        Garykom гуру 27.02.23✎ 20:13 | 
        (6)+ Идея изменения была как раз в этом, чтобы не делать для физиков-сотрудников отдельные сертификаты в каждую ЮЛ/ИП
 У него только один свой и все им подписывает Ты же понимаешь что перефразирую на обычную бумажную подпись что не надо одному физику иметь много разных подписей для каждой ЮЛ/ИП где он работает )) | |||
| 8
    
        big 28.02.23✎ 05:20 | 
        А нельзя ли переименовать сертификаты? Или же сделать для них (например для каждого юрлица) свои хранилища и уже искать только в этом нужном хранилище?     | |||
| 9
    
        ILNIK19 28.02.23✎ 09:20 | 
        (8) Сертификаты выпускает банк, мы с ним боремся уже третий месяц, чтобы они добавили в название сертификата хоть-какой уникальный номер, может быть серийник сертификата.
 Они в итоге добавили серийник куда-то в реквизит сертификата - при входе в личный кабинет на сайте под сертификатом этот серийиник отображается, но это не решает проблему, если искать сертификаты программно. Название осталось прежнее. Общаемся дальше с банком | |||
| 10
    
        ILNIK19 28.02.23✎ 09:29 | 
        (6) Проблема в том, что организации подключаются к банку последовательно, а не все сразу.
 Соответственно, чтобы повесить все организации на один сертификат физического лица - нужно периодически перевыпускать сертификат по всем остальным организациям разом. Хотя сертификаты выдаются на 5 лет и руководство с департаментом безопасности против такой схемы. Плюс эти сертификаты надо поставить на куче компов (нескольким казначеям, несколько терминалов для загрузки выписок и тд). Плюс у банка изменился алгоритм ДБО. Работают две версии - дбо1 и дбо2 - Немного разные структуры сообщений и разные адреса. И названия сертификатов на ДБО1 ранее всегда были с уникальным номером в названии, а для ДБО 2 присылают только с одним ФИО. И все это приходится подерживать и когда кончается срок старого сертификата - выдают новый сертификат без серийника и с одним ФИО в названии и он начинает дублироваться. | |||
| 11
    
        ILNIK19 28.02.23✎ 09:36 | 
        (5) с ЗащищенноеСоединениеOpenSSL не до конца понятно. Например, банк прислал сертификат и ключ. Сертификат устанавливается в хранилище винды.
 А каком пути к файлу pem тут идет речь? | |||
| 12
    
        Garykom гуру 28.02.23✎ 09:59 | 
        (10) Поставьте VirtualBox или Hyper-V, создайте под каждую пару банк-организация свою виртуалку и все внутри делайте     | |||
| 13
    
        Garykom гуру 28.02.23✎ 10:01 | 
        (12)+ это и дополнительная защита будет, ибо не все на одном компе и внутрь виртуалки разным троянам сложней попасть     | |||
| 14
    
        ILNIK19 28.02.23✎ 10:30 | 
        (12) предлагаете сделать 50 виртуалок? Админы на это не пойдут     | |||
| 15
    
        arsik гуру 28.02.23✎ 10:53 | 
        А нельзя переименовать сертификаты?     | |||
| 16
    
        Garykom гуру 28.02.23✎ 10:57 | 
        (14) это проблемы админов     | |||
| 17
    
        Garykom гуру 28.02.23✎ 10:58 | 
        (16)+ и да я не понимаю сложности сделать хоть 100 виртуалок     | |||
| 18
    
        arsik гуру 28.02.23✎ 10:58 | 
        (14) Еще вариант. Сделать 1 виртуалку с 50ю пользователями. У каждого будет свой сертификат лежать     | |||
| 19
    
        ILNIK19 28.02.23✎ 11:09 | 
        (18) как это все обслуживать?     | |||
| 20
    
        ILNIK19 28.02.23✎ 11:10 | 
        (15) я написал выше, что банк присылает сертификаты, они прописываются в хранилище винды при их установке как есть.
 Просим банк уже третий месяц вернуть коды в название сертификатов | |||
| 21
    
        arsik гуру 28.02.23✎ 12:43 | 
        (11) Чем плох этот метод? Там pem вроде необязателен. Openssl с любыми форматами работает.
 cert.crt - экспортируешь из хранилища сертификатов винды. key.pem - тебе банк передал. openssl pkcs12 -export –out cert.p12 -inkey key.pem -in cert.crt | |||
| 22
    
        Garykom гуру 28.02.23✎ 12:56 | 
        (19) А когда регистрировали 50 ЮЛ не думали об этом?     | |||
| 23
    
        Garykom гуру 28.02.23✎ 12:57 | 
        (22)+ или хочешь сказать что это какая то уполномочка, когда один бух на обслуживание кучу ЮЛ/ИП берет?     | |||
| 24
    
        ptiz 28.02.23✎ 13:18 | 
        (0) А нельзя эти сертификаты распихать руками/скриптом в разные ветки реестра?     | |||
| 25
    
        ILNIK19 28.02.23✎ 13:30 | 
        (22) где регистрировали? О чем ты спрашиваешь? Юрлица работают более 10 лет + постоянно добавляются новые. Все работало до конца 2023г - банк выдавал сертификаты на юрлицо и в названии также был id организации.
 Потом все поменялось, теперь все новые сертификаты банк выдает только на физлицо. Мы меняем сертификаты постепенно, когда у них закачивается срок или когда переводим новое юрлицо из другого банка в втб. На часть организаций право подписывать имеет один и тот же уполномоченный человек. В итоге сертификаты стали дублироваться | |||
| 26
    
        ILNIK19 28.02.23✎ 13:31 | 
        (24) А как это сделать? Сертификат ставится через крипто про, плюс WinHttpRequest ищет сертификат по названию и там пусть нельзя указывать путь     | |||
| 27
    
        Salimbek 28.02.23✎ 13:54 | 
        Сделать обработку, которая при запуске Регистрирует Сертификат из указанной папки (для ИП 0 - из папки "0", ИП 1 - из папки "1" и т.д.), потом обращается к этому самому сертификату, потом за собой удаляет этот сертификат, освобождая место для нового.     | |||
| 28
    
        Гость из Мариуполя гуру 28.02.23✎ 13:57 | 
        (9) если под "наименованием" ты подразумеваешь то, что хранится в ветке HKEY\LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\Users\S-1-5-23…\Keys,  (это на Windows 10)
 то там хранятся "синонимы", те, под которыми ты их САМ СОХРАНЯЕШЬ в Крипто Про тебе уже несколько раз сказали - переименуй. в конце то концов .. высунь руки из ж и ПОПРОБУЙ переименуй САМ, КАК ТЕБЕ УГОДНО. Сперва сохрани исходный куда-нибудь. Потом скопируй под другим именем (да тот же код к имени добавь). Потом исходный удали. Все. Несколько движений мышкой в Крипто Про. В чем проблема? Ты хоть попробуй для начала. Все в Крипто Про есть - и сохранить, и скопировать, и удалить. Лень мышкой пошевелить? Если же под наименованием ты подразумеваешь поле CN в сертификате, то тады ойц. Оно жестко задается при генерации ключа. | |||
| 29
    
        Гость из Мариуполя гуру 28.02.23✎ 14:07 | 
        (26) >> Сертификат ставится через крипто про
 и закрытый ключ у тебя в формате крипто про? и ветка реестра именно та, которую я указал? и вообще криптопровайдер (СКЗИ) у тебя Крипто Про? ну если так, то и пересохраняй под уникальными "синонимами". | |||
| 30
    
        Garykom гуру 28.02.23✎ 14:29 | 
        (28) Там не в этом проблема
 SetClientCertificate ищет по полю Subject сертификата, на его имя пофиг И вот у него несколько сертификатов с одинаковыми Subject ЗЫ Почему у WinHttpRequest в SetClientCertificate не реализован выбор сертификата по отпечатку (fingerprint, thumbprint) хороший вопрос | |||
| 31
    
        ILNIK19 28.02.23✎ 14:34 | 
        (28) да я бы так сделал, если бы знал об этом до твоего поста.
 В интернете нигде нет об этом инфы. Надо пробовать | |||
| 32
    
        ILNIK19 28.02.23✎ 14:34 | 
        1сники уже и сертификаты переделывают и кофе админам готовят...     | |||
| 33
    
        ILNIK19 28.02.23✎ 14:39 | 
        (30) поле Subject можно самому поменять через крипто про? это никак потом не повлияет на прием банком сертификата?     | |||
| 34
    
        ILNIK19 28.02.23✎ 14:45 | 
        Я посмотрел в Крипто Про, поле Subject - это единственное поле в свойствах сертификата, где содержится ФИО ответственного сотрудника и оно совпадает с названием сертификата
 Скорее всего это должно меняться на стороне банка | |||
| 35
    
        ILNIK19 28.02.23✎ 14:48 | 
        На форуме КриптоПро есть похожая ветка - 
 В связи с изменением формы собственности в корневом сертификате необходимо изменить значения CN и O в поле «Издатель» и «Субъект». Подскажите пожалуйста как это можно сделать? Используем КриптоПро УЦ 1.05.1114. КриптоПро CSP 3.6.6497 Windows Server 2008 R2 Enterprise SP1 Ответ - Необходимо генерировать новый сертификат со всеми вытекающими последствиями... | |||
| 36
    
        Garykom гуру 28.02.23✎ 14:48 | 
        (33) нельзя
 можно попробовать вынести сертификаты в файлы с разными именами но как к ним привязать ключи это вопрос | |||
| 37
    
        ILNIK19 28.02.23✎ 14:56 | 
        В старых сертификатах, выданных банком, в поле Subject присутствуют реквизиты CN, OU, O, S, C. Поле CN содержит ID организации и фамилию физлица, например, 123456789_IvanovII.
 Во всех новых сертификатах поле Subject присутствует только реквизит CN и там фИО по-русски, например, Иванов Иван Иванович и всё | |||
| 38
    
        ptiz 28.02.23✎ 15:19 | 
        (37) Думаю, проще всего выйдет переписать обращения, сделав их через прокладку в лице 1С.     | |||
| 39
    
        arsik гуру 28.02.23✎ 15:26 | 
        Не факт, Subject = CN
 Скорее всего CN используется если у сертификата не указано имя. Попробуй указать руками. Проверь. https://i.imgur.com/8F3nZkq.png | |||
| 40
    
        Гость из Мариуполя гуру 28.02.23✎ 16:01 | 
        (30) где ищет? в реестре? там (в реестре) в той ветке, которую я привел выше, нет поля субъект.
 собственно, вот ветка, там я САМ СОХРАНЯЛ сертификат, для различия ставил разные года. https://1drv.ms/u/s!Au_gEyxEzVvcjkSMM51KOBK6N1Qc?e=QZgy3b PS: ничто не мешает попробовать скопировать в крипто про один ключик под вторым именем и потренироваться. (31) - попробовал? | |||
| 41
    
        Гость из Мариуполя гуру 28.02.23✎ 16:03 | 
        ну а про CN я сразу сказал в (28)     | |||
| 42
    
        oleg_km 28.02.23✎ 18:05 | 
        Ключи же можно искать по серийнику или отпечатку     | |||
| 43
    
        ILNIK19 28.02.23✎ 18:44 | 
        (42) как это можно сделать методом SetClientCertificate?     | |||
| 44
    
        Garykom гуру 28.02.23✎ 19:34 | 
        SSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Выбирать), Новый CертификатыУдостоверяющихЦентровWindows());
 Соединение = Новый HTTPСоединение(АдресСервера, 443, Логин, Пасс, , 5, SSL); И не ипи уже мозги И да если ты не можешь код 1С переписать с WinHttpRequest на HTTPСоединение то наймите программиста 1С | |||
| 45
    
        ILNIK19 01.03.23✎ 09:04 | 
        (44) это не подходит     | |||
| 46
    
        Garykom гуру 01.03.23✎ 09:39 | 
        (45) ничего не понял но интересно     | |||
| 47
    
        big 01.03.23✎ 10:33 | 
        (30) Метод SetClientCertificate ищет сертификат по указанному пути хранилища сертификатов или же по-умолчанию в "My". Может есть возможность сделать множество локальный хранилищ (для каждого юрлица, например) и уже при поиске подставлять нужный путь - My01, My02 и т.д.     | |||
| 48
    
        arsik гуру 01.03.23✎ 10:36 | 
        (47) не, это ж виндовые хранилища ключей.     | |||
| 49
    
        Garykom гуру 01.03.23✎ 11:23 | 
        (47) ага подпапки создать ))     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |