|
|
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Всем привет, возникла проблема c сабжем. Предыстория тут https://www.sql.ru/forum/1309610-4/markirovka-lekarstvennyh-sredstv Delphi Rest Client оказываетеся доступен только с поздних версий, что вызывает сильную проблему, так как проект у меня в Delphi 2007 и там установлена куча компонентов начала 2000-х, которые под эту IDE то еле нашел в свое время, когда восстанавливал этот проект. А под новые версии их точно нет. Так что теперь возникла такая вот дилемма: 1. Оставаться на Delphi 2007 и: 1.1. Пробовать решить через стандартные Indy (обновил до 10.5.5) или 1.2. Скачать какой то сторонний Delphi Rest под эту версию Первое пробовал вчера целый день, решал кучу проблем, в конце концов вылазит окно как на скрине Покапавшись в этой теме (почему то окрывается только в кэше гугла), не могу побороть https://webcache.googleusercontent.com/search?q=cache:w2bwm1DGfHIJ:https://www.sql.ru/forum/1270559/indy-ssl-ne-ponimaet-ecdhe-ecdsa-x25519 &cd=2&hl=ru&ct=clnk&gl=ru https://webcache.googleusercontent.com/search?q=cache:5DqhlC3n15kJ:https://www.sql.ru/forum/1270559-2/indy-ssl-ne-ponimaet-ecdhe-ecdsa-x25519 &cd=1&hl=ru&ct=clnk&gl=ru Похоже нерешаемая проблема и даже самые последние перед смертью версии Indy не могут работать с последними версиями SSL? Со сторонним Rest Clientтоже не срослось. Нашел вот такой https://github.com/fabriciocolombo/delphi-rest-client-api Но как назло у него нет версии под D2007, только D7 или D2010 2. Полностью апгрейдиться до версий Delphi, где есть встроенный Delphi Rest Client. Правда придется не только кучу компонентов устанавливать но и как то решать вопрос с теми, которые уже не могут быть установлены, то есть править придется очень много Какой путь посоветуете выбрать? По уму бы № 2, но боюсь, что увязну в портации проекта и на саму маркировку тупо не хватит времени. Если 1.1, то похоже путь в никуда, стандартными indy это не решить? Остается небольшая надежда на 1.2 - может есть какая то возможность установить dpk для D7 или D2010 в D2007? У меня не получилось. Или еще какой-нибудь сторонний Delphi Rest Client, который можно поставить на Delphi 2007? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2019, 09:28 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
1. Indy вполне себе живой 2. Версия под D7 никак не отличается от версии под 2007. 3. Можно также попробовать ICS, там есть компоненты для REST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2019, 09:55 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, у сервера https://api.sb.mdlp.crpt.ru/ - GOST R 34.10-2012 512, сертификат выдан тестовым УЦ. Варианты: WinInet.dll WinHTTP.dll Сборка OpenSSL с ГОСТ-ом, которую получится использовать в Delphi 2007 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2019, 10:03 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010 Со сторонним Rest Clientтоже не срослось. Нашел вот такой https://github.com/fabriciocolombo/delphi-rest-client-api Но как назло у него нет версии под D2007, только D7 или D2010 в описании вижу: restclient.ConnectionType := hctWinINet; Должно помочь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2019, 10:05 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Ок, всем спасибо за подсказки, попробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2019, 10:16 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Продолжение марлезонского балета. Из клиентов остановился на synapse (с остальным - Indy, Delphi Rest Api и прочее - не срослось), вроде наладил работу с http, но с https возникла затычка Выдает внутреннюю ошибку сервера (500), в result получаю целиком body, которое отправляю в ЧЗ Как думаете, в чем может быть загвоздка? Код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 17:02 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Если приходит 500. Смотртте логи на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 19:06 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Как я их могу посмотреть, они ж на сервере ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 19:49 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010 Как я их могу посмотреть, они ж на сервере Да не приходит у тебя 500, успокойся, смотри на уровень ниже, от сокета... код и текст ошибку) ну или попробуй в IE открыть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 20:15 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010 Продолжение марлезонского балета. Из клиентов остановился на synapse (с остальным - Indy, Delphi Rest Api и прочее - не срослось), вроде наладил работу с http, но с https возникла затычка Выдает внутреннюю ошибку сервера (500), в result получаю целиком body, которое отправляю в ЧЗ Как думаете, в чем может быть загвоздка? Код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Используй: httpsend.Sock.LastError и httpsend.Sock.LastErrorDesc HTTP [500 : нет информации] Sock [11004 : Valid name, no data record of requested type] = вот что у тебя + // от WinHTTP: Не удается разрешить имя или адрес сервера // от WinInet: Ошибка: 12007 Не удалось определить адрес сервера, проверьте сетевое подключение.(Service Name Not Resolved) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 20:20 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010 Продолжение марлезонского балета. Из клиентов остановился на synapse (с остальным - Indy, Delphi Rest Api и прочее - не срослось), вроде наладил работу с http, но с https возникла затычка Выдает внутреннюю ошибку сервера (500), в result получаю целиком body, которое отправляю в ЧЗ Как думаете, в чем может быть загвоздка? Напомни мне еще раз, по https у ЧЗ - ГОСТ? Если Да - то почему игнорируешь сообщение выше про WinInet и остановился на synapse? Или можешь из synapse работать с ГОСТ-ом? Для "самопроверки" - https://cpca.cryptopro.ru/ synapse - Sock [10061 : Connection refused] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 20:48 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
sql2012, не игнорю, Delphi Rest Client API (DRCA) вообще не работает у меня, точнее выдает ошибку 400, даже с обычным http Как не пинал его с разными опциями (restclient.ConnectionType := hctWinINet, verifecert = и true, и false), не взлетает (см. скрин) По нему еще примеров нифига нет, а по демкам не разобраться. Значит synapse вообще получается не катит? Блин да что за засада то! Остается получается разбираться в DRCA либо с Indy мучаться? Indy 10.6 у меня тоже не работает даже с простым http, synapse единственный, кто хотя бы в http работает Может подскажете что с DRCA у меня не так? Так настроек то вообще хрен да маленько, непонятно даже как header добавить, не понимаю, почему не работает Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. TAuth мой класс по аналогии с его TPerson Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 21:52 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, 400 - Bad Request (Неправильный запрос). Сниффер в руки и смотри, что он отправляет, сверяй с тем, что тебе предоставили в другой ветке для примера. Indy...? Что использует для https, опять те же dll, что и synapse? WinInet\WinHTTP - через них путь для TLS с ГОСТ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 22:13 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
sql2012, спасибо за помощь! буду пытаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2019, 22:14 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Я через WinhttpRequest подключился к МДЛП, идет на ура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 02:23 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
V.Borzov, можете пример кода привести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 08:38 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
В самом крайнем случае можно сетевой обмен реализовать через DLL, в которую запихнуть либо http клиент из новых версий (основан на WinHTTP), либо вообще подключить curl. Но вообще WinInet в плане http запросов очень простой, буквально одна функция для простого get. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 09:46 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
А в совсем крайних случаях говорят помогает пустить шифрованный трафик через stunnel: https://www.cryptopro.ru/products/other/stunnel-msspi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 10:52 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010 V.Borzov, можете пример кода привести? Вот пример в фастскрипте (авторизация пройдена, токен уже получен): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Перед этим было получение токена: обращение по http (можно и в synapse даже это сделать), получение кода для подписание, потом само подписания, отправка кода и получение токена. Дальше идет подключение по https, приведённое в примере. Я тоже воткнулся в ошибку 500 в synapse и отложил пока это всё, заинтересовавшись Winhttp, которому и OpenSSL не потребовался. Для получения запросов рекомендую всё-таки обращаться не к WinHttp.ResponseText, ибо он взбрыкнёт с кодировкой рано или поздно, а использовать WinHTTP.ResponseStream. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 12:13 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Попробуйте в файрфокс поставить расширение RESTClient и отсылать запрос через него, заодно и полные ответы сервера увидите. Мне не так давно сильно помогло. После этого использовал indy для d7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 13:00 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
yooo Попробуйте в файрфокс поставить расширение RESTClient и отсылать запрос через него, заодно и полные ответы сервера увидите. Мне не так давно сильно помогло. После этого использовал indy для d7. и работать по http? а если https по гост? как-то странно, всё обходят стороной.. Или Я ошибаюсь и там нет никакого ГОСТ-а в TLS, на продуктивном сервере? p.s. // не имею никакого отношения к ЧЗ, просто глянул описания и на форумах - ссылки на API - а там https по ГОСТ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 14:08 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
V.Borzov Я тоже воткнулся в ошибку 500 в synapse и отложил пока это всё, заинтересовавшись Winhttp, которому и OpenSSL не потребовался. написан он так... когда со своими сервисами словил - выяснил, что никуда запрос и не уходил и сервис не давал 500 код... нужно на сокетную ошибку еще смотреть - пример приводил выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 14:16 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
sql2012 написан он так... когда со своими сервисами словил - выяснил, что никуда запрос и не уходил и сервис не давал 500 код... Было ещё наблюдение какой-то проблемы с "Authorization token ТОКЕН", но дальше не полез, забросил. То есть synapse там что-то пытался подменить своими данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 14:23 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
sql2012 Или можешь из synapse работать с ГОСТ-ом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 15:47 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Ghost Writer sql2012 Или можешь из synapse работать с ГОСТ-ом? если внутри dll будет вызов СКЗИ с ГОСТ - да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 17:21 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
V.Borzov, благодарю за помощь! WinHTTP тоже заработал у меня с простым http, но с https опять не взлетает ( Выдается вот такая ошибка и это как я понимаю вообще не ответ сервера, а какая внутренняя хрень WinHTTP (см. скрин) мой код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 17:25 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, какой IP у api.stage.mdlp.crpt.ru ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 17:39 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, арт2010, А в какой момент вылетает ошибка? После какой операции? Я подумал сначала, что дело в асинхронном выводе, и при нем надо сделать Send, а потом выполнять HTTP.WaitForResponse(10) (то есть 10 секунд ждем ответа). Если функция вернула false, то это как раз означает, что данные еще не готовы, функция еще выполняется, надо ждать далее. И далее либо снова запускаем WaitForResponse(сек) и ждем, пока true в ответ не получим, либо уходим, решив, что ждать бесполезно. Но для асинхронной работы надо, чтобы в Open второй вариант был = 1 (или true), у тебя же 0 стоит. Значит функция Send должна выполнить запрос и вернуть готовый результат. И вообще я так и не добрался до тестового стенда, меня не пускало, а техподдержка ответ если и дала той фирме, которая делала запрос на стенд (их IP фиксированный был указан в заявке), то очень поздно. Потому работаю с песочницей, там ограничений по IP никаких нет, к тому же там присутствуют другие участники, можно с ними данными общаться. Может это сам тестовый стенд мозги компостирует. И в тестовом стенде один будешь сидеть изолированно, сам себе создавать участников и от них создавать для себя же данных. Удобнее, когда они есть. Спросил знакомого поставщика, он тебе выделил SGTINы, приходуешь. Вообще обязательно зарегистрируйся в форуме ЧЗ, там сейчас активность резко возросла. Темы подключения тоже обсуждаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 17:54 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010 Всем привет, возникла проблема c сабжем. Предыстория тут https://www.sql.ru/forum/1309610-4/markirovka-lekarstvennyh-sredstv Delphi Rest Client оказываетеся доступен только с поздних версий, что вызывает сильную проблему, так как проект у меня в Delphi 2007 и там установлена куча компонентов начала 2000-х, которые под эту IDE то еле нашел в свое время, когда восстанавливал этот проект. А под новые версии их точно нет. Так что теперь возникла такая вот дилемма: 1. Оставаться на Delphi 2007 и: 1.1. Пробовать решить через стандартные Indy (обновил до 10.5.5) или 1.2. Скачать какой то сторонний Delphi Rest под эту версию Первое пробовал вчера целый день, решал кучу проблем, в конце концов вылазит окно как на скрине Покапавшись в этой теме (почему то окрывается только в кэше гугла), не могу побороть https://webcache.googleusercontent.com/search?q=cache:w2bwm1DGfHIJ:https://www.sql.ru/forum/1270559/indy-ssl-ne-ponimaet-ecdhe-ecdsa-x25519 &cd=2&hl=ru&ct=clnk&gl=ru https://webcache.googleusercontent.com/search?q=cache:5DqhlC3n15kJ:https://www.sql.ru/forum/1270559-2/indy-ssl-ne-ponimaet-ecdhe-ecdsa-x25519 &cd=1&hl=ru&ct=clnk&gl=ru Похоже нерешаемая проблема и даже самые последние перед смертью версии Indy не могут работать с последними версиями SSL? Со сторонним Rest Clientтоже не срослось. Нашел вот такой https://github.com/fabriciocolombo/delphi-rest-client-api Но как назло у него нет версии под D2007, только D7 или D2010 2. Полностью апгрейдиться до версий Delphi, где есть встроенный Delphi Rest Client. Правда придется не только кучу компонентов устанавливать но и как то решать вопрос с теми, которые уже не могут быть установлены, то есть править придется очень много Какой путь посоветуете выбрать? По уму бы № 2, но боюсь, что увязну в портации проекта и на саму маркировку тупо не хватит времени. Если 1.1, то похоже путь в никуда, стандартными indy это не решить? Остается небольшая надежда на 1.2 - может есть какая то возможность установить dpk для D7 или D2010 в D2007? У меня не получилось. Или еще какой-нибудь сторонний Delphi Rest Client, который можно поставить на Delphi 2007? Вы можете использовать компонент TScHttpWebRequest: https://www.devart.com/sbridge/docs/tschttpwebrequest.htm, который поддерживает как HTTP так и HTTPS протоколы, для работы с Rest серверами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 17:55 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
sql2012, 185.196.171.27 Но он, во-первых, не прописан ни в каких ДНС, поэтому либо напрямую IP указывать, либо в Hosts прописать, о чем они и пишут в своей краткой инструкции, и вообще ничего не ответит на твой IP, ибо надо послать сначала запрос в ЧЗ, чтобы тебя подключили к этому стенду, указав свой IP, то есть его надо зафиксировать сначала у себя, а потом недели через 2, может, ЧЗ и подключит. А до этого будет тупо молчать. Но ТС пишет, что получил токен (это делается по http-протоколу). А вот по Https -не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 18:00 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
V.Borzov sql2012, 185.196.171.27 Но он, во-первых, не прописан ни в каких ДНС, поэтому либо напрямую IP указывать, либо в Hosts прописать, о чем они и пишут в своей краткой инструкции, и вообще ничего не ответит на твой IP, ибо надо послать сначала запрос в ЧЗ, чтобы тебя подключили к этому стенду, указав свой IP, то есть его надо зафиксировать сначала у себя, а потом недели через 2, может, ЧЗ и подключит. А до этого будет тупо молчать. Но ТС пишет, что получил токен (это делается по http-протоколу). А вот по Https -не получается. уже понял, что там ... такое... не публичное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 18:02 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, вот еще по настройкам: 3.5. Установка защищенного соединения к API по TLS (https) Обратить внимание: Если Участник, к которому относится пользователь, Резидент, то после процедур аутентификации и авторизации все методы API должны вызываться с ипользованием HTTPS протокола. Для взаимодействия по https используется ГОСТ Р 34.10-2012 сертификат. Перед установкой соединения необходимо выполнить следующие настройки: 1) Общие настройки в операционной системе Windows (7, 10) добавить запись DisableClientExtendedMasterSecret (dword) в реестре HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL со значением 1 (т.к. Windows по-умолчанию блокирует подобные соединения) 2) Настройки для Продуктивного контура адрес API http://api.mdlp.crpt.ru https://api.mdlp.crpt.ru Обратите внимание: для взаимодействия по https используется ГОСТ сертификат от Крипто-Про. Сертификаты Головного удостоверяющего центра можно скачать по ссылкам http://api.mdlp.crpt.ru/static/minkomsvyaz.cer http://api.mdlp.crpt.ru/static/cryptopro.cer 3) Настройки для Тестового стенда API добавить в хранилище доверенных сертификатов тестовый корневой сертификат от КриптоПро. Ссылка для загрузки http://testca.cryptopro.ru/certsrv/certcarc.asp в файл hosts должна быть добавлена запись 185.196.171.27 api.stage.mdlp.crpt.ru 4) Точки доступа для тестового стенда Песочница: 32 http://api.sb.mdlp.crpt.ru https://api.sb.mdlp.crpt.ru добавить в хранилище доверенных сертификатов тестовый корневой сертификат от КриптоПро. Ссылка для загрузки http://testca.cryptopro.ru/certsrv/certcarc.asp это из файла "API протокол обмена интерфейсного уровня" с сайта ЧЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 18:08 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, И что вообще там в файле 'C:\doc.txt'? :) Может для начала попробовать что-то вроде documents/income? В send можно подать ему такой фильтр: '{"filter":{},"start_from":0,"count":100}' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 18:11 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, Ужас какой... А стандартные функции не подойдут? К тому же где вы устанавливаете HTTPS? Примерно так: WinHttpOpen WinHttpConnect + INTERNET_DEFAULT_HTTPS_PORT WinHttpOpenRequest + WINHTTP_FLAG_SECURE WinHttpSetOption + нужные флаги и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 18:33 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
ну или импортируйте tlb и получите WinHttp_TLB с норм методами, свойствами и вызовами... Microsoft WinHTTP Services, version 5.1, C:\Windows\system32\winhttp.dll, {662901FC-6951-4854-9EB2-D9A2570F2B2E} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 18:38 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
X-Cite, Что это за стандартные функции такие? WinHttpOpen? Или у меня Delphi XE устарел? Что OLE, что через TLB - без разницы, работать должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 18:43 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
V.Borzov, Winapi.WinHTTP Если нету, то самому описать функции отсюда https://docs.microsoft.com/en-us/windows/win32/api/winhttp/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 20:43 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
X-Cite, А, понял, спасибо. В XE этого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2019, 20:57 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
sql2012 если внутри dll будет вызов СКЗИ с ГОСТ - да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 08:44 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Ghost Writer sql2012 если внутри dll будет вызов СКЗИ с ГОСТ - да а стандартные это какие? в которых нет реализации ГОСТ-а? OpenSSL + ГОСТ (gostengy и gost_capi) - Использование КриптоПро CSP в OpenSSL: apache, nginx etc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 10:51 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за помощь, пока в прострации, https упорно не работает. Попробовал TScHttpWebRequest от Devart - также с http работает , с https - нет, вылазит the other side has sent a failure alert [40] (см. скрин), как я понимаю обрубается все еще на уровне handshake. Видимо потому что ГОСТа нет в списке его алгоритмов (см. скрин)? остальными настройками игрался - ставлил все что можно из свойств ignore в true - не помогает. Еще вопрос - вот я все протоколы сделал true (см. скрин) - так можно или надо какой-то один выбрать? Код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Что касается WinHTTP и настроек для ЧЗ 3) Настройки для Тестового стенда API добавить в хранилище доверенных сертификатов тестовый корневой сертификат от КриптоПро. Ссылка для загрузки http://testca.cryptopro.ru/certsrv/certcarc.asp в файл hosts должна быть добавлена запись 185.196.171.27 api.stage.mdlp.crpt.ru Настройки все были сделаны изначально как в инструкции. Если URL в WinHTTP меняешь с https на http к примеру http://api.stage.mdlp.crpt.ru/api/v1/documents/income - работает (хотя и выдает ошибку, н озапрос обрабатывается) иначе ошибка как вчера. Тут все же как я понимаю ошибка в настройках самого компонента, так как от сервера от ничего не успевает просто получить. То что советовали WinHttp_TLB и прочее - пока не пробовал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 11:19 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Еще хотел попробовать chromium, чтобы затестить, работает ли вообще https в тестовом контуре, но вот такая ошибка вылазит. Что делаю не так? Или он только для 64-разрядной винды предназначен? Ссылок на виндовую версию всего 2, по разрядности не подразделяются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 11:26 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, 1. КриптоПРО CSP - какая сборка? 2. В IE ГОСТ-TLS работает? 3. Что касается WinHTTP = ранее давал для самопроверки URL - https://cpca.cryptopro.ru - его IE открывает? Также и WinHTTP может запросить для проверки ГОСТ-а. У меня работает (через COM, как у тебя). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 11:33 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
sql2012, см. скрин TLS в IE вроде подключен, а как узнать насчет ГОСТа, я в этом вообще не шарю, если честно. При открытии https://cpca.cryptopro.ru в IE сначала ошибка сертификата, но если игнорить ее, то открывается Версия Crypro Pro CSP получается 5.0.11455 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 11:44 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, Значит работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 13:36 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
sql2012, а как chromium то поставить, не подскажете? Я вижу только эти ссылки для скачивания дистриба (скрин), с обоими виндовыми у меня вылазит ошибка как в предыдущих постах. Он только на 64 битке работает? Или что мне надо сделать чтобы он установился? Самому компилить код что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 13:51 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, installer или zip, zip использую. У меня 64х. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 14:50 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, Попробуйте зарегистрироваться в песочнице. В этом случае сможете сравнить мои результаты со своими. В тестовом модуле не вижу никакого смысла возиться. Всё, что надо, отлаживается в песочнице плюс не надо создавать себе контрагентов, они там все присутствуют. Отличается от рабочего модуля только тем, что это тестовый сервер. К тому, не будет ограничения по IP, можно из дома работать, если есть УКЭП и Крипто-про. Я работаю под УКЭП реальной аптеки, но вот с одним разработчиком обмениваемся данными через песочницу, так у него вижу УКЭП тестовый, значит можно и его зарегистрировать. Надо просто оформить заявку в ЧЗ. Зарегистрируйтесь на форуме ЧЗ, там Вам, скорее всего, быстро ответят, работает ли кто-нибудь с тестовым стендом API, или все в песочнице сидят, и какие там будут подводные камни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 15:24 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
X-Cite, sql2012, V.Borzov Огромное спасибо за помощь. Вроде бы https взлетел с IWinHttpRequest. По крайней мере стал приходит ответ от сервака (скрин). Но опять таки неясно почему так? Все права вроде бы есть, по крайней мере ЧЗ авторизовал на тестовом стенде и все права я себе назначил как в инструкции. V.Borzov сталкивались с таким? Как побороть? И еще вопрос по песочнице - как проверить, может нам уже дали доступ, просто попробовать авторизоваться? Весь алгоритм такой же как с тестовым стендом, другой IP не надо в hosts прописывать как я понимаю? Возможно мы уже авторизованы в песочнице, потому что когда запрашивал доступ к тестовому стенду, техподдержка ЧЗ сначала ответила что дали доступ к песочнице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 16:11 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010 X-Cite, sql2012, V.Borzov ЧЗ авторизовал на тестовом стенде и все права я себе назначил как в инструкции. V.Borzov сталкивались с таким? Как побороть? Я в тестовый стенд пока получал доступ, освоился в песочнице, а там права у юзера полные, поэтому с правами не заморачивался. Возможно, придется, когда надо будет создавать дополнительных пользователей. И еще вопрос по песочнице - как проверить, может нам уже дали доступ, просто попробовать авторизоваться? Ну да. Там еще есть кнопка "проверить статус регистрации" Весь алгоритм такой же как с тестовым стендом, другой IP не надо в hosts прописывать как я понимаю? Возможно мы уже авторизованы в песочнице, потому что когда запрашивал доступ к тестовому стенду, техподдержка ЧЗ сначала ответила что дали доступ к песочнице В песочницу мы входим с уже готовым УКЭП, ничего руками создавать не надо нам. Надо лишь создать адреса своей деятельности самостоятельно (адреса торговых точек), по списку доступных. Поставщики или другие аптечники, кто зарегистрировался там, уже все видны, и с ними можно взаимодействовать, как будто это рабочий контур. Далее Вам целесообразно перейти в форум ЧЗ, думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 16:25 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
V.Borzov, еще раз огромное спасибо, очень выручаете! Подскажите пожалуйста адрес форума ЧЗ - не могу найти И еще по Песочнице ответьте пожалуйста! Где там кнопка "проверить регистрацию", в упор не вижу такую! Директор наш уде давно зарегился в Песочнице и заходит туда по УКЭП со своего компа - то есть уже могу работать с песочницей, так ведт получается, мне отдельно там региться не надо ведь? Просто с его компа получается надо будет его сертификат перенести на мой, чтобы смог работать, так? Он мне дал Идентификатор вида 0eaafe69-cabb-40ee-b502-fcc2e3761490 - который как я понял он получил от ЧЗ Только не могу понять - это sys_id, user_id, client_id или code получается? В Песочнице в отличие от тестового стенда везде нужен token, вообще везде, даже для регистрации Смотрю в инструкции как его получить Запрос: POST api/v1/token HTTP/1.1 Host: api.sb.mdlp.crpt.ru Content-Type: application/json Cache-Control: no-cache { "code": "acf5c2c8-6d2c-41e5-ae75-6f98d3123d36" "password" : "password123" } Получение результата: { "token": "64193f26-8564-49c1-b1f4-4d84880ebaa7", "life_time": 30 } То есть нужен code и password То есть изначально как минимум code нам должен сообщить сам Честный знак при регистрации, так ведь получается? Иначе мы сами то никак не можем его сгенерить? Но вот пытаюсь этот запрос выполнить в Rest Client-е в браузере, в качестве code беру то, что дал диреткор. Но выдает ошибку { "error_description": "Ошибка при выполнении операции: поле code введено некорректно" } Что совсем запутался. Откуда брать то исходную инфу чтобы начать работать в песочнице? Что-то нужно получить от ЧЗ или нет? В тестовом как оказалось не нужно было, а тут похоже что как минимум code или sys_id нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 17:29 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010 Подскажите пожалуйста адрес форума ЧЗ - не могу найти http://честныйзнак.рф/forum И еще по Песочнице ответьте пожалуйста! Где там кнопка "проверить регистрацию", в упор не вижу такую! http://sb.mdlp.crpt.ru под большой желтой кнопкой "войти через УКЭП". Да и кнопку-то саму нажмите, может уже есть заход. Директор наш уде давно зарегился в Песочнице и заходит туда по УКЭП со своего компа - то есть уже могу работать с песочницей, так ведь получается, мне отдельно там региться не надо ведь? Просто с его компа получается надо будет его сертификат перенести на мой, чтобы смог работать, так? Да, под его учеткой, также крипто-про нужен. Для начала можно поставить, не покупая, там 3 месяца, кажется. Он мне дал Идентификатор вида 0eaafe69-cabb-40ee-b502-fcc2e3761490 - который как я понял он получил от ЧЗ Только не могу понять - это sys_id, user_id, client_id или code получается? В качестве USER_ID будете использовать либо ID сертификата, либо его отпечаток, в качестве CLIENT_ID и CLIENT_SECRET - идентификатор клиента и секретный код учетной системы, которую Вы сами создадите там в личном кабинете в настройках. Ими будете получать токен, которым будете работать. На форуме ЧЗ это всё бурно обсуждается сейчас. Вам срочно туда! В Песочнице в отличие от тестового стенда везде нужен token, вообще везде, даже для регистрации Смотрю в инструкции как его получить Запрос: POST api/v1/token HTTP/1.1 Host: api.sb.mdlp.crpt.ru Content-Type: application/json Cache-Control: no-cache { "code": "acf5c2c8-6d2c-41e5-ae75-6f98d3123d36" "password" : "password123" } Получение результата: { "token": "64193f26-8564-49c1-b1f4-4d84880ebaa7", "life_time": 30 } То есть нужен code и password То есть изначально как минимум code нам должен сообщить сам Честный знак при регистрации, так ведь получается? Иначе мы сами то никак не можем его сгенерить? Но вот пытаюсь этот запрос выполнить в Rest Client-е в браузере, в качестве code беру то, что дал диреткор. Но выдает ошибку { "error_description": "Ошибка при выполнении операции: поле code введено некорректно" } Нет, для резидентов рф пароль не используется. Используется цифровая подпись. Вам надо будет освоить подписание файлов. В двух словах: обращаетесь через auth, методом Post отправив туда свои client_id,client_secret,user_id, получаете в ответ code. далее этот code надо подписать своей цифровой подписью (открепленной) и послать (она зарегистрирована в ЧЗ), и ЧЗ, если всё верно, выдает этот token вида UUID, которым можно пользоваться полчаса, используя его во всех общениях с сервером. И будем дальше использовать уже Https, до этого всё было по http Что совсем запутался. Откуда брать то исходную инфу чтобы начать работать в песочнице? Что-то нужно получить от ЧЗ или нет? В тестовом как оказалось не нужно было, а тут похоже что как минимум code или sys_id нужно? Я попросил клиента (аптеку), чтобы она пообщалась с поставщиками. Один из поставщиков прислал мне штук 30 кодов, и понеслось. Далее либо между своими ООО, если имеются, кидаете туда-сюда данные, либо с кем-то из поставщиков, или кто там у вас, покупатели, либо скарифанитесь на форуме ЧЗ с кем-то и взаимодействуете. https://Честныйзнак.рф/business/projects/medicines/ - там раздел "документы для работы с МДЛП", всё подряд скачивать и читать от корки до корки. Удачи! Судя по всему, Вам еще много предстоит в изучении, так что начинайте делать это как можно быстрее! Времени мало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 18:16 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010 Всем спасибо за помощь, пока в прострации, https упорно не работает. Попробовал TScHttpWebRequest от Devart - также с http работает , с https - нет, вылазит the other side has sent a failure alert [40] (см. скрин), как я понимаю обрубается все еще на уровне handshake. Видимо потому что ГОСТа нет в списке его алгоритмов (см. скрин)? остальными настройками игрался - ставлил все что можно из свойств ignore в true - не помогает. Еще вопрос - вот я все протоколы сделал true (см. скрин) - так можно или надо какой-то один выбрать? Код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Что касается WinHTTP и настроек для ЧЗ 3) Настройки для Тестового стенда API добавить в хранилище доверенных сертификатов тестовый корневой сертификат от КриптоПро. Ссылка для загрузки http://testca.cryptopro.ru/certsrv/certcarc.asp в файл hosts должна быть добавлена запись 185.196.171.27 api.stage.mdlp.crpt.ru Настройки все были сделаны изначально как в инструкции. Если URL в WinHTTP меняешь с https на http к примеру http://api.stage.mdlp.crpt.ru/api/v1/documents/income - работает (хотя и выдает ошибку, н озапрос обрабатывается) иначе ошибка как вчера. Тут все же как я понимаю ошибка в настройках самого компонента, так как от сервера от ничего не успевает просто получить. То что советовали WinHttp_TLB и прочее - пока не пробовал Если сервер поддерживает только ГОСТ алгоритм, то вы не сможете подключиться к данному серверу, так как на данный момент SecureBridge не поддерживает данный алгоритм. В свойстве Protocols перечисляется список поддерживаемых клиентом прикладных протоколов. Сервер сам выбирает протокол который будет использовать, поэтому если в списке не будет протокола поддерживаемого сервером, вы не сможете работать с таким сервером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 18:20 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
V.Borzov, благодарствую, реально очень помогли! Да, надо было давно начинать все это дело, сам виноват. Все время ещё отвлекают текущими проблемами, приходится в перерывах все это выяснять. Ещё если честно, до после днего была надежда, что все это отложат как с онлайн кассами на год или более, но похоже все таки хотят запускать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2019, 18:29 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
Наконец удалось отправить тестовый док по https в песочнице. V.Borzov и кто работает с МДЛП подскажите пожалуйста дальше: 1. Как вы реализуете программно подписание дока сертификатом? Работаете напрямую с Crypto Pro или запускаете bat-ник как в примере ЧЗ? авторcsptest -sfsign -sign -in <УКАЗАТЬ ПОЛНЫЙ ПУТЬ К ФАЙЛУ>doc.txt -out <УКАЗАТЬ ПОЛНЫЙ ПУТЬ К ФАЙЛУ>signed_doc.txt -my "АО Фурацилин" -detached -base64 –add Какими инструментами это можно реализовать в Delphi (2007)? 2. Как делаете вот это авторПеревести тело документа в Base64 Для примера я естественно взял пример из инструкции как выглядит doc.xml в Base64 авторPGRvY3VtZW50cyB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB2ZXJzaW9uPSIxLjE5Ij48cmVnaXN0ZXJfZW5kX3BhY2tpbmcgYWN0aW9uX2lkPSIzMTEiPjxzdWJqZWN0X2lkPjAwMDAwMDAwMDAwNTE3PC9zdWJqZWN0X2lkPg== Но каков алгоритм перевода, где можно почитать? В доках ЧЗ не нашел объяснение, а на форуме меня пока не авторизовали (что само по себе капец, что там надо еще авторизоваться!). Хотя может и не капец. Когда внедряли онлайн-кассы на форуме штрих-м меня тоже так и не авторизовали, несмотря на неоднократные запросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2019, 17:09 |
|
||
|
Delphi Rest Client + SSL
|
|||
|---|---|---|---|
|
#18+
арт2010, Подписывание - для начала и csptest.exe подойдет. Дальше можно изучить CAPICOM, там тоже всё просто. Далее, если очень захочется, то можно обратиться напрямую к CryptoApi, найти к нему описание на паскале, например JwaWinCrypt.pas. По Base64: https://ru.wikipedia.org/wiki/Base64 в Delphi можно воспользоваться стандартным модулем EncdDecd (в XE он есть). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2019, 18:53 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2038796]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
149ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
111ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 529ms |

| 0 / 0 |
