如何在Flutter中实现类似JS的X509证书有效性校验功能
Flutter实现X509证书有效性校验
以下是对应你提供的JavaScript功能的Flutter实现,核心完成两项校验:证书与私钥是否匹配、证书是否在有效期内。
步骤1:添加依赖
在pubspec.yaml中引入所需依赖:
dependencies: x509: ^0.2.0 pointycastle: ^3.7.3
步骤2:实现校验函数
import 'dart:io'; import 'package:x509/x509.dart'; bool validCertificate(String certPem, String keyPem) { try { // 验证证书与私钥是否匹配 final context = SecurityContext(); context.useCertificateChainBytes(certPem.codeUnits); context.usePrivateKeyBytes(keyPem.codeUnits); // 解析证书,提取有效期截止时间 final cert = parsePem(certPem).first as X509Certificate; final validTo = cert.validity.end; // 检查证书是否未过期 return validTo.isAfter(DateTime.now()); } catch (e) { // 捕获密钥与证书不匹配的异常 if (e.toString().contains('OSSL')) { return false; } // 其他异常抛出,由上层处理 rethrow; } }
代码说明
- 密钥证书匹配校验:通过
SecurityContext加载证书链和私钥,若两者不匹配会触发OpenSSL底层异常,捕获该类异常后返回false。 - 有效期校验:借助
x509库解析PEM格式证书,获取有效期截止时间后与当前时间对比,判断证书是否处于有效周期内。 - 异常处理:仅针对密钥不匹配场景返回
false,证书格式错误等其他异常会重新抛出,方便上层做针对性处理。
内容的提问来源于stack exchange,提问作者redDwarf
相关产品推荐
相关产品推荐

