| ||||
| ||||
У меня следующая проблема: Мне необходимо отослать XML запрос на определенный адрес, для этого я использую процедуры WININET, В ответ приходит сообщение «Для проверки подлинности клиента требуется сертификат». Для установления сертификата я использую следующий код: Signer := CreateOleObject('CAPICOM.Signer'); Store := CreateOleObject('CAPICOM.Store'); Store.open(CAPICOM_CURRENT_USER_STORE,'MY'); Certificates := Store.Certificates; sertificate:=CreateOleObject('CAPICOM.Certificate'); sertificate:=Certificates.item[1]; Signer.Certificate := sertificate; Signer.Options := CAPICOM_CERTIFICATE_INCLUDE_CHAIN_EXCEPT_ROOT; SignedData := CreateOleObject('CAPICOM.SignedData'); Пожалуйста , подскажите что в этом коде не правильно или чего не хватает??? | ||||
Ответы: | ||||
| ||||
Ну если у текущего пользователя в личных ровно 1 сертификат, тогда все правильно. А что собственно этот код должен делать? | ||||
| ||||
Насколько я понимаю это и есть выбор сертификата, но я в этих воросах новичок и не уверен что сделал все правильно, тем более что получаю такой ответ: «Для проверки подлинности клиента требуется сертификат» | ||||
| ||||
Что касается индекса соответствующего данному сертификату он = 1 У меня программа КриптоПро 2.0 и в качестве источника носителя - диск А(3.5) т.е кллюч на дискете, но при выборе данной лицензии обращения к дискете не происходит | ||||
| ||||
Если нужен выбор сертификата из хранилища то надо вызвать Store.Certificates.SelectCertificate. Ключ, который на дискете, нужен только если происходит операция его требующая, например формирование ЭЦП, а в этом коде ничего такого нет. А кто присылает ответ «Для проверки подлинности клиента требуется сертификат»? | ||||
| ||||
Ответ приходит с того сайта на который я посылаю запрос Когда я залезаю на данный сайт из IE мне предлогают выбрать сертификат из списка, это равноценно тому что я делаю присваивая через индекс, после того как я выбираю нужный сертификат у меня идет обращение к дискете(если через IE) а в моей программе этого не происходит | ||||
| ||||
Когда Вы залезаете на сайт, в дело вступает модуль TLS. К СAPICOM это никакого отношения не имеет. | ||||
| ||||
Подскажите что почитать по этому вопросу? | ||||
| ||||
Возможно я не коректно написал про то что я залезаю на сайт, речь идет о соединение по HTTPS протоколу, если это имеет значение | ||||
| ||||
Да я понял. Почитать нужно MSDN, например http://support.microsoft.com/kb/168151 | ||||
| ||||
Это тот код который я подразумевал под использованием процедур WININET, правда я использую метод POST а не GET. И еще несколько параметров функции HttpOpenRequest отличаются Если я правильно понимаю эти функции необходимы для установления соединениия по HTTPS протоколу и для обмена сообщениями? А выбор сертификатов осуществляется с помощью CAPICOM. Поправьте меня если я не прав... | ||||
| ||||
Да, можно и так - только если у Вас 1 сертификат, зачем его выбирать? | ||||
| ||||
Да, можно и так - только если у Вас 1 сертификат, зачем его выбирать? | ||||
| ||||
На саммом деле основной вопрос, почему у меня нет обращения к дискете, на которой и находится ключ? | ||||