v3.0.1
http_certificate_pinning
Flutter 的 HTTPS 認證憑證固定。檢查已知的 SHA-1 或 SHA-256 指紋與目標伺服器的 SHA-1 或 SHA-256 是否相符。
157喜歡 4.1萬近 30 天下載115Pub 分數
AndroidiOS
Flutter 的 HTTPS 憑證固定
>=4.0.6 <6.0.0{"sdk":"flutter"}^1.3.0^5.0.0{"sdk":"flutter"}以下為英文專案原文快照,最新內容請造訪 GitHub。
Https Certificate pinning for Flutter
This project is based on ssl_pinning_plugin
Any help is appreciated! Comment, suggestions, issues, PR's!
In your flutter or dart project add the dependency:
dependencies:
...
http_certificate_pinning: 3.0.1
To get SHA256 certificate fingerprint run in console:
openssl x509 -noout -fingerprint -sha256 -inform pem -in [certificate-file.crt]
The Result is like:
'59:58:57:5A:5B:5C:5D:59:58:57:5A:5B:5C:5D:59:58:57:5A:5B:5C:5D:59:58:57:5A:5B:5C:5D:59:58:57:5A:5B:5C:5D'
import 'package:http_certificate_pinning/http_certificate_pinning.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");
}
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");
}
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
);
return secure.contains("CONNECTION_SECURE");
} catch(e) {
return false;
}
}