ЗащищенноеСоединениеOpenSSL(Ссылка на элемент справочника СертификатыКлючейЭлектроннойПодписиИШифрования

1. evgensn 21.05.24 11:00 Сейчас в теме
Пытаюсь установить SSL соединение
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows());
Соединение = Новый HTTPСоединение(АдресХоста, 443,,,,,ЗащищенноеСоединение, Ложь);


Вот так Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто) нужный сертификт не выбирается.
Сертификатом из файла неудобно.

Сертификат добавлен в справчник СертификатыКлючейЭлектроннойПодписиИШифрования.
Если я сделаю Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Выбирать), то подключается, но подключение необходимо делать без участия пользователя.
Как использовать сертификат добавленный в справочник СертификатыКлючейЭлектроннойПодписиИШифрования для SLL соединения?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. spacecraft 21.05.24 14:33 Сейчас в теме
(1) сохранять во временный файл чем не устраивает?
из типовой:
ИмяФайлаСертификата = ПолучитьИмяВременногоФайла(ТипСертификата);
		Настройки.ДанныеСертификата.Записать(ИмяФайлаСертификата);
		СертификатКлиента = Новый СертификатКлиентаФайл(ИмяФайлаСертификата, Настройки.ПарольСертификата);
		Попытка
			УдалитьФайлы(ИмяФайлаСертификата);
		Исключение
			Комментарий = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
			ЗаписьЖурналаРегистрации(Словарь.КорневоеСобытие(), УровеньЖурналаРегистрации.Ошибка, , , Комментарий);
		КонецПопытки;
Показать
4. evgensn 22.05.24 08:21 Сейчас в теме
+ Получается только вот так ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Выбирать)), но тут надо выбирать сертификат руками, это не подходит.

- Если делаю так
 Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто))

Ошибка работы с Интернет: Ошибка инициализации SSL-соединения

- Если так
&НаСервере
ДД =ЛичныйСертификат.ДанныеСертификата.Получить();
&НаКлиенте
ДД.Записать(ИмяФайлаСертификата);
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаФайл(ИмяФайлаСертификата));
То уже сервис отвечает - "No required SSL certificate was sent".

Проверил, что в файл сохраняется нужный сертификат.

Может как то можно сталать, что бы автоматом выбирался нужный сертификат, если я его вручную выбираю работает же.
5. spacecraft 22.05.24 09:11 Сейчас в теме
(4)
ДД.Записать(ИмяФайлаСертификата);

отрывки кода мало информативны.
Как получили ИмяФайлаСертификата?
см. СП:
СертификатКлиентаФайл (FileClientCertificate)
Свойства:
ИмяФайла (FileName)
Конструкторы:
На основании файла
Описание:
Объект клиентского сертификата OpenSSL (с приватным ключом), загружаемого из файла.
Формат файла определяется по расширению имени файла:
*.PFX; *.P12 - файл сертификата формата P12;
*.PEM - файл сертификата формата PEM.
по умолчанию - файл сертификата формата PEM.

Расширение файла важно!
6. evgensn 22.05.24 10:14 Сейчас в теме
Сертификат типа СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования.
Сертификат.ДанныеСертификата.Записать(ИмяФайлаСертификата); (сохраняется cer, как в другом формате сохранить?).

Сертификат установил из PFX файла экспортированного с компьютера где есть КриптоАрм от КриптоПро.
Контейнер в криптоПро проверял ссылка на сертификат есть.
Если из 1с сохранить сертификат (ОбщаяФорма.НастройкиЭлектроннойПодписиИШифрования) сохранится *.cer,

Ещё смущает, что могу же я вручную его выбирать, вот так СпособВыбораСертификатаWindows.Выбирать и все работает, как то указаты бы, что использовать сертификат без ручного выбирания.
7. spacecraft 22.05.24 10:25 Сейчас в теме
(6) повторю: Как получили ИмяФайлаСертификата?
Какое расширение в переменной ИмяФайлаСертификата?
Покажите скрин в отладчике содержимого ИмяФайлаСертификата.
8. evgensn 22.05.24 10:27 Сейчас в теме
ИмяФайлаСертификата = ПолучитьИмяВременногоФайла("cer");

ИмяФайлаСертификата = ПолучитьИмяВременногоФайла("pem") и так тоже попробовал, резултатат сервис ответил - "No required SSL certificate was sent".

Это из отладчика
ЗащищенноеСоединение ЗащищенноеСоединениеOpenSSL ЗащищенноеСоединениеOpenSSL
СертификатКлиента СертификатКлиентаФайл СертификатКлиентаФайл
ИмяФайла "C:/Users/ivsnov.1C/AppData/Local/Temp/77/v8_A5CA_1c.pem" Строка
СертификатыУдостоверяющихЦентров Неопределено
9. spacecraft 22.05.24 10:31 Сейчас в теме
(8) хмм. "Сертификат установил из PFX файла". Расширение должно быть "pfx". Не?
10. evgensn 22.05.24 10:35 Сейчас в теме
Там контейнер для крипто про устанавливается и cer устанавливается в личные сертификаты, автоматически ссылка на открытый ключ проставляется
11. spacecraft 22.05.24 10:38 Сейчас в теме
(10) в двоичных данных что?
ИмяФайлаСертификата = ПолучитьИмяВременногоФайла("pfx");
Пробовали?
12. evgensn 22.05.24 10:45 Сейчас в теме
(11) в двоичных данных cer, какое бы расширение я не указал.

Если я сделаю так ИмяФайлаСертификата = ПолучитьИмяВременногоФайла("pfx");, то сохраненный файл не откроется если просто в винде запустить, изменю расширение на cer в проводнике виндовс открывается.
Сервер при этом отвечает "No required SSL certificate was sent".
13. spacecraft 22.05.24 11:33 Сейчас в теме
(12) двоичные данные не поддерживаемые.
см. https://infostart.ru/1c/articles/1564337/
14. evgensn 23.05.24 07:01 Сейчас в теме
И openssl не помог

Если из .cer дулать пишет "Could not find certificate from cert.cer", т.е. файл не подходит.

Если из pfx попробовать получить, спрашивает пароль, после ввода выдает ошибку -
Could not find certificate from cert.pfx
50D70000:error:03000079:digital envelope routines:EVP_PBE_CipherInit_ex:unknown
pbe algorithm:crypto\evp\evp_pbe.c:116:TYPE=1.2.840.113549.1.12.1.80
2. evgensn 21.05.24 14:25 Сейчас в теме
Может можно как то из справочника СертификатыКлючейЭлектроннойПодписиИШифрования двоичные данные сертификата получить, что бы аот это Новый СертификатКриптографии(ДвоичныеДанные) использовать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот