`
yutiansky
  • 浏览: 197544 次
  • 性别: Icon_minigender_1
  • 来自: 本溪
社区版块
存档分类
最新评论

C# HttpSetServiceConfiguration (SSL)

 
阅读更多

抄袭下面网站的内容。没有新意。

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加密通讯的方法详解

    「C#实现SSLSocket加密通讯方法详解」 在网络通讯中,安全性是一个非常重要的方面,而SSL/TLS协议则是最常用的加密通讯协议之一。C#作为一个强大的编程语言,可以轻松地实现SSL/TLS协议的加密通讯。下面将详细介绍...

    C#:https访问Web服务器SSL认证项目实例

    即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP...

    C# TLS SSL TCP双向认证 X509Store SslStream Certificate

    C# TLS SSL TCP双向认证 X509Store SslStream Certificate Visual Studio 2017 命令提示 键入: makecert -r -pe -n “CN=TestServer” -ss Root -sky exchange 等待来自客户端的连接... 显示安全等级 密钥套件: Aes...

    C# SSL服务端连接及安装数字证书

    C# SSL服务端连接及安装数字证书

    c# winform pop3 SSL接收邮件 完整

    这个程序我在网上搜了,有很多方法,但是都很凌乱,很散,我集合了这些方法编写出了一个完整的pop3 加SSL加密的接收邮件方法。

    c#如何调用SSl(https)加密的java写的Web Services例子

    net去调用java端写的https webservices 1)浏览器导入服务器cer证书 2)c#客户端引入证书

    c# 访问ssl

    一个范例,大概讲述了c#如何访问https 的webservice.

    Pop3邮件登陆(含SSL加密登陆)

    SSL(Secure Sockets Layer)则是提供网络通信安全的协议,通常用于加密传输数据,以保护用户的隐私。在“Pop3邮件登陆(含SSL加密登陆)”这个主题中,我们将深入探讨POP3协议的工作原理以及如何在编程中实现SSL加密...

    grpc 实现oauth ssl

    gRPC支持多种语言,包括Java、Python、Go、C#等,使得跨平台的微服务通信变得简单。 2. **OAuth**:OAuth(开放授权)是一种授权协议,允许第三方应用在用户的许可下,访问特定的资源。它常用于社交媒体、云存储等...

    禁用ssl2.0、ssl3.0

    Windows Server 2008 /2012 中使用IIS 7 /8默认允许SSL 2.0和SSL 3.0,如果需要禁用的话可采取文档中方法

    http过代理和忽略ssl证书

    2. **处理SSL证书**:在开发环境中,可以使用`requests`库的`verify=False`选项忽略证书验证,但生产环境中需要确保证书的正确性,可以使用自签名证书或信任的CA签发的证书。 3. **处理HTTPS通过代理**:对于HTTPS...

    C#创建数字证书并导出为pfx,并使用pfx进行非对称加解密

    1:调用.NET2.0的MAKECERT创建含有私钥的数字证书,并存储到个人证书区; 2:将该证书导出为pfx文件,并为其指定一个用来打开pfx文件的password; 3:读取pfx文件,导出pfx中公钥和私钥; 4:用pfx证书中的公钥进行...

    C# 发送websocket 的dll

    C# 发送websocket通信 需要引用的dll

    C# socket smtp 邮件发送(支持SSL)

    本项目"**C# socket smtp 邮件发送(支持SSL)**"主要探讨了如何在C#环境中使用Socket通过SMTP协议来发送邮件,并且支持安全的SSL/TLS连接,这在现代网络通信中是必不可少的安全保障。 首先,我们需要理解SMTP的工作...

    C#基础教程C# C# C# C#

    【C#基础教程C# C# C# C#】是一份专门为C#编程语言初学者设计的详尽教程。C#(读作“C Sharp”)是微软公司于2000年推出的一种面向对象的、类型安全的、现代的编程语言,主要用于构建Windows平台的应用程序、Web应用...

    C#WEB用户令牌TOKEN验证防止HTTPGETPOST等提交

    本技术介绍将深入探讨如何使用C#实现令牌验证机制,并结合Nginx集群与SSL证书来增强WebAPI的安全性。 首先,让我们理解什么是令牌验证。令牌验证是一种身份验证方法,它通过在客户端和服务器之间交换一个唯一的、不...

    SSL.zip

    下面我们将详细探讨SSL的工作原理、C#中如何使用SSL以及相关的注意事项: 1. **SSL工作原理:** - 握手过程:当客户端(如浏览器)试图连接到服务器时,它们首先进行SSL握手。这个过程包括客户端发送一个“Client...

    httpClient实例httpClient调用 http/https实例 忽略SSL验证

    这个实例主要涉及如何配置HttpClient来忽略SSL(Secure Socket Layer)验证,这对于在开发和测试环境中处理自签名证书或未认证的服务器非常有用。以下将详细介绍HttpClient的使用以及如何进行SSL验证的忽略。 首先...

    C#高性能大容量SOCKET并发完成端口例子(有C#客户端)完整实例源码

    例子主要包括SocketAsyncEventArgs通讯封装、服务端实现日志查看、SCOKET列表、上传、下载、远程文件流、吞吐量协议,...服务端用C#编写,并使用log4net作为日志模块; 同时支持65536个连接,网络吞吐量可以达到400M。

Global site tag (gtag.js) - Google Analytics