SSL安全访问协议及配置

一.https协议介绍

概述:

https=http+ssl(安全套接层)

 

https公钥验证失败警告:

1、证书不受信任会出现该警告

2、证书受信任,但并非在当前访问域名下也会出现此警告。

 

公钥证书查看方法:

 

 

上图所示为普通的https网站实例,某些网站https公钥类型不同则会有其它展现形式,如:

中国工商银行:

 

查看本机证书管理控制台:

 

 

 

受信任的证书颁发机构列表,若网页能正常访问,那么其证书就存在于该列表中:

工作原理步骤:

1、用户(客户端)先向服务器发送一个https请求

2、服务器拿到请求之后进行处理,服务器端存放了2个钥匙(私钥、公钥,公钥和私钥是不一样的,但是是一对,可以开一把锁),具体的处理步骤如下:先使用私钥把需要响应客户端的内容进行加密,再去把公钥随同响应内容一起发送给客户端

3、当浏览器获取到服务器端响应内容之后先去验证公钥的有效性,如果验证通过则继续后续操作,如果验证不通过,则会显示警告信息;受信任则产生随机的钥匙,然后使用公钥进行内容的加密

4、将加密完成的数据发送给服务器端

5、服务器端在获取加密信息之后再去使用私钥进行解密

6、服务器再去把需要响应的内容再返回给客户端,发送之前先使用私钥进行加密;

后续的步骤就是循环这个过程,只是后面不需要每次传送公钥

二.ssl协议配置

 

证书即公钥:

证书中有颁发者: 也就是证书的签发人(CA,即证书签发机构)

通过证书路径可以看到找到根证书:

证书的颁发是层级结构的,根证书父级还存在一个证书,该证书是全局证书,"自己发给自己",所有的子级证书都受信任于这个证书.

ssl部署时要求:证书使用的域名要和证书允许的域名一致(要么和"颁发给"或者和"使用者的可选名称"中给定的域名一致)

证书大多都是需要收费申请的,也有部分类型是免费的.现在CA一般不会给ip颁发,只给域名颁发,之前可以给ip颁发.

申请后的证书文件目录结构如:

CA机构不止一家

证书是有有效期的.

 

若域名通过https访问如下则表示https没有配置ok:

在apache中配置https协议环境

配置文件httpd-ssl.conf(apache目录下Conf/extra/httpd-ssl.conf)

修改httpd.conf文件,引入httpd-ssl.conf

“Include conf/extra/httpd-ssl.conf”

httpd中开启ssl扩展:

LoadModule ssl_module modules/mod_ssl.so

将证书文件以及其关联文件全部复制到apache目录下一个指定目录(如“i:/wamp/apache/conf/ssl/https/”)

即以下三个文件:

bundle.crt

privatekey.key

publickey.crt

crt证书文件内容是经过base64加密过的。

 

修改httpd-ssl.conf中相关配置段如下:

<VirtualHost _default_:443>

#ssl站点根目录

DocumentRoot "I:\www"

#ssl协议站点访问域名

ServerName www.itcast.biz:443

#管理员邮箱,在站点产生500错误会显示在页面上

ServerAdmin admin@example.com

#ssl引擎开关

SSLEngine on

#ssl加密的组件,允许客户端使用的加密套件

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

#服务器证书文件

SSLCertificateFile "I:\www\Apache\conf\ssl\https\publickey.crt"

#服务器私钥证书

SSLCertificateKeyFile " I:\www\Apache\conf\ssl\https\privatekey.key"

#证书信任链文件

SSLCertificateChainFile " I:\www\Apache\conf\ssl\https\bundle.crt"

精简配置项后如下图:

注:在window下\/都可以使用,在linux下必须/。

重启apache

 

 

 

 

 

 

 

非常抱歉,我在给出的代码中错误地提及了 `VirtualCamera` 类。事实上,SharpDX.MediaFoundation 库本身并没有提供直接创建虚拟摄像头的功能。要创建虚拟摄像头并将视频流推送到它,你可能需要使用第三方库或工具,例如虚拟摄像头驱动程序或框架。 一种常见的选择是使用 Dshow 系统库。你可以使用 DirectShow 库来创建虚拟摄像头,并使用 SharpDX.MediaFoundation 与 DirectShow 进行交互。以下是一个基本的示例代码,演示了如何将视频流推送到虚拟摄像头: ```csharp using System; using DirectShowLib; using SharpDX.MediaFoundation; class Program { static void Main() { // 加载虚拟摄像头驱动程序 var virtualCamera = LoadVirtualCameraDriver(); if (virtualCamera == null) { Console.WriteLine("无法加载虚拟摄像头驱动程序!"); return; } // 创建源视频文件的读取器 using (var sourceReader = CreateSourceReader("path/to/source/video.mp4")) { // 获取第一个视频流的格式 var mediaType = GetVideoMediaType(sourceReader, 0); // 将视频流推送到虚拟摄像头 PushVideoToVirtualCamera(sourceReader, virtualCamera, mediaType); Console.WriteLine("视频流已成功推送到虚拟摄像头!按任意键停止..."); Console.ReadKey(); } // 卸载虚拟摄像头驱动程序 UnloadVirtualCameraDriver(virtualCamera); } static IBaseFilter LoadVirtualCameraDriver() { // TODO: 加载虚拟摄像头驱动程序的代码 // 可以使用 DirectShowLib 库中的 FilterGraph 或其他相关类来加载虚拟摄像头驱动程序并获取其 IBaseFilter 对象 return null; } static void UnloadVirtualCameraDriver(IBaseFilter virtualCamera) { // TODO: 卸载虚拟摄像头驱动程序的代码 // 可以使用 DirectShowLib 库中的 FilterGraph 或其他相关类来卸载虚拟摄像头驱动程序 } static SourceReader CreateSourceReader(string videoFilePath) { var attributes = new MediaAttributes(); attributes.Set(CaptureDeviceAttributeKeys.SourceType, CaptureDeviceAttributeKeys.SourceTypeVideoCapture.Guid); var sourceReader = new SourceReader(videoFilePath, attributes); return sourceReader; } static MediaType GetVideoMediaType(SourceReader sourceReader, int streamIndex) { var mediaType = sourceReader.GetNativeMediaType(streamIndex, 0); return mediaType; } static void PushVideoToVirtualCamera(SourceReader sourceReader, IBaseFilter virtualCamera, MediaType mediaType) { var sample = new MediaSample(); // TODO: 将视频流推送到虚拟摄像头的代码 // 可以使用 DirectShowLib 库中的 FilterGraph 或其他相关类来将视频流推送到虚拟摄像头 } } ``` 注意,上述代码中的 `LoadVirtualCameraDriver` 和 `UnloadVirtualCameraDriver` 方法是示例代码,需要根据你使用的虚拟摄像头驱动程序进行实际实现。你可以使用 DirectShowLib 库中的 FilterGraph 类或其他相关类来加载和卸载虚拟摄像头驱动程序。 希望这次提供的代码能够帮助到你,如果你有任何进一步的问题随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值