抄袭下面网站的内容。没有新意。
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加密通讯方法详解」 在网络通讯中,安全性是一个非常重要的方面,而SSL/TLS协议则是最常用的加密通讯协议之一。C#作为一个强大的编程语言,可以轻松地实现SSL/TLS协议的加密通讯。下面将详细介绍...
即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.
SSL(Secure Sockets Layer)则是提供网络通信安全的协议,通常用于加密传输数据,以保护用户的隐私。在“Pop3邮件登陆(含SSL加密登陆)”这个主题中,我们将深入探讨POP3协议的工作原理以及如何在编程中实现SSL加密...
gRPC支持多种语言,包括Java、Python、Go、C#等,使得跨平台的微服务通信变得简单。 2. **OAuth**:OAuth(开放授权)是一种授权协议,允许第三方应用在用户的许可下,访问特定的资源。它常用于社交媒体、云存储等...
2. **处理SSL证书**:在开发环境中,可以使用`requests`库的`verify=False`选项忽略证书验证,但生产环境中需要确保证书的正确性,可以使用自签名证书或信任的CA签发的证书。 3. **处理HTTPS通过代理**:对于HTTPS...
1:调用.NET2.0的MAKECERT创建含有私钥的数字证书,并存储到个人证书区; 2:将该证书导出为pfx文件,并为其指定一个用来打开pfx文件的password; 3:读取pfx文件,导出pfx中公钥和私钥; 4:用pfx证书中的公钥进行...
C# 发送websocket通信 需要引用的dll
本项目"**C# socket smtp 邮件发送(支持SSL)**"主要探讨了如何在C#环境中使用Socket通过SMTP协议来发送邮件,并且支持安全的SSL/TLS连接,这在现代网络通信中是必不可少的安全保障。 首先,我们需要理解SMTP的工作...
【C#基础教程C# C# C# C#】是一份专门为C#编程语言初学者设计的详尽教程。C#(读作“C Sharp”)是微软公司于2000年推出的一种面向对象的、类型安全的、现代的编程语言,主要用于构建Windows平台的应用程序、Web应用...
本技术介绍将深入探讨如何使用C#实现令牌验证机制,并结合Nginx集群与SSL证书来增强WebAPI的安全性。 首先,让我们理解什么是令牌验证。令牌验证是一种身份验证方法,它通过在客户端和服务器之间交换一个唯一的、不...
C# 使用 MailKit 接收邮件 MailKit 是一个开源的 C# 邮件处理库,用于在应用程序中发送和接收电子邮件。...SSL/TLS 支持支持安全套接字层(SSL)和传输层安全性(TLS),确保邮件的安全传输。容错处理。
下面我们将详细探讨SSL的工作原理、C#中如何使用SSL以及相关的注意事项: 1. **SSL工作原理:** - 握手过程:当客户端(如浏览器)试图连接到服务器时,它们首先进行SSL握手。这个过程包括客户端发送一个“Client...
这个实例主要涉及如何配置HttpClient来忽略SSL(Secure Socket Layer)验证,这对于在开发和测试环境中处理自签名证书或未认证的服务器非常有用。以下将详细介绍HttpClient的使用以及如何进行SSL验证的忽略。 首先...
例子主要包括SocketAsyncEventArgs通讯封装、服务端实现日志查看、SCOKET列表、上传、下载、远程文件流、吞吐量协议,...服务端用C#编写,并使用log4net作为日志模块; 同时支持65536个连接,网络吞吐量可以达到400M。