26.09.2002 13:05:52Проблема с клиентским сертификатом в MSSOAP Ответов: 18
Роман
При использовании VB-клиента
Set Calc = CreateObject("MSSOAP.SoapClient")
Calc.mssoapinit "https://pas/MSSoapSamples/Calc/Service/Rpc/AspVbsVb/Calc.wsdl"
Calc.ConnectorProperty("SSLClientCertificateName") = "LOCAL_MACHINE\My\vb"
Answer = Calc.Add(10, 11)
MsgBox "10+11=" & Answer
, для осуществления защищенного доступа к WEB-службе, расположенной на IIS-сервере, с использованием аутентификации клиентов по сертификатам возникает ошибка: A security problem occurred – при первой попытке и The download of the specified resource has failed – при следующих. На клиентской машине установлен сертификат vb в Сертификаты (локальный компьютер)->Личные.
Так же установлен сертификат probecrt в Сертификаты(текущий пользователь)-Личные, используя который можно подключится к WEB-серверу, без всяких проблем, но при использовании в VB-клиенте:
Calc.ConnectorProperty("SSLClientCertificateName") = "probecrt"
Возникают те же ошибки!
Сертификаты сервера и клиента выданы verisign.
В чем может быть проблема?
Спасибо.
 
Ответы:
26.09.2002 17:22:12kure
1. Из броузера ресурс https://pas/MSSoapSamples/Calc/Service/Rpc/AspVbsVb/Calc.wsd доступен или нет (отображается?)/
2. Из брузера https://pas/MSSoapSamples/Calc/Service/Rpc/AspVbsVb/Calc.asp доступен и требует сертификат?
26.09.2002 19:04:01Роман
Да из браузера я соединяюсь легко как по https://pas/MSSoapSamples/Calc/Service/Rpc/AspVbsVb/calc.asp
так и по
https://pas/MSSoapSamples/Calc/Service/Rpc/AspVbsVb/Calc.wsdl
26.09.2002 19:09:59kure
И что отображает IE, когда открываете CALC.ASP

Это?
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
- <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
- <SOAP-ENV:Body>
- <SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Connector - Bad request to the server.</faultstring>
- <detail>
- <mserror:errorInfo xmlns:mserror="http://schemas.microsoft.com/soap-toolkit/faultdetail/error/">
<mserror:returnCode>-2146823238</mserror:returnCode>
- <mserror:callStack>
- <mserror:callElement>
<mserror:description><HRESULT>800a13ba</HRESULT></mserror:description>
</mserror:callElement>
</mserror:callStack>
</mserror:errorInfo>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
26.09.2002 19:24:58Роман
IE выводит:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
- <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
- <SOAP-ENV:Body>
- <SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Connector - Bad request to the server.</faultstring>
- <detail>
- <mserror:errorInfo xmlns:mserror="http://schemas.microsoft.com/soap-toolkit/faultdetail/error/">
<mserror:returnCode>-2146823238</mserror:returnCode>
- <mserror:callStack>
- <mserror:callElement>
<mserror:description><HRESULT>800a13ba</HRESULT></mserror:description>
</mserror:callElement>
</mserror:callStack>
</mserror:errorInfo>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
26.09.2002 19:58:15kure
Тогда обратите внимание.
1. Если вы на сервере на CALC.ASP поставили "require client certificate" не забудьтьте в calc.wsdl исправить вызов на https
<soap:address location=&rsquo;https://

Клиентский скрипт:

Option Explicit


Const WSDL_URL = "https://kure/mssoapsampleserver/Samples/Calc/Service/Rpc/AspVbsVb/Calc.wsdl"

Const My_Cert = "SSL"


WScript.echo "Connecting: " & WSDL_URL

Dim Calc
Set Calc = CreateObject("MSSOAP.SoapClient")

Calc.mssoapinit WSDL_URL

Calc.ConnectorProperty("SSLClientCertificateName") = My_Cert

Dim Answer

Answer = Calc.add(14,28)
WScript.Echo "14+28=" & Answer

Answer = Calc.subtract(73,31)
WScript.Echo "73-31=" & Answer

Answer = Calc.multiply(14,3)
WScript.Echo "14* 3=" & Answer

Answer = Calc.divide(126,3)
WScript.Echo "126/3=" & Answer

26.09.2002 20:22:28Роман
В wsdl-файле исправленно значение http:
<service name=&rsquo;Calc&rsquo; >
<port name=&rsquo;CalcSoapPort&rsquo; binding=&rsquo;wsdlns:CalcSoapBinding&rsquo; >
<soap:address location=&rsquo;https://pas/MSSoapSamples/Calc/Service/Rpc/AspVbsVb/Calc.asp&rsquo; />
</port>
</service>

Но все равно не работает!
p.s. Даже с Вашем клиентом
26.09.2002 20:34:55kure
Значит что то совсем простое.

Какие настройки SSL стоят на calc.asp (или на всю директорию?)
27.09.2002 10:46:28Роман
В наcтройках безопасности у IIS сервера стоит только:
1. Анонимный доступ
2. Требование безопасного канала
3. Требование сертификатов клиентов
Если что-то было не так с правами доступа, то и не работало бы и в случае с установкой IIS-опции Игнорирование (или принятие) сертификатов клиентов, а у меня с этими опциями все работает из моего VB-клиента.
Скорее проблема с сертификатами, может не так установлены? По рекомендации Microsoft, корневой сертификат CA установлен в Доверенный корневые центры->Локальный компьютер, а пользовательские: первый установлен в хранилище по умолчанию (который можно использовать в IE), а второй VB-программой ту да же где находится сертификат IIS-сервера, но ни тот (Calc.ConnectorProperty("SSLClientCertificateName") = "my_cert") ни другой (Calc.ConnectorProperty("SSLClientCertificateName") = "LOCAL_MACHINE\My\vb") ни дают доступа!
27.09.2002 11:08:45kure
У вас стоит "требовать клиентский сертификат".
Вы сказали, что через IE с CALC.ASP доступен. Если он доступен, то IE просит выбрать сертификат для аутентификации (при условии, что их больше одного). Этот сертификат должнен иметь дополнение "аутентификация на сервере". Если его нет, у вас двусторонней аутентификации не будет.
Уберите "требовать клиентский сертификат" и попробуйте с односторонней аутентификацией.
27.09.2002 12:27:19Роман
У меня 2 клиентских сертификата один в персональном хранилище, которое видит IE и берет из него сертификат web_form, другой (vb) в том же хранилище, что и сертификат IIS, соответственно IE его не видит. При установлении IIS опции - запрос сертификата, в IE все нормально работает (IE не запрашивает выбрать сертификат, т.к. второго он не видит), но VB-клиент выдает ошибку, при использовании любого из сертификатов и при
Calc.ConnectorProperty("SSLClientCertificateName") = "LOCAL_MACHINE\My\vb"
и при
Calc.ConnectorProperty("SSLClientCertificateName") = “web_form”
При установлении опции принимать или игнорировать сертификат, VB-клиент так же начинает работать!
27.09.2002 12:46:08kure
Тогда не знаю.
Это нужно видеть живьем.
27.09.2002 12:53:06Роман
А почему в разделе реестра нет ключей серификата, который использует IE, нде он хранится?
27.09.2002 12:53:24Роман
А почему в разделе реестра нет ключей и серификата, который использует IE, где он хранится?
27.09.2002 13:10:08Роман
Можно ди связаться с Вами по телефону?
27.09.2002 13:28:28Курепкин
Можно.
Лучше в понедельник
30.09.2002 10:43:36Роман
Давайте вернемся к проблеме с клиентскими сертификатами
25.11.2002 3:01:33Сергей
В одном из высказываний: &rsquo;Этот сертификат должнен иметь дополнение "аутентификация на сервере" &rsquo; - что это означает и как этого добиться (т.е. внести в сертификат указанное дополнение или назначить его при запросе на сертификат)?
25.11.2002 9:50:12kure
Если пользуетесь стандартным центром микрософт, то при формировании запроса выбререте "сертификат проверки подлинности клиента".
1.3.6.1.5.5.7.3.2

id-pkix OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) }