背景:在 uni-app 开发中使用自有证书,主要是为了提升应用的安全性、控制证书的生命周期与管理、提高身份验证和信任度,尤其是在对数据保护和防止未授权访问有较高要求的场合。根据应用的需求和安全性要求,选择合适的证书管理方式是非常重要的。
📜 签名证书在 Android 的作用
简单说就是(签名证书就是你的「开发身份证」,也是你应用的「防伪标签」。):
✅ 保证应用的来源可靠 + 被系统信任
✅ 防止应用被别人恶意篡改
内容 | 解释 |
---|---|
身份认证 | 签名证书证明这个 APK 是你自己打包出来的,不是别人伪造的。 |
防止篡改 | 如果有人拿到你的 APK 改了代码、打包发布,签名会对不上,系统直接安装失败。 |
应用升级验证 | Android 系统在更新 App 时,会比对「新旧 APK 的签名」,只有签名一样才允许升级。签名变了,用户手机会报「安装包签名不一致」错误,更新失败。 |
上架要求 | 如果你要发布到各大应用商店(比如华为、应用宝、小米、Google Play),必须有正确的签名证书,不然根本不给审核上架。 |
准备工作:
1.安装jdk
2.配置环境
3.生成密钥
4.项目中应用
可从Oracle官方下载jre安装包
可以通过以下方式,检测是否安装
**
1. 安装jdk
**
下载完成点击exe文件按弹出界面一直下一步直到完成(建议不修改文件存放地址)
不更改路径会在出现一个这样的文件夹
**
2.配置环境
**
配置环境变量:配置完点击确定(没有成功-再次重复此步骤查看path设置)
可以通过cmd(win + r)命令,验证是否安装成功
到此----环境已经安装完成
**
3.生成密钥
**
使用keytool -genkey命令生成证书
(keytool: 是 Java 自带的工具,用于生成和管理密钥库、证书和公钥基础设施(PKI)相关的内容。你提到的命令生成一个 RSA 密钥对,并创建一个密钥库。下面逐一解释每个选项的含义)
keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore
注:
> 选项解释:
-genkey:
> 这个选项表示你要生成一个新的密钥对(一个公钥和一个私钥)。密钥对通常用于加密通信、签名等。
-alias testalias:
> alias 是为生成的密钥对指定一个名称(别名)。这个别名用于以后引用密钥对。例如,在密钥库中,如果你有多个密钥对,每个都可以用一个唯一的别名来区分。在这里插入代码片在这里,testalias 就是生成的密钥对的别名。
-keyalg RSA:
> keyalg 指定密钥对的算法。这里使用的是 RSA 算法,它是最常用的公钥加密算法之一。RSA 支持公钥加密和私钥解密,也可以用于数字签名。
-keysize 2048:
> keysize 指定密钥的大小。2048 表示密钥长度为 2048 位。一般来说,密钥长度越大,安全性越强。2048 位在 RSA 中被认为是一个合适的安全标准。如果你选择更大的值(如 4096 位),安全性更高,但计算性能会受到影响。
> -validity 36500:
> validity 指定密钥对的有效期,单位是天。在这个例子中,36500 天相当于 100 年。也就是说,生成的密钥对会在 100 年后失效。一般情况下,你会根据需求设定合适的有效期,过期后需要重新生成密钥对。
> -keystore test.keystore:
keystore 指定密钥库文件的路径和名称。密钥库是一个存储证书和私钥的容器。在这个例子中,密钥库的文件名是 test.keystore,它将被保存在当前目录。你可以指定一个不同的文件路径来存储密钥库。密钥库通常是一个 .jks 或 .p12
> 文件(Java 密钥库和 PKCS12 格式)。如果指定的文件不存在,keytool 会自动创建它。
步骤
查看有没生成成功证书信息:
keytool -list -v -keystore test.keystore
Enter keystore password: //输入密码,回车
会输出以下格式信息:
别名: testalias
创建日期: 2024-12-30
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=long, OU=qz, O=qz, L=cd, ST=sc, C=zg
发布者: CN=long, OU=qz, O=qz, L=cd, ST=sc, C=zg
序列号: 2a0421d3
生效时间: Mon Dec 30 14:38:32 CST 2024, 失效时间: Wed Dec 06 14:38:32 CST 2124
证书指纹:
SHA1: 1F:A9:35:F9:2C:CD:61:83:39:33:CD:83:AC:B4:72:89:39:F2:EE:C1
SHA256: 7B:62:EE:1C:BF:71:03:38:B0:32:36:BA:05:A2:74:52:9E:36:D9:1D:60:87:F4:75:AA:AD:FB:25:25:0C:79:DF
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 19 D4 DB 98 8E C0 FF BB B1 B8 C4 91 1C 82 88 88 ................
0010: 99 2D E7 3F .-.?
]
]
秘钥文件地址默认在:
C:\Users\long\test.keystore
**
4.项目中应用
**
在开发工具中设置填写对应的信息
最后最后:
在remade.md文档注释(便于协同开发和维护)
在这里插入图片描述
uniapp配置
## app打包证书
文件:test.keystore
密码:123456
别名: testalias
创建日期: 2024-12-30
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=long, OU=qz, O=qz, L=cd, ST=sc, C=zg
发布者: CN=long, OU=qz, O=qz, L=cd, ST=sc, C=zg
序列号: 2a0421d3
生效时间: Mon Dec 30 14:38:32 CST 2024, 失效时间: Wed Dec 06 14:38:32 CST 2124
证书指纹:
SHA1: 1F:A9:35:F9:2C:CD:61:83:39:33:CD:83:AC:B4:72:89:39:F2:EE:C1
SHA256: 7B:62:EE:1C:BF:71:03:38:B0:32:36:BA:05:A2:74:52:9E:36:D9:1D:60:87:F4:75:AA:AD:FB:25:25:0C:79:DF
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥