在 javascript 中正确使用 SSL 证书和 Soup
proper use of SSL certificate with Soup in javascript
我想问一下如何在客户端站点上通过证书正确使用 Soup in gnome-shell 扩展。
我的代码片段如下所示:
const Soup = imports.gi.Soup;
const GObject = imports.gi.GObject;
const Gio = imports.gi.Gio;
const TlsDatabase = GObject.registerClass({
Implements: [Gio.TlsFileDatabase],
Properties: {
'anchors': GObject.ParamSpec.override('anchors', Gio.TlsFileDatabase),
},
}, class TlsDatabase extends Gio.TlsDatabase {});
let session = Soup.Session.new();
session.ssl_strict = true;
session.tls_database = new TlsDatabase({anchors: "path.pem"});;
- 请求后,我总是得到 Gio.TlsCertificateFlags.GENERIC_ERROR 的答复。
- 没有设置session.tls_database,错误代码是3,我没找到是什么意思。所以发生了一些事情,我怀疑 TlsDatabase 有问题。
- 使用
session.ssl_strict = false
,它有效,我得到了答案,但我想要一个安全连接。
- 证书和服务器站点没问题,我用curl验证过
curl --ssl --cacert path.pem ...
。有效。
已编辑:
- 显示此错误:
g_tls_database_verify_chain: assertion 'G_TLS_DATABASE_GET_CLASS (self)->verify_chain' failed
感谢您的帮助。
您可能必须在 class 中实施 vfunc_verify_chain()
。 (我不清楚 Gio.TlsDatabase
是否没有提供此虚函数的默认实现,或者它提供了,这是一个错误。)
我想问一下如何在客户端站点上通过证书正确使用 Soup in gnome-shell 扩展。
我的代码片段如下所示:
const Soup = imports.gi.Soup;
const GObject = imports.gi.GObject;
const Gio = imports.gi.Gio;
const TlsDatabase = GObject.registerClass({
Implements: [Gio.TlsFileDatabase],
Properties: {
'anchors': GObject.ParamSpec.override('anchors', Gio.TlsFileDatabase),
},
}, class TlsDatabase extends Gio.TlsDatabase {});
let session = Soup.Session.new();
session.ssl_strict = true;
session.tls_database = new TlsDatabase({anchors: "path.pem"});;
- 请求后,我总是得到 Gio.TlsCertificateFlags.GENERIC_ERROR 的答复。
- 没有设置session.tls_database,错误代码是3,我没找到是什么意思。所以发生了一些事情,我怀疑 TlsDatabase 有问题。
- 使用
session.ssl_strict = false
,它有效,我得到了答案,但我想要一个安全连接。 - 证书和服务器站点没问题,我用curl验证过
curl --ssl --cacert path.pem ...
。有效。
已编辑:
- 显示此错误:
g_tls_database_verify_chain: assertion 'G_TLS_DATABASE_GET_CLASS (self)->verify_chain' failed
感谢您的帮助。
您可能必须在 class 中实施 vfunc_verify_chain()
。 (我不清楚 Gio.TlsDatabase
是否没有提供此虚函数的默认实现,或者它提供了,这是一个错误。)