• 21-01-2023, 14:25:37
    #1
    Merhaba
    .net ile Kestrel, httpsys kullarak bir web servis oluşturduk, fakat bu web servisin http olarak standart dışı bir portta çalışmasını ve aynı porttan hem http hemde https taleplerine cevap vermesini istiyoruz,

    Örnek:

    https://radyo8icecast.radyotvonline.net:4545/stats
    http://radyo8icecast.radyotvonline.net:4545/stats

    Windows üzerinde çalışan bir icecast sunucusu ile bunu yapabiliyoruz.
    icecast http portunu 4545, https portunu 4546 yapınca tam istediğimiz gibi sorunsuz çalıştı.

    Biz de bunu kestrel ve httpsys kullanarak nasıl yapabiliriz ?

    Yardımcı olabilecek arkadaş varsa çok sevinirim, kafayı yedirdi 3 gündür

    teşekkürler
  • 21-01-2023, 14:30:15
    #2
    HTTP ve HTTPS, aynı portta çalışabilir. Ancak, genellikle HTTPS, SSL / TLS güvenliği sağlamak için 443 numaralı portta çalışırken, HTTP 80 numaralı portta çalışır. Bu, standart olarak kullanılır ancak herhangi bir portta kullanılabilir. Önemli olan, hangi protokolün kullanılacağının belirlenmesidir.
  • 21-01-2023, 14:32:24
    #3
    djcenk adlı üyeden alıntı: mesajı görüntüle
    Merhaba
    .net ile Kestrel, httpsys kullarak bir web servis oluşturduk, fakat bu web servisin http olarak standart dışı bir portta çalışmasını ve aynı porttan hem http hemde https taleplerine cevap vermesini istiyoruz,

    Örnek:

    https://radyo8icecast.radyotvonline.net:4545/stats
    http://radyo8icecast.radyotvonline.net:4545/stats

    Windows üzerinde çalışan bir icecast sunucusu ile bunu yapabiliyoruz.
    icecast http portunu 4545, https portunu 4546 yapınca tam istediğimiz gibi sorunsuz çalıştı.

    Biz de bunu kestrel ve httpsys kullanarak nasıl yapabiliriz ?

    Yardımcı olabilecek arkadaş varsa çok sevinirim, kafayı yedirdi 3 gündür

    teşekkürler
    Merhaba olmaz, her portun görevi farklı olur. Örneğin 80 portu http global. Buna gidip FTP veya başka bir program çalıştırmazsınız.
    Dolasıyla http ve https birbirinden tamamen farklı 2 protokol portudur. HTTP için ayrı port, HTTPS için ayrı port çıkartmanız gerekiyor.
  • 21-01-2023, 14:36:27
    #4
    Microsoft.AspNetCore.Server.Kestrel ve Microsoft.AspNetCore.Server.HttpSys nuget paketlerini ekleyin hocam daha program.cs dosyasını açın ve aşağıdaki kodları Main methoduna ekleyin:
        var host = new WebHostBuilder()
            .UseKestrel(options =>
            {
                options.Listen(IPAddress.Any, 4545, listenOptions =>
                {
                    listenOptions.UseHttps("sertifikayolu.pfx", "sertifikasifre");
                });
            })
            .UseHttpSys(options =>
            {
                options.Authentication.Schemes = AuthenticationSchemes.None;
                options.Authentication.AllowAnonymous = true;
                options.UrlPrefixes.Add("http://*:4545/");
            })
            .UseStartup<Startup>()
            .Build();
    
        host.Run();
    bu kodlar ile Kestrel port 4545'i dinlemeye başlar aynı zamanda HTTPS için bir sertifika kullanır ve HttpSys kullanarak HTTP isteklerini de yönetir. "sertifikayolu.pfx" yerine sertifikanın yolunu, "sertifikasifre" yerine sertifika parolasını girin.
  • 21-01-2023, 21:31:44
    #5
    Süpersiniz, çok mantıklı gerçekten çok teşekkürler, deneyip sonucu yazacağım.


    mcanyarar adlı üyeden alıntı: mesajı görüntüle
    Microsoft.AspNetCore.Server.Kestrel ve Microsoft.AspNetCore.Server.HttpSys nuget paketlerini ekleyin hocam daha program.cs dosyasını açın ve aşağıdaki kodları Main methoduna ekleyin:
        var host = new WebHostBuilder()
            .UseKestrel(options =>
            {
                options.Listen(IPAddress.Any, 4545, listenOptions =>
                {
                    listenOptions.UseHttps("sertifikayolu.pfx", "sertifikasifre");
                });
            })
            .UseHttpSys(options =>
            {
                options.Authentication.Schemes = AuthenticationSchemes.None;
                options.Authentication.AllowAnonymous = true;
                options.UrlPrefixes.Add("http://*:4545/");
            })
            .UseStartup<Startup>()
            .Build();
    
        host.Run();
    bu kodlar ile Kestrel port 4545'i dinlemeye başlar aynı zamanda HTTPS için bir sertifika kullanır ve HttpSys kullanarak HTTP isteklerini de yönetir. "sertifikayolu.pfx" yerine sertifikanın yolunu, "sertifikasifre" yerine sertifika parolasını girin.
  • 21-01-2023, 22:32:41
    #6
    djcenk adlı üyeden alıntı: mesajı görüntüle
    Süpersiniz, çok mantıklı gerçekten çok teşekkürler, deneyip sonucu yazacağım.
    rica ederim işe yararsa bilgi verin, github'ıma ekleyeyim lazım olur ileride.
  • 23-01-2023, 13:25:44
    #7
    Merhaba
    maalesef çalışmadı şöyle bir hata aldık,
    SSL_ERROR_RX_RECORD_TOO_LONG
    neden olabilir sizce ?


    mcanyarar adlı üyeden alıntı: mesajı görüntüle
    rica ederim işe yararsa bilgi verin, github'ıma ekleyeyim lazım olur ileride.
  • 23-01-2023, 19:34:03
    #8
    djcenk adlı üyeden alıntı: mesajı görüntüle
    Merhaba
    maalesef çalışmadı şöyle bir hata aldık,
    SSL_ERROR_RX_RECORD_TOO_LONG
    neden olabilir sizce ?
    "SSL_ERROR_RX_RECORD_TOO_LONG" hatası, tarayıcının sunucudan alacağı veriyi okumak için beklediği bir SSL verisinin uzunluğunun geçerli olmadığını gösterir hocam. Bu hatanın nedeni genellikle sunucunun yanlış bir şekilde yapılandırılmış olmasıdır. Özellikle, sunucu tarafında SSL/TLS kullanılırken yapılandırılmış olan port numarasının tarayıcı tarafındaki port numarası ile eşleşmediğinde bu hata oluşabilir. Ayrıca, sunucu tarafında SSL/TLS sertifikasının yanlış yapılandırılmış veya süresi dolmuş olması gibi nedenler de bu hatayı oluşturabilir. Ucu açık bir hata yani.

    Sizin durumunuzda, eğer sertifika yolu ve şifresi doğru girilmişse, sertifika süresinin dolmamış olmasına ve sertifika sunucunun IP adresi ile eşleşiyor olmasına dikkat edin.

    Problem ssl'de, sertifikayolu ve şifresini de kontrol edin.
  • 23-01-2023, 22:51:57
    #9
    Merhaba
    http portunu 4545, ssl portunu 4546 yaparsak aynı sertifika ve şifre sorunsuz çalışıyor.
    Kestrel ve httpsys yi aynı port yaparsak bu hatayı alıyoruz.



    mcanyarar adlı üyeden alıntı: mesajı görüntüle
    "SSL_ERROR_RX_RECORD_TOO_LONG" hatası, tarayıcının sunucudan alacağı veriyi okumak için beklediği bir SSL verisinin uzunluğunun geçerli olmadığını gösterir hocam. Bu hatanın nedeni genellikle sunucunun yanlış bir şekilde yapılandırılmış olmasıdır. Özellikle, sunucu tarafında SSL/TLS kullanılırken yapılandırılmış olan port numarasının tarayıcı tarafındaki port numarası ile eşleşmediğinde bu hata oluşabilir. Ayrıca, sunucu tarafında SSL/TLS sertifikasının yanlış yapılandırılmış veya süresi dolmuş olması gibi nedenler de bu hatayı oluşturabilir. Ucu açık bir hata yani.

    Sizin durumunuzda, eğer sertifika yolu ve şifresi doğru girilmişse, sertifika süresinin dolmamış olmasına ve sertifika sunucunun IP adresi ile eşleşiyor olmasına dikkat edin.

    Problem ssl'de, sertifikayolu ve şifresini de kontrol edin.