IIS - WCF 4.0 Вызов Java (не удалось установить безопасный канал для SSL / TLS) - PullRequest
0 голосов
/ 20 декабря 2011

У меня небольшая проблема с моей службой WCF, которая пытается связаться с веб-службой Java.

У меня есть ASP.Net MVC интерфейс, который общается со службой WCF через HTTP. Затем служба WCF взаимодействует с веб-службой JAVA по протоколу HTTPS, используя взаимную аутентификацию сертификатов. Проблема в настоящее время заключается в том, что я получаю следующую ошибку, когда служба WCF пытается вызвать серверную часть JAVA:

Could not establish secure channel for SSL/TLS

На стороне Java я использую JBOSS с шифрами SSL3 и TLS только для SSL. Ошибка на этом конце:

21:49:48,701 INFO  [STDOUT] http-0.0.0.0-8543-2, WRITE: TLSv1 Handshake, length = 1514
21:49:49,499 INFO  [STDOUT] http-0.0.0.0-8543-2, received EOFException: error
21:49:49,499 INFO  [STDOUT] http-0.0.0.0-8543-2, handling exception:   javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
21:49:49,507 INFO  [STDOUT] http-0.0.0.0-8543-2, SEND TLSv1 ALERT:  fatal, description = handshake_failure
21:49:49,507 INFO  [STDOUT] http-0.0.0.0-8543-2, WRITE: TLSv1 Alert, length = 2
21:49:49,507 INFO  [STDOUT] http-0.0.0.0-8543-2, called closeSocket()
21:49:49,508 INFO  [STDOUT] http-0.0.0.0-8543-2, called close()

Поскольку я использую взаимную аутентификацию сертификатов, моим первым портом захода был неверный сертификат. Итак, я открыл страницу службы wsdl (также требуется проверка подлинности сертификата), и все в порядке. Мои сертификаты в порядке и заслуживают доверия.

Затем я начал думать, что, возможно, сертификат не будет включен в сервисную службу. Поэтому я создал консольное приложение, которое вызывает сервис Java с тем же сертификатом (поиск по поведению конечной точки в файле конфигурации). И вот, это прекрасно работает, и данные ответа службы отображаются на экране.

Так что у меня возникает мысль, что в IIS есть что-то, что мешает открытию канала SSL, и здесь мне действительно нужно немного помочь.

Мой IIS - это версия 7.0, работающая на Windows Server 2008 R2. Служба работает на .Net 4. (Одна вещь, которую я должен отметить, это то, что мое приложение consle работало .Net v3.5, а не v4.)

Я немного побаловался настройками SCHANNEL, но на самом деле не знаю, какие настройки следует включить, а какие - отключить. В настоящее время у меня есть:

TLS 1.0/Server/Enabled = 1
SSL 3.0/Server/Enabled = 1
SSL 2.0/Server/Enabled = 1
PCT 1.0/Server/Enabled = 1

У меня также есть:

SSL 2.0/Client/DisabledByDefault = 0

У кого-нибудь есть идеи, с чего начать?

Заранее спасибо, Ник

[UPDATE]

Теперь я получаю следующую ошибку в журнале ошибок Windows:

A fatal error occurred when attempting to access the SSL client credential private key. 
The error code returned from the cryptographic module is 0x8009030d.
The internal error state is 10003.

... но я не уверен, что решить это. Похоже, сертификат выявляется нормально. он просто не может получить пароль.

1 Ответ

1 голос
/ 09 января 2012

[отвечено]

Оказывается, что привилегии в сертификате не были установлены для моей учетной записи IIS_IUSRS.

Когда я их настраивал, всеработал нормально.

...