2009-04-01 2 views
5



Создание WCF прокси от ненадежных SSL конечной

мне нужно генерировать WCF прокси для службы выставленному нашим клиентом. Служба закрыта довольно жестко, поэтому это сложно. Кроме того, я новичок в WCF, поэтому мне может не хватать чего-то очевидного ...

Клиент только открыл свой брандмауэр на нашем производственном сервере - так что я не могу сгенерировать прокси из Visual Studio on моя машина dev. Кроме того, сервис распространяется только через HTTPS. И это требует от нас аутентификации с использованием сертификата клиента ...

Я надеялся запустить svcutil в окне производства, чтобы сгенерировать файлы .cs, а затем скопировать файлы локально. Но svcutil отказывается запускаться, потому что клиент использует самозаверяющий сертификат. Это дает мне следующее сообщение об ошибке:

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. The remote certificate is invalid according to the validation procedure.

Я попытался добавить сертификат сервиса в качестве доверенного корневого сертификата, но это не работает. В оснастке MMC сертификатов я получаю: «У Windows недостаточно информации для проверки сертификата».

Есть ли способ обойти проверку безопасности, которую выполняет svcutil?

Я могу успешно перейти к WSDL из IE, когда я перешел на рабочий сервер. Мне просто нужно нажать «продолжить этот сайт (не рекомендуется)». Я также должен выбрать установленный клиентский сертификат, который отлично работает. Затем я могу загрузить файлы WSDL и XSD вручную через IE. Таким образом, другой альтернативой может быть создание прокси-сервера WCF из локальных копий WSDL и XSD вместо того, чтобы запускать svcutil в отношении прямой службы. Но я не знаю, как это сделать.

Я попытался разместить статические файлы WSDL и XSD на другом веб-узле, который мы размещаем, и изменить атрибуты xs: import schemaLocation = "..."/>, чтобы указать на новый сайт. Но когда я побежал SvcUtil против этого сайта, я получил кучу ошибок по поводу заявлений дублирующих типа - например .:

Error: There was a validation error on a schema generated during export: Source: Line: 1 Column: 1415 Validation Error: The complexType ' http://[domain-name]/Promotions/2009-02-17:InsertReferralPromo_Response ' has already been declared.


мне не хватает какой-то очевидный способ сделать это? Или мы просто требуем, чтобы клиент ослабил свою безопасность? :)

Спасибо за любую помощь вы можете дать мне ...
Ричарду

+0

Ваша попытка сохранить сертификат как надежный сертификат - это будет единственный способ, с помощью которого вы сможете правильно генерировать прокси. –

ответ

1

Вашей проблемы, кажется, не имеет ничего общего с безопасностью. Кажется, что проблема с загруженными WSDL и схемами.

Одно из предложений - разместить все файлы в каталоге на диске, а не на веб-сайте. При необходимости удалите атрибуты schemaLocation.

Однако, похоже, это не помогло бы. Вы можете попробовать проверить эти файлы с помощью XMLSpy.

0

Когда вы просматриваете WSDL, щелкните по сертификату, просмотрите сертификат и установите сертификат.

Затем попробуйте запустить svcutil снова.

Смежные вопросы