我有一个web服务可能绑定到ssl或纯http。 Java客户端配置为了解服务器主机和端口。当客户端连接时,我构建了服务器端点,如http://host:port/service。客户端不知道服务器是否使用ssl - 服务器始终绑定到单个端口,以使其安全或不安全。现在,问题是如何让客户端在不引入其他参数的情况下发现这一点?我可以质疑纯HTTP请求,然后回退到ssl(或反过来)在某个异常?或者我必须明确地为客户端引入新的连接参数?如何正常检测SSL
4
A
回答
3
在服务器端,您可以使用像Grizzly's port unification实现的机制。这可以用于在同一端口上提供HTTP和HTTPS。这取决于这样一个事实,即在这两种情况下,客户端都会首先进行对话并发送HTTP请求或SSL/TLS客户端Hello消息。这在服务器端非常方便(尽管我不确定推荐在同一个端口上运行两个协议)。
但从客户的角度(这是你问什么),那的后果是:
- 事实上,客户端先发言意味着它将总是首先尝试。如果您尝试将SSL/TLS转换为普通的HTTP服务,反之亦然,那么预计会出现某种异常。
- 如果服务器使用端口统一,那么您将无法可靠地发现问题。
抛开端口统一(毕竟这是一种罕见的情况),您可以尝试缓存过去尝试的结果。
更为重要的是,从安全角度考虑,不知道应该使用哪种协议,引入了一个漏洞:系统将开放到降级攻击(以类似的方式为blindly relying on automatic redirects会)。如果您的用户代理支持HSTS,那么值得研究一下(尽管它需要用户代理记住哪些站点将与HTTPS一起使用)。
无论哪种方式,如果您关心安全性,您必须必须配置客户端知道何时使用https://
。
相关问题
- 1. 正常检测到用户无法支持来自ASP.net的SHA256 SSL连接
- 2. 检测是否支持SSL
- 3. ssl无法正常工作
- 4. 如何检测Linux上扭曲的非正常断开连接?
- 5. 如何在python中检测http和https服务是否正常?
- 6. 常规连接正常,但SSL问题
- 7. 碰撞检测无法正常工作
- 8. touchesMoved检测不能正常工作
- 9. pygame碰撞检测工作不正常
- 10. 正常块后检测到堆损坏
- 11. 如何检测二维数组中的异常值检测?
- 12. 检测异常
- 13. 检测异常 - 如果
- 14. XCode:异常。如何检测原因?
- 15. 如何使用Selenium检测页面上的SSL是否损坏
- 16. 如何检测控件正在移动?
- 17. 如何检测read.csv的正确编码?
- 18. 如何检测在正则表达式
- 19. JavaScript如何检测正则表达式?
- 20. 如何纠正检测到的椭圆
- 21. 如何让Codeigniter CSRF保护能够正常使用SSL?
- 22. 如何在dev上正确设置和配置SSL测试?
- 23. 使用Python检测SSL哈希算法
- 24. 检测SSL浏览器支持
- 25. iOS UIWebView检测混合SSL内容
- 26. 客户端如何正常检测服务器何时断开连接?
- 27. SSL在Virtuemart上不能正常运行?
- 28. AFNetworking SSL pinning无法正常工作
- 29. NGINX SSL passthrough无法正常工作?
- 30. 如何检测
这看起来像我以后的事情。安全是一个问题,否则首先不会有SSL。但是,在这种特殊情况下,这不是什么大问题,因为我们需要的只是加密流量,认证不是问题。事实上,在这种情况下,客户端实际上是一个服务器节点,它调用同一类型的另一个节点(这是群集中的某种谈话)。我只是需要一个很好的捷径来避免引入一个新的参数。听起来这样做没有可靠的方法,但我会玩弄港口统一thingy,听起来很有趣,谢谢! – Dima 2012-04-27 10:25:42
服务器的身份验证(加密之前)始终是一个问题,除非您确定最多可以拥有无法根本改变流量的被动攻击者(窃听者)。 – Bruno 2012-04-27 10:42:31
是的,就是这样,窃听者在我的情况下不是威胁 – Dima 2012-04-27 15:09:43