Здравствуйте.
У нас развернут ЦР крипто про по адресу https://RA-SA/RA/RA.asp ( адрес внутренний ).
Он принимает запросы, только если сертификат клиента принадлежит пользователю ЦР.
Я пытаюсь сделать запрос на новый сертификат к новому закрытому ключу ( при этом у меня есть старый сертификат к старому закрытому ключу), для этого я:
1. Добавил ссылку на сервис https://RA-SA/RA/RA.asp
2. В коде устанавливаю авторизацию по сертификату ( и выбираю нужный сертификат )
Код:
var myBinding = new BasicHttpBinding();
myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
myBinding.Security.Transport.ClientCredentialType =
HttpClientCredentialType.Certificate;
EndpointAddress ea = new EndpointAddress("https://RA-SA/RA/RA.asp");
var client = new RaService.CertRequestSoapPortClient(myBinding, ea);
client.ClientCredentials.ClientCertificate.Certificate = validCertificate;
3. Пытаюсь сделать запрос
var enrollmentString = enrollment.CreateRequest();
/* enrollmentString = "MIICOTCCAegCAQAwIjEgMB4GA1UEAwwXVXNlcl8xMzAxNjAzNTA5MDA0NjMxMTMw
YzAcBgYqhQMCAhMwEgYHKoUDAgIjAQYHKoUDAgIeAQNDAARASXtR+Ar8ZXvcg3AW
3bFk+i3hpZtZv1Tl12g13ti1PZ4bwyGnYF6H5aHaSCgEUo+Akn9+RZw4Yy2rUEzw
eeO1lqCCAVgwGgYKKwYBBAGCNw0CAzEMFgo2LjEuNzYwMS4yMEoGCSsGAQQBgjcV
FDE9MDsCAQUMC3NhZGdiLW1hY3BjDBFzYWRnYi1tYWNwY1xzYWRnYgwWV2ViRGV2
LldlYlNlcnZlcjQwLmV4ZTBcBgkqhkiG9w0BCQ4xTzBNMBwGA1UdJQQVMBMGCCsG
AQUFBwMCBgcqhQMCAiIGMA4GA1UdDwEB/wQEAwIE8DAdBgNVHQ4EFgQUq8MqSzMJ
Qwc/mFn0iD+W7edeEr4wgY8GCisGAQQBgjcNAgIxgYAwfgIBAh52AEMAcgB5AHAA
dABvAC0AUAByAG8AIABHAE8AUwBUACAAUgAgADMANAAuADEAMAAtADIAMAAwADEA
IABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUwBlAHIAdgBpAGMAZQAgAFAA
cgBvAHYAaQBkAGUAcgMBADAIBgYqhQMCAgMDQQCxYu7yZbvSUVKEbioCLuUkN8DE
maAzcgF4ra8c+1CODpym4mF3bR1Ky3/z9OE6/KvSBoKCdSGi54B3v/pV9Qli" */
var x = client.SubmitRequest(enrollmentString , "");
4. Получаю FaultException: Встречено неверное значение тега ASN1.
Server StackTrace:
Server stack trace:
at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at CryptoLibrary.RaService.CertRequestSoapPort.SubmitRequest(SubmitRequestRequest1 request)
at CryptoLibrary.RaService.CertRequestSoapPortClient.CryptoLibrary.RaService.CertRequestSoapPort.SubmitRequest(SubmitRequestRequest1 request) in d:\work_projects\military_id\src\SA_Web_Server\CryptoLibrary\Service References\RaService\Reference.cs:line 2834
at CryptoLibrary.RaService.CertRequestSoapPortClient.SubmitRequest(String Request_p7, String UID) in d:\work_projects\military_id\src\SA_Web_Server\CryptoLibrary\Service References\RaService\Reference.cs:line 2841
at CryptoLibrary.CertificateEnrollment.CertificateEnroller.AutoEnrollCertificate(X509Certificate2 currentSaCertificate) in d:\work_projects\military_id\src\SA_Web_Server\CryptoLibrary\CertificateEnrollment\CertificateEnroller.cs:line 419
При этом строка запроса по идее правильная - я могу сохранить ее как файл .pb7 и на сервере ЦР в ручном режиме выдать сертификат по этому запросу.
Помогите пожалуйста понять в чем ошибка
Отредактировано пользователем 18 июня 2013 г. 16:48:33(UTC)
| Причина: Не указана