受SSL保护的网站最佳做法

时间:2009-04-03 13:26:10

标签: url redirect https

我有一个使用SSL证书保护的网站(www.mydomain.com)。它是一个ASP.NET网站,我强制要求某些页面通过代码使用https://前缀。如果他们不这样做,它会将它们重定向到https://等效。这是一个好习惯吗?有更简单的方法吗?并非每个页面都需要SSL。

此外,当用户以mydomain.com而不是www.mydomain.com的形式使用我的URL时,他们会收到证书错误,因为证书已在www.mydomain.com注册。我应该使用与上面提到的http://和https://问题相同的方法吗?或者有更好的方法来处理这个问题吗?

3 个答案:

答案 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)

以下内容可以帮助您:

  • 如果可以使用https://显示所有网站页面,那么您只需更新代码即可使用https://并在IIS中设置两个绑定。一个用于http,另一个用于https。通过这种方式,您的网站可以通过任何协议访问。
  • 您的访问者收到名称不匹配错误,因为您的SSL证书中使用的通用名称是www.mydomain.com。 Namecheap提供RapidSSL证书,您可以通过该证书在单个SSL下保护这两个名称。您可以为www.mydomain.com购买此SSL,它将自动保护mydomain.com(即没有www)。

另一个选择是您可以编写代码将访问者重定向到www.mydomain.com网站,即使他们浏览mydomain.com。