是否有人知道,如果有的話,如果服務器啓用了SSL,我該如何檢查應用代碼?如何檢查服務器是否啓用了SSL?
回答
"It's easier to ask forgiveness than permission"
例如,讀通過SSL stackoverflow.com
,不問stackoverflow.com
是否支持它,只是做到這一點。在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
>>>
這表明stackoverflow.com
不支持SSL(2008)。
更新:stackoverflow.com
現在支持HTTPS。
不知道自己的偏好的語言,但在這裏它是在C#
public bool IsSecureConnection()
{
return HttpContext.Current.Request.IsSecureConnection ||
HttpContext.Current.Request.Headers["HTTP_X_SSL_REQUEST"].Equals("1");
}
請注意,這頭是定製的,但我覺得你的想法。我見過人們只是簡單地查詢「https」的請求,除了看起來很髒,它可能是合理可接受的,取決於你的安全模型。
或者你問它是否簡單可用?
我
Thx鴿子,我認爲是在服務器端,我想知道在客戶端如何知道服務器是否接受SSL連接。 (如果我能以某種方式)。我想我可以做一些異常處理,如果我嘗試使用ssl enable連接到服務器並且出現異常,那麼服務器(可能)沒有啓用ssl。但我能以其他方式做到嗎? – 2008-11-28 12:41:12
你需要指定你正在使用何種協議 - 有HTTP,IMAP,POP的SSL版本等
假設它是HTTPS您有興趣,你可以檢查看看是否有在服務器偵聽端口443,並從那裏......
您不指定編程語言,但可以從命令行執行此操作。
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
你去......谷歌呢,StackOverflow沒有。
如果您在服務器上運行PHP或ASP代碼,那麼最簡單的答案就是您不需要。您可以嘗試建立與非ssl IP地址的套接字連接,並查看是否獲得ssl證書,並枚舉其Common Name和SubjectAlternativeNames,但通常情況下,簡單答案是不。 apache頻繁(錯誤)配置是在沒有SSL證書的情況下在端口443上偵聽,因此能夠進行連接並不能保證那裏存在SSL。無法建立連接可能意味着您的應用程序沒有網絡權限。因爲設置SSL是一種痛苦,所以您知道您是否擁有SSL,這是一個配置決定。這就像想知道你有多少孩子 - 你應該知道的。
這是一個C#單元測試,而無需在右邊的HttpContext進行檢測:
[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);
}
}
- 1. 如何檢查另一臺服務器是否啓動了JavaScript?
- 2. 如何使用Curator檢查Zookeeper服務器是否已啓動?
- 3. IIS 6:如何檢查服務器跟蹤是否已啓用?
- 4. 服務器上啓用了SSl v2
- 5. 檢查MySQL服務器是否在未登錄的情況下啓用ssl
- 6. 檢查是否使用php啓用了ssl
- 7. 如何檢查Web服務器是否啓動? (C#)
- 8. 如何檢查服務器是否需要重新啓動
- 9. 如何檢查solr服務器是否成功重啓?
- 10. 如何檢查服務器端是否建立了連接C
- 11. 如何檢查服務和服務器是否可用?
- 12. 如何知道服務器是否啓用了JSONP?
- 13. 如何檢查位置服務是否啓用在Appcelerator
- 14. Android - 如何檢查打印服務是否啓用?
- 15. 如何檢查定位服務是否啓用?
- 16. 如何檢查服務是否啓用launchd
- 17. 如何檢查服務器已啓動?
- 18. 如何在重啓後檢測Windows服務器是否可用?
- 19. Rails 3檢查Javascript是否啓用(服務器端)
- 20. 檢查服務器當前時區是否啓用DST
- 21. 使用批處理文件檢查服務器是否啓動?
- 22. 啓用了SSL的Silverlight 404服務
- 23. 啓用Tomcat服務器SSL是否有必要?
- 24. 如何檢查是否安裝了服務並啓動服務(如果安裝了其他服務,如果安裝並啓動Windows的廚師的服務)
- 25. 檢查是否啓用了BlackBerry gps
- 26. 檢測用戶是否在域上啓用了位置服務
- 27. 檢查HTTPS Web服務是否可用HttpWebRequest和X509 SSL證書
- 28. 如何檢查Active Directory服務器是否啓動並使用.Net運行?
- 29. 如何檢查JavaScript是否啓用節點JS服務器端代碼
- 30. 如何檢查服務是否停止
你能提供一些信息。關於你寫這個的環境? – 2008-11-28 12:42:54
你不能。服務器沒有ssl,網站做。 – Kuzgun 2013-12-03 15:27:18