Flutter/Dart 语言的客户端证书身份验证

Client certificate authentication in Flutter/Dart languege

我是证书界的新手。我决定创建一个必须使用证书访问 API.

的应用程序

我创建了一个自签名 CA 证书、SSL 证书和一个客户端证书。我将它们导入 Windows 服务器并正确配置了 IIS。我可以使用 clientcertificate.pfx 文件从浏览器 (Google Chrome) 向 API 发出请求。 pfx 证书通过 MMC 导入到个人用户存储。为了创建 pfx 文件,我使用了 .cert 和 .pvk 文件。

到目前为止一切顺利。

现在我正尝试从 dart 发出请求,但不知道应该将哪些文件发送到 API。 我应该发送 pfx 文件吗?或者可能是 .cert 和 .pvk 文件? 伙计们,你们做过吗?有人可以帮助我理解这个过程吗? 我已经阅读了很多网站,但仍然没有找到答案。 在移动开发领域,我也是全新的。

Dart 的 HttpClient 可以取 SecurityContext.

To add a custom trusted certificate authority, or to send a client certificate to servers that request one, pass a SecurityContext object as the optional context argument to the HttpClient constructor. The desired security options can be set on the SecurityContext object.

将您的 PKCS12 客户端密钥库(pfx 文件)存储在您的应用中的某处,可能作为资产,并在启动时加载它。创建一个 SecurityContext 然后调用 useCertificateChainBytesusePrivateKeyBytes 将相同的值传递给两者(pfx 文件的内容和密码)。

SecurityContext 用作 HttpClientcontext

您通过像这样将字节加载到内存中来进行客户端身份验证 final cert = await RootBundle.load('assets/cert.pfx'); .然后创建一个 SecurityContext,然后调用 useCertificateChainBytes 和 usePrivateKeyBytes。使用此 SecurityContext 作为您的 HttpClient 上下文。