从您的问题尚不清楚,自签名证书的作用是什么。根据您的解决方法,我认为这是您已安装在HTTPS服务器中的服务器端证书。(这不是您要传递到服务器的客户端证书。)
因此,您需要做的是让Dart
HttpClient信任该证书,该证书将作为TLS握手的一部分由服务器传递给它。(通过设置回调,您已经使客户端信任任何证书,而不仅仅是服务器的证书。)
要设置受信任的证书,请使用
setTrustedCertificatesBytes代替
useCertificateChainBytes(如果您的证书是客户端证书,则使用该证书)。
您不能像
Files那样直接访问资产,因为它们是由构建捆绑在一起的。通过加载它们并使用
...Bytes方法,您正在做正确的事情。您可以像这样提高代码的可读性(删除
then)。另外,请注意对
Uint8List
ByteData data = await rootBundle.load('assets/raw/certificate.crt');SecurityContext context = SecurityContext.defaultContext;context.setTrustedCertificatesBytes(data.buffer.asUint8List());client = HttpClient(context: context);


