是否有人知道,如果有的话,如果服务器启用了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