2008-11-28 9 views

cevap

8

"It's easier to ask forgiveness than permission"

... birşeyler sunucusunda 443 numaralı bağlantı noktasında dinleme olup olmadığını görmek ve oradan gitmek için kontrol yap. Python:

>>> import urllib2 
>>> urllib2.urlopen('https://stackoverflow.com') 
Traceback (most recent call last): 
... 
urllib2.URLError: <urlopen error (10060, 'Operation timed out')> 
>>> html = urllib2.urlopen('http://stackoverflow.com').read() 
>>> len(html) 
146271 
>>> 

O stackoverflow.com SSL (2008) desteklemediğini göstermektedir.


Güncelleme:stackoverflow.com şimdi https destekler.

2

tercih sizin diline emin ama burada

public bool IsSecureConnection() 
{ 
    return HttpContext.Current.Request.IsSecureConnection || 
      HttpContext.Current.Request.Headers["HTTP_X_SSL_REQUEST"].Equals("1"); 
} 

bu başlık gelenektir dikkat ama anladınız Lütfen C# değil. Halkı sadece "https" sorgusuyla gördüm. Kirli görünmenin yanı sıra, makul bir şekilde kabul edilebilir, güvenlik modelinize bağlı.

Yoksa basitçe mevcut olup olmadığını mı soruyorsunuz?

Ben

Sen nasıl dans ettiğini protokol belirtmeniz gerekir
+0

Thx dove, sunucu tarafında olduğunu düşünüyorum, istemci tarafında bilmek istiyorum bir sunucu SSL bağlantılarını kabul edip edemediğini nasıl bilebilirim. (Eğer bir şekilde yapabilirsem). Bazı istisna işlemleriyle yapabilirim, ssl enable ile sunucuya bağlanmaya çalışırsam ve bir istisna alırsam, sunucu (muhtemelen) ssl etkin değildir. Ama bunu başka bir şekilde yapabilir miyim? –

0

- HTTP, IMAP, POP SSL versiyonları vardır, vs.

Eğer HTTPS ilgilendiğiniz var olabilir varsayarsak sadece stackoverflow.com bunu destekleyip desteklemediğini sormayın, SSL aracılığıyla stackoverflow.com okumak Örneğin

+0

Evet, bunun üzerinde de düşündüm, ama hizmet portu sunucunun yapılandırmasına bağlı olduğunu düşünüyorum, doğru muyum? Btw, https ve smtp ile çalışıyorum üzgünüm. Ve tercihim dilim C#, ancak bir tane varsa, yanıt olarak herhangi bir dili kabul ediyorum: P. İkinize de teşekkürler;) –

+0

Evet, bağlantı noktası yapılandırmaya bağlıdır - ancak HTTPS kullanarak rastgele siteler deniyorsanız, bu 443 numaralı bağlantı noktasındadır. Eğer – genehack

5

Bir programlama dili belirtmezsiniz, ancak bunu komut satırından yapabilirsiniz.

bash-3.2$ echo ^D | telnet www.google.com https 
Trying 66.102.11.104... 
Connected to www.l.google.com. 
Escape character is '^]'. 
Connection closed by foreign host. 
bash-3.2$ echo ^D | telnet www.stackoverflow.com https 
Trying 69.59.196.211... 
telnet: connect to address 69.59.196.211: Connection refused 
telnet: Unable to connect to remote host 

İşte var ... Google, StackOverflow vermiyor.

0

Bir sunucuda PHP veya ASP kodu çalıştırıyorsanız, kısa yanıt siz yapmazsınız. Ssl olmayan IP adresine bir soket bağlantısı kurmayı deneyebilir ve bir ssl sertifikası alıp alamayacağınızı ve Ortak Adını ve SubjectAlternativeNames'ini numaralandırıp numaralamayacağınızı görebilir, ancak genel olarak basit yanıt siz olmaz. Apache'nin sık (yanlış) bir yapılandırması, SSL sertifikası olmadan 443 numaralı bağlantı noktasında dinlemektir, böylece bağlantıyı yapabilmek, orada SSL olduğundan hiçbir garanti vermez. Bağlantının yapılamaması, uygulamanızın ağ ayrıcalıklarına sahip olmadığı anlamına gelebilir. SSL’yi kurmak bir acı olduğundan, SSL’niz olup olmadığını bilirsiniz ve bu bir yapılandırma kararıdır. Kaç çocuğunuz olduğunu merak etmek gibi - bilmelisiniz.

0

Bu hak HttpContext üzerinde olmak zorunda kalmadan algılama gerçekleştirmek için bir C# birim test geçerli:

[TestMethod] 
    public void DetectSslSupport() 
    { 
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.someinsecuresite.com"); 
     try 
     { 
      using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
      { 
       //some sites like stackoverflow will perform a service side redirect to the http site before the browser/request can throw an errror. 
       Assert.IsTrue(response.ResponseUri.Scheme == "https"); 
      } 
     } 
     catch (WebException)//"The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."} 
     { 
      Assert.IsTrue(false); 
     } 
    } 
İlgili konular