|
Чем заменить объект 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) ага подпапки создать ))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |