flutter - 如何在flutter中固定SSL证书的公钥?

标签 flutter dart authentication ssl https

有人可以帮助我在 flutter 中实现 SSL 公钥固定吗?我在谷歌上搜索了很多,但没有找到合适的文章来解释如何实现这一点。

请帮忙!!!

最佳答案

有一个名为 http_certificate_pinning 的包,它提供了 3 个不同的 API 可供使用。您可以查看here .

1-作为 Dio 的拦截器:

import 'package:http_certificate_pinning/certificate_pinning_interceptor.dart';
  
  // Add CertificatePinningInterceptor in dio Client
  Dio getClient(String baseUrl, List<String> allowedSHAFingerprints){
      var dio =  Dio(BaseOptions(baseUrl: baseUrl))
        ..interceptors.add(CertificatePinningInterceptor(allowedSHAFingerprints));
      return dio;
  }

  myRepositoryMethod(){ 
    dio.get("myurl.com");
  }

2-创建http客户端:

import 'package:http_certificate_pinning/secure_http_client.dart';
  
  // Uses SecureHttpClient to make requests
  SecureHttpClient getClient(List<String> allowedSHAFingerprints){
      final secureClient = SecureHttpClient.build(certificateSHA256Fingerprints);
      return secureClient;
  }

  myRepositoryMethod(){ 
    secureClient.get("myurl.com");
  }  

3-检查握手是否正确并执行您想要的操作:

import 'package:http_certificate_pinning/http_certificate_pinning.dart';
  
Future myCustomImplementation(String url, Map<String,String> headers, List<String> allowedSHAFingerprints) async {
  try{
    final secure = await HttpCertificatePinning.check(
      serverURL: url,
      headerHttp: headers,
      sha: SHA.SHA256,
      allowedSHAFingerprints:allowedSHAFingerprints,
      timeout : 50
    );

    if(secure.contains("CONNECTION_SECURE")){
      return true;
    }else{
      return false;
    }
  }catch(e){
    return false;
  }
}

关于flutter - 如何在flutter中固定SSL证书的公钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68842986/

相关文章:

javascript - 当有人直接打开页面时如何进行基于 token 的身份验证

wcf - 使用 netTcpBinding 为 WCF 服务启用基于证书的身份验证

flutter - 在小部件构建之前获取 SharedPreferences

android - 在 android 库中添加 Flutter 功能作为依赖项

dart - 在 Dart 中,Dart2JS 和 Dart VM 之间的事件队列/事件循环有何不同?

flutter - 如何在flutter应用程序中正确实现注销功能?

authentication - 有什么方法可以验证我的 Google 助理应用程序的用户身份吗?

flutter - 如何为聊天应用构建 Firestore

firebase - Flutter & Firestore - 更新永不停止(从一个值切换到另一个值)

json - 主体上带有 Json 的 HTTP POST - Flutter/Dart