`
yutiansky
  • 浏览: 197351 次
  • 性别: 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# 发送websocket 的dll

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

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

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

    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的安全性。 首先,让我们理解什么是令牌验证。令牌验证是一种身份验证方法,它通过在客户端和服务器之间交换一个唯一的、不...

    C# 使用 MailKit 接收邮件

    C# 使用 MailKit 接收邮件 MailKit 是一个开源的 C# 邮件处理库,用于在应用程序中发送和接收电子邮件。...SSL/TLS 支持支持安全套接字层(SSL)和传输层安全性(TLS),确保邮件的安全传输。容错处理。

    SSL.zip

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

    C# MQTT客户端服务端broker

    10. **安全性**:理解如何在C#中使用SSL/TLS加密MQTT连接,以及认证机制,如用户名/密码、证书等。 11. **错误处理与日志记录**:在客户端和服务端都需要处理各种异常情况,并进行合适的错误日志记录,便于排查问题...

Global site tag (gtag.js) - Google Analytics