gpt4 book ai didi

ssl - 如何在 libsoup 中使用 HTTPS 接受所有证书(甚至无效)?

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:43 24 4
gpt4 key购买 nike

我在我的 Vala 应用程序中使用 libsoup 下载图像。但是我的程序总是因 SSL_FAILED 代码而崩溃(它不在程序中,这是我的错误)并且没有下载图像。我在我的应用程序中将 ssl_strict 切换为 false,但它没有按照我想要的方式工作。

这是我下载图片的函数:

var session = new Soup.Session ();
session.ssl_strict = false;

var message = new Soup.Message ("GET", url);
message.tls_errors = GLib.TlsCertificateFlags.VALIDATE_ALL;

session.send_message (message);
if (message.status_code != Soup.Status.OK)
error("Something wrong with downloading."); // here it crashes

我检查了文档,它说:“如果您将“ssl-strict”设置为 FALSE,那么所有证书都将被接受,您将需要调用 soup_message_get_https_status() 来区分有效证书和无效证书。(这可以是使用,例如,如果您想在发出某种警告后接受无效证书。)”。

我不知道收到的证书是否无效,但显然是的。而且文档只字不提如何使用它来接受无效的证书。那么问题来了:如何使用这个函数来接受所有(甚至是无效的)证书?

最佳答案

试试这个。 (未经测试的代码!)

var session = new Soup.Session ();
session.ssl_strict = false;

// drop this line
//message.tls_errors = GLib.TlsCertificateFlags.VALIDATE_ALL;

var message = new Soup.Message ("GET", url);
session.send_message (message);

// Now you can check the message.tls_errors property for why the
// certificate validation failed. E.g.:
if (message.tls_errors == TlsCertificateFlags.UNKNOWN_CA)
print ("Unknown CA\n");

关于ssl - 如何在 libsoup 中使用 HTTPS 接受所有证书(甚至无效)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27205532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com