抄袭下面网站的内容。没有新意。
http://www.pinvoke.net/default.aspx/httpapi.httpsetserviceconfiguration
public static void SetCertificate(string ipAddress, int port, byte[] hash, bool isAdd)
{
uint retVal = (uint)NOERROR;
// initialize http
retVal = HttpInitialize(new HTTPAPI_VERSION(1, 0), HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
if ((uint)NOERROR != retVal)
{
throw new Win32Exception(Convert.ToInt32(retVal));
}
HTTP_SERVICE_CONFIG_SSL_SET configSslSet = new HTTP_SERVICE_CONFIG_SSL_SET();
HTTP_SERVICE_CONFIG_SSL_KEY configSslKey = new HTTP_SERVICE_CONFIG_SSL_KEY();
HTTP_SERVICE_CONFIG_SSL_PARAM configSslParam = new HTTP_SERVICE_CONFIG_SSL_PARAM();
// set HTTP_SERVICE_CONFIG_SSL_KEY
IPAddress ip = IPAddress.Parse(ipAddress);
IPEndPoint ipEndPoint = new IPEndPoint(ip, port);
SocketAddress socketAddress = ipEndPoint.Serialize();
byte[] socketBytes = new byte[socketAddress.Size];
GCHandle handleSocketAddress = GCHandle.Alloc(socketBytes, GCHandleType.Pinned);
for (int i = 0; i < socketAddress.Size; ++i)
{
socketBytes[i] = socketAddress[i];
}
configSslKey.pIpPort = handleSocketAddress.AddrOfPinnedObject();
// set HTTP_SERVICE_CONFIG_SSL_PARAM
configSslParam.AppId = Guid.Empty;
configSslParam.DefaultCertCheckMode = 0;
configSslParam.DefaultFlags = 0;
configSslParam.DefaultRevocationFreshnessTime = 0;
configSslParam.DefaultRevocationUrlRetrievalTimeout = 0;
configSslParam.pSslCertStoreName = null;
configSslParam.pSslHash = GCHandle.Alloc(hash, GCHandleType.Pinned).AddrOfPinnedObject();
configSslParam.SslHashLength = hash.Length;
// set HTTP_SERVICE_CONFIG_SSL_SET
configSslSet.ParamDesc = configSslParam;
configSslSet.KeyDesc = configSslKey;
// convert Structure To Ptr
IntPtr pInputConfigInfo = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_SET)));
Marshal.StructureToPtr(configSslSet, pInputConfigInfo, false);
// set or delete
if (isAdd)
{
retVal = HttpSetServiceConfiguration(
IntPtr.Zero,
HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
pInputConfigInfo,
Marshal.SizeOf(configSslSet),
IntPtr.Zero);
}
else
{
retVal = HttpDeleteServiceConfiguration(
IntPtr.Zero,
HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
pInputConfigInfo,
Marshal.SizeOf(configSslSet),
IntPtr.Zero);
}
// free memory
Marshal.FreeCoTaskMem(pInputConfigInfo);
// terminate http
HttpTerminate(HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
if ((uint)NOERROR != retVal)
{
throw new Win32Exception(Convert.ToInt32(retVal));
}
}
分享到:
相关推荐
主要给大家介绍了关于如何利用C#实现SSLSocket加密通讯的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP...
C# TLS SSL TCP双向认证 X509Store SslStream Certificate Visual Studio 2017 命令提示 键入: makecert -r -pe -n “CN=TestServer” -ss Root -sky exchange 等待来自客户端的连接... 显示安全等级 密钥套件: Aes...
C# SSL服务端连接及安装数字证书
这个程序我在网上搜了,有很多方法,但是都很凌乱,很散,我集合了这些方法编写出了一个完整的pop3 加SSL加密的接收邮件方法。
net去调用java端写的https webservices 1)浏览器导入服务器cer证书 2)c#客户端引入证书
一个范例,大概讲述了c#如何访问https 的webservice.
Windows Server 2008 /2012 中使用IIS 7 /8默认允许SSL 2.0和SSL 3.0,如果需要禁用的话可采取文档中方法
grpc 实现oauth ssl ssl需要证书详情 http://www.jianshu.com/p/f5e1c002047a 使用SSL实现加密通讯
C# 发送websocket通信 需要引用的dll
C# C# C# C# C# C# C# C# 适合初学者
C# socket smtp 邮件发送(支持SSL)源码
C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴C#C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴C#绘制坐标轴绘制坐标轴绘制坐标轴绘制坐标轴
C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#C#
1、用C#的exe程序,搭建HTTPS监听,可用于静态网站、接口、模拟WebApi等等 2、由于是客户端EXE,可以正常访问客户端所有硬件资源 3、如:web界面上调用http://localhost:xx/+参数,调用本地硬件、本地缓存(内存或...
c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#)c# 导出到Excel (C#) winform
C#伪随机数加密完整源码.rar
例子主要包括SocketAsyncEventArgs通讯封装、服务端实现日志查看、SCOKET列表、上传、下载、远程文件流、吞吐量协议,...服务端用C#编写,并使用log4net作为日志模块; 同时支持65536个连接,网络吞吐量可以达到400M。
FiddlerCoreAPI接口有着比Fiddler更为丰富的功能,如拦截、修改、替换、更新等操作,同样支持抓取HTTPS(SSL)数据包 FiddlerCoreApi国内资源比较少,幸好它有一个CHM的帮助文档,里面都是函数详解,但是都是英文,...