Реализуйте Клиент C#, который использует WebServices по SSL?

Я знаю, что на этот вопрос ответили, и я сначала использовал решение @ KahunaCoder, чтобы начать работу, так что спасибо!

Однако я обнаружил, что запуск моего gulpfile из Vagrant очень медленный! Поэтому я решил опубликовать это решение, если оно будет полезным.

Файл моего хоста:

192.168.5.10    www.develop.local

И я закончил тем, что использовал в своем Vagrantfile следующее:

server_ip = "192.168.5.10"    
config.vm.network :forwarded_port, guest: 80, host: 3000, auto_correct: true

(Apache в Vagrant работает на порту 80. Я не сделал ' переадресация порта 3001, поскольку он предназначен только для доступа к пользовательскому интерфейсу Browsersync)

Теперь я запускаю свои задачи Gulp из проекта и получаю следующее:

[Browsersync] Proxying: http://www.develop.local
[Browsersync] Access URLs:
 -------------------------------------
       Local: http://localhost:3000
    External: http://151.101.129.69:3000
 -------------------------------------
          UI: http://localhost:3001
 UI External: http://151.101.129.69:3001
 -------------------------------------

Теперь, когда я открываю http://localhost:3001 Я вижу центр управления Browsersync, и когда я открываю http://localhost:3000 в моих различных браузерах, я вижу свой сайт разработки и все подключенные браузеры, перечисленные в центре управления - поэтому они «синхронизируются» с Browsersync и могут быть централизованно управляемый и отраженный в действии.

Предоставленный внешний адрес позволяет мне подключаться к моему серверу разработки через другие устройства в той же сети.

14
задан Mat Nadrofsky 29 May 2009 в 17:47
поделиться

3 ответа

Ну, я понял это. Это заняло у меня гораздо больше времени, чем я хотел бы говорить, но я хотел поделиться своим решением, так как меня ОГРОМНАЯ домашняя мозоль увидеть стандарт. «О, я починил! Спасибо!» сообщения, которые заставляют всех думать о том, что на самом деле произошло.

Итак.

Основная проблема заключалась в том, что по умолчанию Visual Studio 2008 использует TLS для установления связи SSL, а веб-служба на основе Oracle / Java, к которой я пытался подключиться, использовала SSL3.

Когда вы используете «Добавить ссылку на службу ... . »в Visual Studio 2008 у вас нет способа указать, что протокол безопасности для диспетчера точки обслуживания должен быть SSL3.

Если только.

Вы берете статический документ WSDL и используйте wsdl.exe для создания прокси-класса .

wsdl /l:CS /protocol:SOAP /namespace:MyNamespace MyWebService.wsdl

Затем вы можете использовать компилятор C Sharp , чтобы превратить этот прокси-класс в библиотеку (.dll) и добавить ее в «Ссылки» ваших .Net проектов.

csc /t:library /r:System.Web.Services.dll /r:System.Xml.dll MyWebService.cs

На этом этапе вам также необходимо убедиться, что вы также включили System.Web.Services в свои «Ссылки».

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

// We're using SSL here and not TLS. Without this line, nothing workie.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

Хорошо, я был очень впечатлен собой, так как тестирование на моем блоке разработчика было отличным. Затем я развернулся на другом клиентском компьютере, и он больше не подключался из-за проблем с разрешениями / полномочиями. Для меня это пахло сертификатами (чем бы они ни пахли). Чтобы решить эту проблему, я использовал certmgr.exe , чтобы зарегистрировать сертификат для сайта в доверенном корне на локальном компьютере.

certmgr -add -c "c:\someDir\yourCert.cer" -s -r localMachine root

Это позволяет мне распространять сертификат на наши клиентские сайты и автоматически устанавливать его для пользователи. Я до сих пор не уверен, насколько "безопасны" разные версии окон будут касаться автоматической регистрации сертификатов, подобных этой, но пока она работает отлично.

Надеюсь, этот ответ поможет некоторым людям. Также спасибо blowdart за всю вашу помощь в этом вопросе и за предоставленную информацию.

31
ответ дан 1 December 2019 в 07:13
поделиться

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

Предполагая, что вы большая организация и она внутренняя, вы можете настроить свой собственный доверенный центр сертификации, это особенно просто с Active Directory . Из этого ЦС сервер, на котором размещается служба Oracle, может запросить сертификат, и вы можете использовать политику AD, чтобы доверять корневому сертификату внутреннего ЦС, поместив его в доверенный корень машинного хранилища. Это избавит от необходимости вручную доверять или принимать сертификат в веб-службе.

Если клиентские машины являются внешними, вам придется попросить людей, предоставляющих услугу, либо приобрести "

4
ответ дан 1 December 2019 в 07:13
поделиться

Мэт,

У меня тоже были такие проблемы, и у меня есть способ избежать использования certmgr.exe для добавления сертификатов в доверенный корень на удаленной машине.

X509Store store;
store = new X509Store("ROOT", StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(certificate);

'объект сертификата' может быть создан следующим образом:

X509Certificate2 certificate = new X509Certificate2("Give certificate location path here");
1
ответ дан 1 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: