Я конечно понимаю все, хакерские атаки на ИС, в том числе и на Честный знак... Тут, все подробно расписано: https://olegon.ru/showthread.php?t=36795
Но, что-то уж очень странно себя ведут сервера честного знака, может я чего-то не понимаю, и можно все-таки как-то это обойти?
Давно(с самого начала, уже года два) рабочая обработка, для работы с API CRPT нужно получить токен...
Отправляю GET запрос, на который должен получить в ответ пару uuid и code, в структуре JSON, для дальнейшего подписания их ЭЦП, отправки подписанного обратно и получения токена для дальнейшей работы...
Но, в ответ получаю: "WinHttp.WinHttpRequest: Ошибка поддержки безопасных каналов"
Ладно, предположим, не работает...
Но, открываю тот-же УРЛ в браузере,
Вроде, вся нужная инфа в ответе есть... Это как раз эта "ключевая пара"... Но, это браузером... Почему GET запрос не отрабатывает, возвращает ошибку? Может что-то в параметрах запроса нужно добавить? Еще раз, раньше это все работало...
Я понимаю, в связи с объективными причинами не работало бы совсем, но, через браузер то работает..
Откуда отправляешь? это не какое-то старое ... которое с сертификатами не дружит?
Решил погуглить... так и есть
Как оказалось, далеко не все знают, что причина этих ошибок кроется в обновлении протокола шифрования на стороне сайта. Сейчас повсеместно начинает использоваться протокол TLS версии 1.2, поддержка которого в 1С полноценно начата с релиза 8.3.9
Поэтому для тех, кто использует встроенные средства 1С для работы с сайтом, достаточно обновить релиз 1С предприятия, и проблема решится сама собой.
Но часто мне попадаются обработки работы с сайтом, которые используют средства Windows: объекты класса "WinHTTP.WinHTTPRequest.5.1" или "MSXML2.ServerXMLHTTP.6.0" и т.п. В этом случае необходимо активировать поддержку протокола TLS 1.2 в самой Windows.
Для этого достаточно внести в реестр следующие записи, после чего перезагрузить Windows:
Небольшое замечание к двум последним параметрам. В указанном коде указано значение 00000800 - это значение активирует протокол TLS 1.2 по умолчанию. Если необходимо использовать TLS 1.1 то значение необходимо заменить на 00000200, а если оба протокола, то на 00000A00.
Олег, спасибо, теперь это место "проскакивает", но, возвращает ошибку 451...
Поискал, что это такое, и вообще офигел:
Цитата:
HTTP-код ответа 451 Unavailable For Legal Reasons указывает, что пользователь запросил ресурс, который недоступен по юридическим причинам, например веб-страница, заблокированная из-за судебных исков.
Опять-же, не понятно, почему через браузер работает в таком случае...
Кстати, с твоей базой ШК по API работает отлично и без этих добавок в реестр, и сейчас. Возможно по тому, что токен сразу "в готовом виде" в запрос передаем...
Вот здесь: WinHttp.WaitForResponse(RequestTimeout) возвращается "-1", как и должно быть, так, что запрос теперь отрабатывает нормально, а дальше, тут: WinHttp.status(), возвращает "451", соответственно, ответ пустой...