Flutter自签名SSL证书如何配置与应用?详解使用疑问解答!
- 虚拟主机
- 2026-01-17
- 9
Flutter自签名SSL证书是一种在开发Flutter应用时使用的SSL证书,用于实现应用的安全通信,自签名SSL证书由开发者自己生成,不需要向第三方CA机构申请,本文将详细介绍Flutter自签名SSL证书的生成、配置和使用方法。
Flutter自签名SSL证书的生成
-
准备工作
- 安装OpenSSL:在Windows系统中,可以从OpenSSL官网下载并安装;在Linux系统中,可以使用包管理器安装,如Ubuntu系统中使用sudo aptget install openssl。
- 准备一个CA私钥文件(ca.key)和一个CA证书文件(ca.crt)。
-
生成CA私钥和证书
-
使用OpenSSL生成CA私钥和证书:
openssl genpkey algorithm RSA out ca.key pkeyopt rsa_keygen_bits:2048 openssl req x509 new nodes key ca.key sha256 days 3650 out ca.crt -
配置CA证书请求文件(ca.cnf),内容如下:
[ ca ] default_ca = CA_default [ CA_default ] dir = ./demoCA certs = $dir/certs crl_dir = $dir/crl new_certs_dir = $dir/certs database = $dir/index.txt serial = $dir/serial RANDFILE = $dir/.rand private_key = $dir/ca.key certificate = $dir/ca.crt default_md = sha256 policy = policy_strict [ policy_strict ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 2048 default_md = sha256 prompt = no distinguished_name = CA_default req_extensions = v3_ca x509_extensions = v3_ca [ v3_ca ] basicConstraints = CA:TRUE keyUsage = cRLSign, keyCertSign
-
-
生成服务器私钥和证书请求

-
使用OpenSSL生成服务器私钥和证书请求:
openssl genpkey algorithm RSA out server.key pkeyopt rsa_keygen_bits:2048 openssl req new key server.key out server.csr -
配置服务器证书请求文件(server.cnf),内容如下:
[ req ] default_bits = 2048 default_md = sha256 prompt = no distinguished_name = server_distinguished_name req_extensions = v3_req [ server_distinguished_name ] countryName = CN stateOrProvinceName = Zhejiang localityName = Hangzhou organizationName = Example Co., Ltd. organizationalUnitName = IT Department commonName = server.example.com emailAddress = admin@example.com
-
-
生成服务器证书
-
使用OpenSSL生成服务器证书:
openssl ca in server.csr out server.crt config ca.cnf
-
Flutter自签名SSL证书的配置
-
Android配置

-
将生成的server.crt和server.key文件复制到Android项目的app/src/main/assets目录下。
-
在app/src/main/AndroidManifest.xml文件中,添加以下权限:
<usespermission android:name="android.permission.INTERNET" /> -
在app/src/main/java/你的包名/MainActivity.java文件中,添加以下代码:
import android.os.Bundle; import io.flutter.embedding.android.FlutterActivity; import io.flutter.embedding.engine.FlutterEngine; import io.flutter.plugins.webviewflutter.WebViewFlutterPlugin; public class MainActivity extends FlutterActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FlutterEngine flutterEngine = getFlutterEngine(); WebViewFlutterPlugin.registerWith(flutterEngine.getPlugins()); } }
-
-
iOS配置

-
将生成的server.crt和server.key文件复制到iOS项目的Runner目录下。
-
在Runner/AppDelegate.swift文件中,添加以下代码:
import UIKit import Flutter @UIApplicationMain class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) > Bool { GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }
-
FAQs
问题1:为什么我的Flutter应用在连接自签名SSL证书的服务器时提示“SSL peer authentication failed”错误?
解答1:这是因为Flutter应用默认信任的是受信任的CA机构签发的证书,自签名SSL证书不受信任,需要手动配置Flutter应用信任该证书,在Android中,可以将自签名SSL证书添加到Android设备的信任列表中;在iOS中,可以将自签名SSL证书添加到iOS设备的信任列表中。
问题2:如何将自签名SSL证书添加到Android设备的信任列表中?
解答2:在Android设备上,进入“设置”>“安全”>“从SD卡安装证书”,选择自签名SSL证书文件,然后按照提示操作即可。
国内文献权威来源
- 《Android开发艺术探索》 周志明
- 《iOS开发实战》 马宁