【问题标题】:TLS SNI with C#使用 C# 的 TLS SNI
【发布时间】:2011-05-05 11:55:09
【问题描述】:

我正在尝试在我的项目中使用 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() ,但没有结果。

谢谢

【问题讨论】:

    标签: c# ssl libcurl sni


    【解决方案1】:

    您是否设置了 CPU 平台以匹配您正在使用的库?例如如果您有 x86 DLL,请使用 x86;如果您有 x64 DLL,请使用 x64。 (即使这不是您的问题并且您只有 32 位系统,您的应用否则会在 Win64 上崩溃)

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

    【讨论】:

    • 我正在使用相同的。我尝试为 Win32 构建所有内容,但仍然无法正常工作。
    猜你喜欢
    • 2017-01-03
    • 1970-01-01
    • 2011-02-17
    • 2013-09-05
    • 2018-10-30
    • 2017-11-12
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    相关资源
    最近更新 更多