我会尽量做到尽可能简短。我已经在我的服务器上设置了证书。我只是对我在网站上配置ssl的正确方法有疑问。
我需要保护根login.aspx
以及admin
和cart
目录。因此,在IIS中,您可以右键单击站点中的文件或目录,然后转到Properties
- > File/Directory Security
标签 - > Secure Communications
部分,然后点击Edit
- >检查Require secure channel (SSL)
。这会导致通过https
连接请求文件或目录内容,并且asp.net不会自动转换请求。
因此,我没有更改所有链接和重定向以使用绝对网址来指定http
或https
,而是实施了http module以自动在http
之间切换和https
建议here。但是,我仍然得到错误:
必须通过安全通道查看该页面
因为最初不是通过https
发送的,而是在模块中转换的。如果我删除IIS中的设置,它工作正常;页面模块自动将连接切换到https
。我的问题是,是否可以在IIS中没有SSL要求设置,只是让我的http模块处理http / https切换?我觉得这样做会失去一层安全感。有没有人对此有任何见解?
答案 0 :(得分:0)
我认为不启用Require secure channel
选项是可以接受的。我只在需要保护整个域时才启用该选项,例如secure.domain.com。对于具有需要HTTPS的部分和我不需要的部分的站点,我使用您描述的切换器方法。当用户请求登录页面时,他们将通过HTTPS重定向到同一页面。所有cookie都设置为仅通过SSL提供:
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="true" lockItem="true" />
</system.web>
如果cookie不存在,则用户未登录,并且页面通过HTTP传送。