热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在IIS上SSL的部署和启动SSL安全

在这次的项目中遇见了这个问题,之前我并懂了不了多少,只对了SSL和HTTPS理论了解。但并不知道在实际中如何运行。经过自己在网上查阅一番,最后靠自己解决了这个问题,现在在这里和大家分享一下

   在这次的项目中遇见了这个问题,之前我并懂了不了多少,只对了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上的顶级节点应用,在右边的功能试图里选择服务器证书,双击进入,可以看见配置在本机的证书,我们为了试验,需要在右边的点击创建自签名证书,按照操作进行完成自签名证书。在实际应用中这个证书是需要在第三方申请的。以下是我的自定义证书:

         image

      3:选择需要启动SSL的网站,并点击网站,在最右边的工具选择绑定,就可以添加HTTPS端口和服务证书,如下图:

NTLA[@SI@J1H5G2CNEEBJMR

                4:在我们需要启动SSL的网站是点击中间的SSL设置按钮,选择启动SSL,以及确定客户端是否必须持有证书。如入:

        B7L}L[00P9B3U3W]51NPH{X

这是在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
{
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);
}
}
}

推荐阅读
  • 本文介绍了如何在Mac上使用Pillow库加载不同于默认字体和大小的字体,并提供了一个简单的示例代码。通过该示例,读者可以了解如何在Python中使用Pillow库来写入不同字体的文本。同时,本文也解决了在Mac上使用Pillow库加载字体时可能遇到的问题。读者可以根据本文提供的示例代码,轻松实现在Mac上使用Pillow库加载不同字体的功能。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • asp中如何嵌入python的简单介绍
    本文目录一览:1、如何在IIS中执行Python脚本 ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
北京草舞945share
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有