13.12.2006 16:53:40CAPICOM Ответов: 13
Павел
У меня следующая проблема:
Мне необходимо отослать 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');

Пожалуйста , подскажите что в этом коде не правильно или чего не хватает???
 
Ответы:
14.12.2006 12:03:47Kirill Sobolev
Ну если у текущего пользователя в личных ровно 1 сертификат, тогда все правильно. А что собственно этот код должен делать?
14.12.2006 13:24:30Павел
Насколько я понимаю это и есть выбор сертификата, но я в этих воросах новичок и не уверен что сделал все правильно, тем более что получаю такой ответ:
«Для проверки подлинности клиента требуется сертификат»
14.12.2006 13:27:36Павел
Что касается индекса соответствующего данному сертификату он = 1
У меня программа КриптоПро 2.0 и в качестве источника носителя - диск А(3.5) т.е кллюч на дискете, но при выборе данной лицензии обращения к дискете не происходит
14.12.2006 13:39:46Kirill Sobolev
Если нужен выбор сертификата из хранилища то надо вызвать Store.Certificates.SelectCertificate. Ключ, который на дискете, нужен только если происходит операция его требующая, например формирование ЭЦП, а в этом коде ничего такого нет.
А кто присылает ответ «Для проверки подлинности клиента требуется сертификат»?
14.12.2006 13:54:12Павел
Ответ приходит с того сайта на который я посылаю запрос
Когда я залезаю на данный сайт из IE мне предлогают выбрать сертификат из списка, это равноценно тому что я делаю присваивая через индекс, после того как я выбираю нужный сертификат у меня идет обращение к дискете(если через IE) а в моей программе этого не происходит
14.12.2006 14:04:30Kirill Sobolev
Когда Вы залезаете на сайт, в дело вступает модуль TLS. К СAPICOM это никакого отношения не имеет.
14.12.2006 14:13:22Павел
Подскажите что почитать по этому вопросу?
14.12.2006 14:37:43Павел
Возможно я не коректно написал про то что я залезаю на сайт, речь идет о соединение по HTTPS протоколу, если это имеет значение
14.12.2006 14:38:55Kirill Sobolev
Да я понял.
Почитать нужно MSDN, например
http://support.microsoft.com/kb/168151
14.12.2006 15:01:47Павел
Это тот код который я подразумевал под использованием процедур WININET, правда я использую метод POST а не GET. И еще несколько параметров функции
HttpOpenRequest отличаются
Если я правильно понимаю эти функции необходимы для установления соединениия по HTTPS протоколу и для обмена сообщениями?
А выбор сертификатов осуществляется с помощью CAPICOM.
Поправьте меня если я не прав...
14.12.2006 15:32:49Kirill Sobolev
Да, можно и так - только если у Вас 1 сертификат, зачем его выбирать?
14.12.2006 15:32:49Kirill Sobolev
Да, можно и так - только если у Вас 1 сертификат, зачем его выбирать?
14.12.2006 16:06:40Павел
На саммом деле основной вопрос, почему у меня нет обращения к дискете, на которой и находится ключ?