我在tomcat服务器上运行后端,在浏览器中运行客户端。应用程序建立在 Spring 3 MVC + Spring 安全框架之上。如何保证通信安全?除了将服务器设置为仅通过 HTTPS 访问之外,还有其他选择吗?我没有这方面的经验,所以这可能是一个愚蠢的问题,但这会影响我的应用程序吗?当服务器通过 GET/POST 请求通过 https 与客户端通信时,我是否必须在我的应用程序中进行设置?
3 回答
这在某种程度上取决于您所说的“安全”是什么意思。如果您想要隐私,则必须使用 TLS (SSL) 作为传输。
如果您只关心authentication,那么您还有另一个选择:Digest Authentication。
摘要式身份验证允许客户端(通常是浏览器)和服务器以安全的方式交换身份验证凭据,而无需保护整个通信。如果您使用摘要式身份验证,那么第三方仍然可以:
- 查看客户端和服务器交换了哪些数据
- 将自己插入客户端和服务器之间并更改交换
第三方不能做的是欺骗身份验证或在传输过程中窃取用户名/密码。
如果这还不够安全,则需要 TLS。您不一定要购买证书。您可以使用 OpenSSL 生成您自己的。但是,此证书不会自动被浏览器信任,因此您不能真正将其用于公共站点。
您需要查阅服务器文档以了解如何设置 HTTPS 或摘要式身份验证,具体取决于您的需要。
您的应用程序不应受到从 HTTP 切换到 HTTPS 的影响,Tomcat 会处理这个问题,或者可能是前面的 Apache。重要的是要理解,HTTPS 是服务器的东西,而不是应用程序的主题,因为客户端与服务器 (Tomcat) 建立连接,而不是与您的应用程序建立连接。查看 Tomcat 文档,很清楚事情是如何工作的。
而且,就像其他人所说:从你所说的最好使用 HTTPS (TLS/SSL)。证书一开始有点吓人,但值得花时间。
HTTPS 是 HTTP 的 (S)ecure 形式,因为您有一个 HTTP 客户端服务器应用程序,我当然会使用 HTTPS。您只需要为您的网站创建一个 SSL 证书并将对您网站的访问限制为仅 HTTPS,那么您的安全性就达到了 99.99%。您的证书可以是来自 Versign 的商业证书或等效证书,也可以是某些开源引擎。对于客户端,不需要做任何事情来支持 HTTPS