Защищенное Соединение OpenSSL

Печать (Ctrl+P)

Защищенное Соединение OpenSSL по объектам используемых сертификатов имеет синтаксис:

Новый ЗащищенноеСоединениеOpenSSL(<СертификатКлиента>, <СертификатыУдостоверяющихЦентров>) 

 Сертификат клиента  OpenSSL не обязательно использовать. Но если используется  должен быть самоподписанным или проходить валидацию через сертификаты удостоверяющих центров. 

Пример:

ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
            Новый СертификатыУдостоверяющихЦентровWindows());

ssl2 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаWindows(),
            Новый СертификатыУдостоверяющихЦентровФайл("C:/certs/myca.pem"));

ssl3 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаФайл("C:/certs/user.p12", "password" ),
            Новый СертификатыУдостоверяющихЦентровФайл("C:/certs/myca.pem"));

ssl4 = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено );

ssl5 = Новый ЗащищенноеСоединениеOpenSSL(
            Новый СертификатКлиентаФайл("C:/certs/user.p13", "password" ),
            Новый СертификатыУдостоверяющихЦентров

Объект клиентского сертификата СертификатКлиентаФайл  (с приватным ключом), загружается из файла с форматом :
*.PFX; *.P12 – файл сертификата формата P12;
*.PEM – файл сертификата формата PEM.
по умолчанию – файл сертификата формата PEM.
Примечание. Использование https-соединения с клиентскими сертификатами недоступно на устройствах под управлением Windows 8.

Объект клиентского сертификата СертификатКлиентаWindows загружается из системного хранилища сертификатов операционной системы MS Windows.

Конструктор:

Новый СертификатыУдостоверяющихЦентровФайл(<ИмяФайла>, <Пароль>) 

 Создает объект сертификатов удостоверяющих центров OpenSSL, загружаемых из указанного файла, а конструктор:

Новый СертификатыУдостоверяющихЦентровWindows

создает объект сертификатов удостоверяющих центров OpenSSL, загружаемых из системного хранилища сертификатов операционной системы MS Windows.

Защищенное HTTP Соединение

Пример программного кода отправки данных для обработки  через защищенное HTTP Соединение.

Функция ПолучитьСтатусЗаказовНаHTTPСервер(Токен) Экспорт
	
	Сервер =  "localhost";
	
	АдресРесурса = "WebBuh/hs/MyServis";
	
	
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	               |	_Заказ.Номер КАК Номер
	               |ИЗ
	               |	Документ._Заказ КАК _Заказ";
	 	 	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	МассивЗаказов = Новый Массив;
	
	Пока Выборка.Следующий() Цикл
		МассивЗаказов.Добавить(Выборка.Номер);
	КонецЦикла;
	
	
	СтруктураЗапроса = Новый Структура;
	СтруктураЗапроса.Вставить("token",Токен);
	СтруктураЗапроса.Вставить("ids",МассивЗаказов);
	
	
	ЗаписьJSON = Новый ЗаписьJSON;  		
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, СтруктураЗапроса,);
	СтрокаДляТела = ЗаписьJSON.Закрыть();
	
	ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
	Новый СертификатКлиентаWindows(),
	Новый СертификатыУдостоверяющихЦентровWindows());
	HTTP = Новый HTTPСоединение(Сервер,80,,,,100,ssl1);
	
	ЗаголовокЗапросаHTTP = Новый Соответствие(); 
	ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json;charset=utf-8"); 
	ЗапросHTTP = Новый HTTPЗапрос(АдресРесурса, ЗаголовокЗапросаHTTP); 
	ЗапросHTTP.УстановитьТелоИзСтроки(СтрокаДляТела, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
	Попытка
		ОтветHTTP = HTTP.ОтправитьДляОбработки(ЗапросHTTP);
		Если ОтветHTTP.КодСостояния >= 400   Тогда
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось отправить запрос, ошибка "+Строка(ОтветHTTP.КодСостояния)+ОтветHTTP.ПолучитьТелоКакСтроку());
			Возврат Неопределено
	
		Иначе
			ЧтениеJSON = Новый ЧтениеJSON;
			ЧтениеJSON.УстановитьСтроку(ОтветHTTP.ПолучитьТелоКакСтроку()	);
			Данные  = ПрочитатьJSON(ЧтениеJSON);
			Возврат Данные;
						
		КонецЕсли;
			
	Исключение
		Сообщить("Не удалось выполнить запрос"+ОписаниеОшибки());
		Возврат Неопределено
	КонецПопытки;
		
КонецФункции

Пример обработки HTTP запроса клиента на стороне сервера

Функция ОбработчикHTTPзапроса(Запрос)
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(Запрос.ПолучитьТелоКакСтроку("UTF-8"));
	СтруктураДанные = ПрочитатьJSON(ЧтениеJSON);
	
	// Проверка Токен
	
	Отказ = ПроверитьТокен(СтруктураДанные.token); 
	
	Если Отказ Тогда
		Возврат  Новый HTTPСервисОтвет(409);
	КонецЕсли;
	
	 // Выпольнение запроса 
	 
	Запрос = Новый Запрос;
	Запрос.Текст ="ВЫБРАТЬ
	              |	_СтатусыЗаказовСрезПоследних.Статус КАК Статус,
	              |	_СтатусыЗаказовСрезПоследних.Период КАК Период,
	              |	_СтатусыЗаказовСрезПоследних.Заказ.Номер КАК Номер
	              |ИЗ
	              |	РегистрСведений._СтатусыЗаказов.СрезПоследних КАК _СтатусыЗаказовСрезПоследних
	              |ГДЕ
	              |	_СтатусыЗаказовСрезПоследних.Заказ.Номер = &Номер"; 
	
	Запрос.УстановитьПараметр("Номер", СтруктураДанные.ids);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Выборка = РезультатЗапроса.Выбрать();
	Массив =Новый Массив;
	
	Пока Выборка.Следующий() Цикл
	СтруктураДанные= Новый Структура("id,date,status",Выборка.Номер,Формат(Выборка.Период, "ДФ=dd.MM.yyyy"),Строка(Выборка.Статус));
	Массив.Добавить(СтруктураДанные);	
    КонецЦикла;

	СтруктураОтвета=Новый Структура("ids",Массив);
	
	ЗаписьJSON = Новый ЗаписьJSON;  		
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, структураОтвета);	
	СтрокаДляТела = ЗаписьJSON.Закрыть();
	HTTPОтвет = Новый HTTPСервисОтвет(200);
	HTTPОтвет.УстановитьТелоИзСтроки(СтрокаДляТела);
	HTTPОтвет.Заголовки["Content-Type"] = "application/json"; 
	Возврат HTTPОтвет;

КонецФункции

Previous Article
Next Article

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.