【问题标题】:Client certificate authentication in Flutter/Dart languegeFlutter/Dart语言客户端证书认证
【发布时间】:2019-02-20 15:24:14
【问题描述】:

我是证书领域的新手。我决定创建一个应用程序,它必须使用证书来访问 API。

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

到目前为止一切顺利。

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

【问题讨论】:

    标签: dart certificate flutter x509certificate client-certificates


    【解决方案1】:

    Dart 的HttpClient 可以取一个SecurityContext

    添加自定义的受信任证书颁发机构,或发送客户端 向请求的服务器提供证书,传递一个 SecurityContext 对象 作为 HttpClient 构造函数的可选 context 参数。这 可以在 SecurityContext 对象上设置所需的安全选项。

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

    SecurityContext 用作您的HttpClientcontext

    【讨论】:

    • 同时使用 .jks 文件(来自 java keytool 的 java 密钥库)
    • 嘿,如何提供从资产到 securityContext 的路径。
    • 我已经训练了这个 var context = SecurityContext.defaultContext; context.setTrustedCertificates(文件路径,密码)
    • 我正在这样做 var context = SecurityContext.defaultContext; context.setTrustedCertificates(filePath ,password) // 我们如何从资产中获取文件路径
    • 将密钥库资产读入内存见Adding assets,然后使用setTrustedCertificatesBytes(List<int> certBytes, { String password })
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-09-06
      • 2010-11-30
      • 2012-09-04
      • 2013-08-04
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多