Self-Hosted WCF Service and SSL
От: jitm  
Дата: 21.06.10 14:06
Оценка:
Привет,
Я настроил ssl с помощью httpcfg set ssl. Дальше пытаюсь в коде сконфигурировать ссл.
Код:

using System;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Security;

namespace SelfHost
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            string addressHttps = String.Format("https://{0}:8000/hello", Dns.GetHostEntry("").HostName);

            var wsHttpBinding = new WSHttpBinding();
            wsHttpBinding.Security.Mode = SecurityMode.Transport;
            wsHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
            var serviceHost = new ServiceHost(typeof (HelloWorldService),new Uri(addressHttps));
            Type endpoint = typeof (IHelloWorldService);
            serviceHost.AddServiceEndpoint(endpoint, wsHttpBinding, "MyService");
            
            serviceHost.Credentials.ServiceCertificate.SetCertificate(
                StoreLocation.LocalMachine,
                StoreName.My,
                X509FindType.FindBySubjectName, "myhostname");
            serviceHost.Credentials.ClientCertificate.Authentication.CertificateValidationMode =
                X509CertificateValidationMode.PeerOrChainTrust;
            var smb = new ServiceMetadataBehavior();
            //            smb.HttpGetEnabled = true;
            smb.HttpsGetEnabled = true;
//            smb.HttpsGetUrl = new Uri(addressHttps);
            smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;

            serviceHost.Description.Behaviors.Add(smb);
            try
            {
                serviceHost.Open();

                string address = serviceHost.Description.Endpoints[0].ListenUri.AbsoluteUri;
                Console.WriteLine("Listening @ {0}", address);
                Console.WriteLine("Press enter to close the service");
                Console.ReadLine();
                serviceHost.Close();
            }
            catch (CommunicationException ce)
            {
                Console.WriteLine("A commmunication error occurred: {0}", ce.Message);
                Console.WriteLine();
            }
            catch (Exception exc)
            {
                Console.WriteLine("An unforseen error occurred: {0}", exc.Message);
                Console.ReadLine();
            }
        }
    }

    [ServiceContract]
    public interface IHelloWorldService
    {
        [OperationContract]
        string SayHello(string name);
    }

    public class HelloWorldService : IHelloWorldService
    {
        #region IHelloWorldService Members

        public string SayHello(string name)
        {
            return string.Format("Hello, {0}", name);
        }

        #endregion
    }
}

При запкуске получаю такую ошибку:

A commmunication error occurred: HTTP could not register URL https://+:8000/hello/. Another application has already registered this URL with HTTP.SYS.


Запрос httpcfg.exe query ssl возвращает следующую инфу:

IP : 0.0.0.0:8000
Hash : 8e3d19c8778713e544fdd7 f5d8213d37a1757ca
Guid : {06a1ec10-73cc-4a57-828f-17dc7dd444d3}
CertStoreName : MY
CertCheckMode : 0
RevocationFreshnessTime : 0
UrlRetrievalTimeout : 0
SslCtlIdentifier :
SslCtlStoreName :
Flags : 0
----------------------------------------------------------------------------
IP : myip:8000
Hash : 8e3d19c8778713e544fdd7 f5d8213d37a1757ca
Guid : {50bf66e2-807e-4651-b7af-e25fc2a25cac}
CertStoreName : MY
CertCheckMode : 0
RevocationFreshnessTime : 0
UrlRetrievalTimeout : 0
SslCtlIdentifier :
SslCtlStoreName :
Flags : 0
----------------------------------------------------------------------------


кто нибуть сталкивался с подобной проблемой, и как её лечить ?
Спасибо.
Re: Self-Hosted WCF Service and SSL
От: Tom Россия http://www.RSDN.ru
Дата: 22.06.10 05:02
Оценка:
J>кто нибуть сталкивался с подобной проблемой, и как её лечить ?
J>Спасибо.

Попробовать остановить IIS? Вообще у нас тоже self hosted + iis, только настройка всего через конфиг
Народная мудрось
всем все никому ничего(с).
Re[2]: Self-Hosted WCF Service and SSL
От: jitm  
Дата: 22.06.10 07:47
Оценка:
Здравствуйте, Tom, Вы писали:

J>>кто нибуть сталкивался с подобной проблемой, и как её лечить ?

J>>Спасибо.

Tom>Попробовать остановить IIS? Вообще у нас тоже self hosted + iis, только настройка всего через конфиг

Нема IIS в том — то и фишка self hosted, что он запускаеться как консольное приложение и внутри уже создает хост для сервисов.
Re: Self-Hosted WCF Service and SSL
От: pr0ff  
Дата: 22.06.10 15:27
Оценка:
Здравствуйте, jitm, Вы писали:
J>кто нибуть сталкивался с подобной проблемой, и как её лечить ?
J>Спасибо.


А если явно указать хост, вместо Dns.GetHostEntry("").HostName? Похоже он пытается подняться на хосте " " (пробел).
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[2]: Self-Hosted WCF Service and SSL
От: jitm  
Дата: 22.06.10 19:59
Оценка:
Здравствуйте, pr0ff, Вы писали:

P>Здравствуйте, jitm, Вы писали:

J>>кто нибуть сталкивался с подобной проблемой, и как её лечить ?
J>>Спасибо.


P>А если явно указать хост, вместо Dns.GetHostEntry("").HostName? Похоже он пытается подняться на хосте " " (пробел).

Затвра с утра по-тестирую этот момент но я просматривал в дебаге что возвращает Dns.GetHostEntry("").HostName то было корректное имя хоста. Но для большей уверености завтра затещу и отпишу что и к чему, пока мысль о том что я намудрил что — то с настройкой драйвера http.sys. Потому как я его настраевал для использования https.
Re[3]: Self-Hosted WCF Service and SSL
От: pr0ff  
Дата: 22.06.10 20:37
Оценка:
Здравствуйте, jitm, Вы писали:

J>Затвра с утра по-тестирую этот момент но я просматривал в дебаге что возвращает Dns.GetHostEntry("").HostName то было корректное имя хоста. Но для большей уверености завтра затещу и отпишу что и к чему, пока мысль о том что я намудрил что — то с настройкой драйвера http.sys. Потому как я его настраевал для использования https.

Ну, по крайней мере, в тексте ошибки хост некорректный. Где-то он таким становится.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[4]: Self-Hosted WCF Service and SSL
От: jitm  
Дата: 23.06.10 08:25
Оценка:
Здравствуйте, pr0ff, Вы писали:

P>Здравствуйте, jitm, Вы писали:


J>>Затвра с утра по-тестирую этот момент но я просматривал в дебаге что возвращает Dns.GetHostEntry("").HostName то было корректное имя хоста. Но для большей уверености завтра затещу и отпишу что и к чему, пока мысль о том что я намудрил что — то с настройкой драйвера http.sys. Потому как я его настраевал для использования https.

P>Ну, по крайней мере, в тексте ошибки хост некорректный. Где-то он таким становится.
Установил адресс в https://localhost:8000/hello текст ошибки не поменялся
Re[5]: Self-Hosted WCF Service and SSL
От: pr0ff  
Дата: 23.06.10 09:02
Оценка:
Здравствуйте, jitm, Вы писали:

J>Установил адресс в https://localhost:8000/hello текст ошибки не поменялся


                try
                {

                    string address = serviceHost.Description.Endpoints[0].ListenUri.AbsoluteUri;
                    Console.WriteLine("Listening @ {0}", address);
                    serviceHost.Open();

А так что выдаст?
P.S. у меня этот же код без SetCertificate (т.к. нет такого сертификата) отлично пашет
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[6]: Self-Hosted WCF Service and SSL
От: jitm  
Дата: 23.06.10 10:05
Оценка:
Здравствуйте, pr0ff, Вы писали:

P>P.S. у меня этот же код без SetCertificate (т.к. нет такого сертификата) отлично пашет

Выдает все нормально (https://localhost:8000/hello/MyService) это лажа с драйвером ... сегодня по пробую решить и отпишу вышло или нет.
Re[7]: Self-Hosted WCF Service and SSL
От: Tom Россия http://www.RSDN.ru
Дата: 23.06.10 10:27
Оценка:
J>Выдает все нормально (https://localhost:8000/hello/MyService) это лажа с драйвером ... сегодня по пробую решить и отпишу вышло или нет.
Какая операционная система? IIS пробовал останавливать перед запуском своего приложения?
Народная мудрось
всем все никому ничего(с).
Re[8]: Self-Hosted WCF Service and SSL
От: jitm  
Дата: 29.06.10 09:11
Оценка:
Здравствуйте, Tom, Вы писали:

J>>Выдает все нормально (https://localhost:8000/hello/MyService) это лажа с драйвером ... сегодня по пробую решить и отпишу вышло или нет.

Tom>Какая операционная система? IIS пробовал останавливать перед запуском своего приложения?
Операционная сисета была XP S3, IIS не рестартовал по той причине что он у меня небыл проинсталирован, приложение запускалось как обычное консольное. Драйвер настраивал через утилиту командной строки ...
Re[9]: Self-Hosted WCF Service and SSL
От: Tom Россия http://www.RSDN.ru
Дата: 29.06.10 09:59
Оценка:
J>>>Выдает все нормально (https://localhost:8000/hello/MyService) это лажа с драйвером ... сегодня по пробую решить и отпишу вышло или нет.
Tom>>Какая операционная система? IIS пробовал останавливать перед запуском своего приложения?
J>Операционная сисета была XP S3, IIS не рестартовал по той причине что он у меня небыл проинсталирован, приложение запускалось как обычное консольное. Драйвер настраивал через утилиту командной строки ...

XP не умеет шарить порты между процессами. Если кто то занял 80 порт — то всё. Например это может быть скайп.
В итоге то с проблемой разобрались?
Народная мудрось
всем все никому ничего(с).
Re[10]: Self-Hosted WCF Service and SSL
От: jitm  
Дата: 30.06.10 11:42
Оценка:
Здравствуйте, Tom, Вы писали:

J>>>>Выдает все нормально (https://localhost:8000/hello/MyService) это лажа с драйвером ... сегодня по пробую решить и отпишу вышло или нет.

Tom>>>Какая операционная система? IIS пробовал останавливать перед запуском своего приложения?
J>>Операционная сисета была XP S3, IIS не рестартовал по той причине что он у меня небыл проинсталирован, приложение запускалось как обычное консольное. Драйвер настраивал через утилиту командной строки ...

Tom>XP не умеет шарить порты между процессами. Если кто то занял 80 порт — то всё. Например это может быть скайп.

Tom>В итоге то с проблемой разобрались?
Да с проблемой разобрался писать долго но вот ссылкав блог где я описал что делал и как, надеюсь в более мение полном обьеме.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.