我有一个使用SSL证书保护的网站(www.mydomain.com)。它是一个ASP.NET网站,我强制要求某些页面通过代码使用https://前缀。如果他们不这样做,它会将它们重定向到https://等效。这是一个好习惯吗?有更简单的方法吗?并非每个页面都需要SSL。
此外,当用户以mydomain.com而不是www.mydomain.com的形式使用我的URL时,他们会收到证书错误,因为证书已在www.mydomain.com注册。我应该使用与上面提到的http://和https://问题相同的方法吗?或者有更好的方法来处理这个问题吗?
答案 0 :(得分:2)
你的方法听起来不错。在我当前的项目中,当用户进入我的登录页面时,我强制使用HTTPS(基于配置标志,允许我在本地测试而不需要处理证书)。这允许我访问其他不安全的页面,这是非常方便的。
我有几个地方我们的服务器抓取其他页面的输出(例如渲染到HTML到PDF并获取动态图像)。由于我们的环境,我们的服务器无法解析它的公共名称,所以如果我们要在我们必须添加的站点强制ssl,我们的内部IP地址(或伪造域名)。
关于您的第二个问题,您有两个选项可以处理www.example.com与example.com。您可以购买允许您拥有多个域名的证书。这些被称为UCC证书。
您的第二个选择是将example.com重定向到www.example.com,反之亦然。如果希望您的内容被谷歌或其他搜索引擎编入索引,重定向是一个很好的选择。因为他们会将www.example.com和example.com视为两个独立的网站。这意味着您的网站链接将被拆分,从而降低您的整体网页排名。
答案 1 :(得分:1)
您可以在IIS中配置站点以要求证书,但如果有人未访问https且B)要求所有页面都使用https,则会产生错误。所以, 不起作用。您可以在IIS上放置一个过滤器来检查所有请求,并将它们重定向为https呼叫(如果它们在您的加密列表中)。这里明显的缺点是每次添加新页面时都需要更新页面列表(例如,从XML文件或数据库中)并重新启动过滤器。
我认为您可能正确地将代码构建到需要https的页面中,如果它们通过http到达,则重定向到https版本。就您的证书错误而言,您可以使用完整路径(包括www)重定向,而不是修复此问题的相对路径。如果您对如何检测呼叫是否使用https或如何获取当前请求的完整路径有任何疑问,请告诉我。两者都非常简单,但如果你需要它我会得到示例代码。
更新 - Josh,处理多个子域的证书称为通配符证书。问题是它们比标准证书贵很多。
更新2 :另一件需要考虑的事情是对需要SSL的网页使用母版页或派生类。这样,您可以将其声明为SSLPage类型(或使用相应的母版页),并让Master / Parent类处理重定向,而不是复制每个页面中的代码。再次,如果采用这种方法,你需要做一些URL处理,但这很简单。
答案 2 :(得分:-1)
以下内容可以帮助您:
另一个选择是您可以编写代码将访问者重定向到www.mydomain.com网站,即使他们浏览mydomain.com。