在IIS上SSL的部署和启动SSL安全
在这次的项⽬中遇见了这个问题,之前我并懂了不了多少,只对了SSL和HTTPS理论了解。但并不知道在实际中如何运⾏。经过⾃⼰在⽹上查阅⼀番,最后靠⾃⼰解决了这个问题,现在在这⾥和⼤家分享⼀下。如果写的有不对或者是不恰当的,就请⼤家指正,多交流。
SSL(安全套接⼦层:Secure Socket Layer):
SSL是Secure Socket Layer(安全套接⼦层):是由⽹景公司(Netscape)⾃主研发的⽤以保障在Internet上敏感数据传输之安全,利⽤数据加密技术,可确保数据在⽹络上之传输过程中不会被截取及窃听。SSL协议位于TCP/IP协议与各种应⽤层协议之间,为数据通讯提供安全⽀持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建⽴在可靠的传输协议(如TCP)之上,为⾼层协议提供数据封装、压缩、加密等基本功能的⽀持。 SSL握⼿协议(SSL Handshake Protocol):它建⽴在SSL记录协议之上,⽤于在实际的数据传输开始前,通讯双⽅进⾏⾝份认证、协商加密算法、交换加密密钥等。SSL协议提供的服务主要有:1:认证⽤户和服务器,确保数据发送到正确的客户机和服务器;2:加密数据以防⽌数据中途被窃取;3:维护数据的完整性,确保数据在传输过程中不被改变。
HTTPS(安全超⽂本传输协议:Secure Hypertext Transfer Protocol):
HTTPS(Secure Hypertext Transfer Protocol)安全超⽂本传输协议就是应⽤了⽹景公司的安全套接字层(SSL)作为HTTP应⽤层的⼦层。(HTTPS默认端⼝为443)SSL使⽤40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS 和SSL⽀持使⽤X.509数字认证,如果需要的话⽤户可以确认发送者是谁.HTTPS是以安全为⽬标的HTTP通道,简单讲是
HTTP的安全版。即HTTP下加⼊SSL层,https的安全基础是SSL,因此加密的详细内容请看SSL。HTTPS是⼀个URI
scheme(抽象标识符体系),句法类同http:体系。⽤于安全的HTTP数据传输。https:URL表明它使⽤了HTTP,但HTTPS存在不同于HTTP的默认端⼝及⼀个加密/⾝份验证层(在HTTP与TCP之间)。这个系统的最初研发由⽹景公司进⾏,提供了⾝份验证与加密通讯⽅法,现在它被⼴泛⽤于万维⽹上安全敏感的通讯,例如交易⽀付⽅⾯。
在IIS上的HTTPS配置:
1:打开控制⾯板-》管理⼯具-》IIS;
2:选中IIS上的顶级节点应⽤,在右边的功能试图⾥选择服务器证书,双击进⼊,可以看见配置在本机的证书,我们为了试验,需要在右边的点击创建⾃签名证书,按照操作进⾏完成⾃签名证书。在实际应⽤中这个证书是需要在第三⽅申请的。以下是我的⾃定义证书:
3:选择需要启动SSL的⽹站,并点击⽹站,在最右边的⼯具选择绑定,就可以添加HTTPS端⼝和服务证书,如下图:
4:在我们需要启动SSL的⽹站是点击中间的SSL设置按钮,选择启动SSL,以及确定客户端是否必须持有证书。如⼊:
这是在IIS中就配置完成了,我们就可以利⽤HTTPS或者HTTP两种⽅式去访问我们所启动SSL的⽹页了,他们的不同在于不同的端⼝,和安全性。
在IIS中以HTTPS访问页⾯页⾯会出现阻⽌界⾯:因为我们⾃定义的证书在Ie中认为是可疑证书如下图,就表明配置成功了。
点击就可以访问页⾯了。
接下来我们主要是在程序中访问页⾯,和HTTP没有什么区别,很简单,你只需要将其当做HTTP⼀样处理就是了。唯⼀需要注意的是他们的端⼝不同,所以在Response.Redirect(“url”)的时候我们必须转化为对应的决定URL,⽽不是相对了。这⾥就需要⽤Request.Host和Port 来拼接了。就这么多了,我也挤不出来了把我的拼接类贴出来共享下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections.Specialized;
using System.Diagnostics;
namespace MassCarCare.Web.Utils
{
public class URLHelper
ssl协议未开启的危害{
public HttpContext HttpContext
{
get;
set;
}
public string GetAbsoluteURL(string page, string pre, NameValueCollection paramCollection)
{
if (HttpContext == null)
throw new ArgumentNullException("HttpContext");
string port = ""; ;
if (System.Configuration.ConfigurationManager.AppSettings[pre.ToUpper() + "Port"] != null)
{
port = System.Configuration.ConfigurationManager.AppSettings[pre.ToUpper() + "Port"].ToString(); }
if (string.IsNullOrEmpty(port))
{
if (pre.ToLower().Equals("http"))
{
port = "80";
}
else if (pre.ToLower().Equals("https"))
{
port = "443";
}
else
port = HttpContext.Request.Url.Port + ""; ;
}
string pageUrl = pre + "://" + HttpContext.Request.Url.Host + ":" + port + "/" + page;
string param = "";
if (paramCollection != null)
{
foreach (var item in paramCollection.Keys)
{
param += "&" + item + "=" + paramCollection[item.ToString()];
}
}
if (!string.IsNullOrEmpty(param))
{
param = param.TrimStart('&');
pageUrl += "?" + param;
}
Debug.Write(pageUrl);
return pageUrl;// HttpUtility.UrlEncode(pageUrl);
}
public string GetAbsoluteURL(string page, NameValueCollection paramCollection)
{
return GetAbsoluteURL(page, "http", paramCollection);
}
public string GetAbsoluteURL(string page, string pre)
{
return GetAbsoluteURL(page, pre, null);
}
public string GetAbsoluteURL(string page)
{
return GetAbsoluteURL(page, "http", null);
}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。