TLS SNI with C#

本文关键字:with SNI TLS | 更新日期: 2023-09-27 17:55:06

我试图在我的项目中使用libcurl.net通过SSL做HTTP请求。(系统。. Net类不支持服务器名扩展,我使用的是Windows XP)

SSLContextFunction中的代码:

public CURLcode OnSSLContext(SSLContext ctx, Object extraData)
{
    IntPtr ssl = SSL_new(ctx.Context);
    SSL_set_tlsext_host_name(ssl, "hostname");
    return CURLcode.CURLE_OK;
}
[DllImport("ssleay32.dll")]
internal static extern IntPtr SSL_new(IntPtr ctx);
[DllImport("ssleay32.dll")]
internal static extern void SSL_set_tlsext_host_name(IntPtr ssl, string message);

在调用SSL_new时会抛出一个错误:"试图读写受保护的内存。这通常表明其他内存已损坏。"

也,尝试调用OpenSSL的方法SSL_library_init(),但没有结果。

谢谢

TLS SNI with C#

您是否将CPU平台设置为与您正在使用的库匹配?例如,如果您有x86 DLL,请使用x86;如果有x64 DLL,请使用x64。(即使这不是你的问题,你只有一个32位系统,你的应用程序在Win64否则)

我没有使用它,但我确实找到了一个现有的libcurl包装器,也许这可以帮助你:http://sourceforge.net/projects/libcurl-net/