使用C#的TLS SNI

时间:2011-05-05 11:55:09

标签: c# ssl libcurl sni

我正在尝试在我的项目中使用libcurl.net来通过SSL执行HTTP请求。 (System.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(),但没有结果。

由于

1 个答案:

答案 0 :(得分:0)

您是否设置了CPU平台以匹配您正在使用的库?例如如果您有x86 DLL或x64用于x64 DLL,请使用x86。 (即使这不是你的问题,你只有32Bit系统,你的应用程序打击Win64否则)

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