我对SSL知之甚少,所以在迁移到HTTPS之前我有几个问题。
所以一直在做很多阅读,现在我了解公钥和私钥交换。客户端和服务器交换不对称密钥,以便最后它们可以具有对称密钥。
以下是几个问题:
一旦用户提供了他的用户名和密码,凭证就可以了,我会将该用户保存在会话中。 Context.Session["user"]
。在以后的所有页面中,我将确保Context.Session["user"]
非空为了呈现页面。这样会安全吗?
客户端不仅仅是Web浏览器也是控制台应用程序。如何防止控制台应用程序每次执行请求时都必须交换密钥?有没有办法阻止某些页面通过https访问并通过http访问?
我相信,对于我必须等待交换密钥的每个请求,必须保持一个会话?如果用户登录数据库而不是会话时保存了一个坏主意?
答案 0 :(得分:1)
如果您以正确的方式使用microsoft asp.net,那么SSL非常透明。也不要使用自签名证书进行SSL,这不是一个好主意。此外,还需要重新配置一些WCF服务以使用SSL。
最好不要在会话中存储用户信息而不是cookie。但无论如何它都可行。它也可以在ssl中正常工作。
基于控制台应用程序。如果根(或服务器)证书将在受信任的根列表中,并且控制台应用程序是使用.NET编写的并使用WebRequest或WCF - 则不会出现任何问题。您还可以尝试使用ServicePointManager.ServerCertificateValidationCallback = delegate接受所有证书{return true; }; 但是,如果你的应用程序使用Sockets或类似的东西 - 你可能会遇到问题。
这是一个非常快速和透明的密钥交换过程。别担心它。
无论如何,您可以将IIS和应用程序配置为仅从受信任区域访问http,并访问任何其他位置的https。
答案 1 :(得分:1)
部分答案:
是。您可能希望在母版页中进行检查,如果您正在使用,则确保您不要忘记进行检查。
您可以使用SecuritySwitch在特定页面的http和https之间轻松切换。到目前为止,它在我的测试中完美无缺。