还在用Windows 2003服务器的朋友注意啦

如果你仍有旧的应用在Windows 2003上,对于SSL这已经是一个淘汰的操作系统了。它不支持TLS 1.1和1.2,更不要说TLS 1.3了,在SSL成为网站标配的今天,请务必升级操作系统。

SSL Protocol: These are the following list of protocols which have been released till date:

  1. SSL 1.0, 2.0 and 3.0
  2. TLS 1.0 (or SSL 3.1, released in 1999)
  3. TLS 1.1 (or SSL 3.2, released in 2006)
  4. TLS 1.2 (or SSL 3.3, released in 2008)
    NOTE: Windows Server 2008 R2 and Windows 7 are the only 2 OS which support TLS 1.1 and TLS 1.2 in 2008. All the OS’s before this don’t support these 2 protocols.

DTcms4/5中使用HttpModule将http访问301重定向到https

前面虽然讲过SSL在IIS开启的几种方式,比较常见的Microsoft URL Rewrite Module修改Web.Config如下:

<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>

但在DTcms中,本身已经用了自定义的HttpModule,可直接利用其写法来方便地实现支持。打开Web.UI下的HttpModule.cs,增加如下判断,可选择301跳转,也可直接跳转。

代码如下:

//开启SSL访问开始

string oldUrl = ((HttpApplication)sender).Request.Url.ToString();

if (!oldUrl.StartsWith("https://"))

{

string newUrl = oldUrl.Replace("http://", "https://");

//301重定向

((HttpApplication)sender).Response.StatusCode = 301;

((HttpApplication)sender).Response.AddHeader("Location", newUrl);

((HttpApplication)sender).Response.End();

//直接重定向

//((HttpApplication)sender).Context.RewritePath(newUrl);

}

//开启SSL访问结束

使用Certify来自动申请并配置Let’s Encrypt免费SSL证书到IIS8

越来越多的网站在启用HTTPS,也就是SSL加密通讯连接访问。特别是去年开始BAT在国内的推广和应用要求。要知道部署发布一个苹果iOS企业应用,下载服务器就必须使用HTTPS协议。

我去年做了美国的信用卡交易系统对接,调用信用卡公司的接口必须通过公网的支持TLS1.1以上的服务器,还需要IP白名单。可以看出在互联网交易支付方面HTTPS多么重要。

言归正传,SSL证书通常是需要付费的,但我们今天找到一个非常牛逼的全球通用的免费SSL项目:Let’s Encrypt – Free SSL/TLS Certificates,网址为:https://letsencrypt.org/

Let’s Encrypt 是国外一个公共的免费 SSL 项目,由 ISRG 联手组成证书颁发机构,可以签发免费 SSL/TLS 证书。ISRG(Internet Security Research Group,互联网安全研究小组)是一个关注网络安全的公益组织,其赞助商从非商业组织到财富100强公司都有,包括 Mozilla,Akamai,思科,Facebook,密歇根大学等等。

Let’s Encrypt是为普及 HTTPS 而发起的,它推动了基础 DV SSL 证书的普及。其证书已经被 Mozilla、Google、Microsoft 和 Apple 等主流浏览器支持,只需要 web 服务器配置好 HTTPS 证书,浏览器会在加载时验证 web 服务器 HTTPS 证书是否有效。随着 https 的普及,Let’s Encrypt 目前已成为全球最受欢迎的免费 SSL 证书签发机构

Let’s Encrypt的优点有2个:完全免费,避免 ISP 劫持;申请速度快、无需注册账户

但是有两点也需要注意:
1、Let’s Encrypt 的基础 DV SSL 证书,只提供了数据加密,不验证身份,无法向用户证明网站的所有者。但即使这样也满足了基本需要了。
2、它一次只会颁发 3 个月有效期的证书,到期之后需要自己再续上(仍然是免费的)。不过我们可以用下面要介绍的工具Certify来自动续约。

Certify 是一个可以自动续订 Let’s Encrypt 颁发证书的第三方 GUI 软件(图形界面工具),使用它可以自动配置、创建和自动续订证书,并且到快要续订的时候会自动发邮件通知我们。
官网地址:https://certify.webprofusion.com/
使用时,首先将Certify下载到服务器上并安装。注意其依赖 Microsoft .NET Framework 4.5,Windows 2012 R2默认安装.NET 4.5,Windows 2008 R2等低版本安装时会提示。
第一次启动程序时会弹出对话框让我们填写个邮箱地址,等证书快要过期的时候我们会收到续订证书的提醒邮件。这里我们填上常用的 email 地址,注意这里不认QQ的数字前缀邮箱。

进入以后,全部图形化界面,操作很简单,流程如下:

点击“新建证书”按钮,certify 会自动扫描 IIS 中的站点,选择我们要申请证书的域名。完毕后点击“保存”按钮进行保存。保存后点击“请求证书”按钮获取证书。在申请的同时,Certify 会在网站根目录下生成 .well-known 文件夹(我们可以稍后把这个目录给删掉,以保持网站目录干净。),并自动配置 web.config,自动验证证书。完全不用我们干预。待其执行完毕后,返回 Certify 的首页面可以看到站站点已经成功使用了 Let’s Encrypt 的证书了。

有一点需要注意,免费版的Certify只支持5个站点。

证书获取之后,还有一件重要的事情,就是限制只允许HTTPS访问(如下图),同时要在IIS设置HTTP自动转向到HTTPS,这块内容请自行搜索,特别是针对C#.NET应用,web.config就能搞定,URL重写都不用,也不用改403的javascript自动转向。