Android部署打包apk应用,需要用上数字证书进行签名,来表明身份的。
成都创新互联主要企业基础官网建设,电商平台建设,移动手机平台,重庆小程序开发等一系列专为中小企业专业公司产品体系;应对中小企业在互联网运营的各种问题,为中小企业在互联网的运营中保驾护航。
安卓证书可以使用Java的keytool工具生成,以下是window平台生成的方法:
一、安装java
可访问Oracle官方去安装java:
下面已安装目录“C:\Users\xabsc\Downloads\jdk-16.0.1”为例,实际操作请修改自己的安装目录
安装java完成后,打开安装目录,找到bin文件夹,如果里面有keytool.exe这个文件,那么下面的安卓证书就能搞了
注意:1. testalias是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
2. test.keystore是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
也不知到当初是那条筋搭错了,将证书的时间弄得这么短,在这里强烈的提醒一下各位,在生成证书的时候一定要注意一下时间,一般将时间设在25年以上就可以了(上架到google play是必须在25年以上的)。现在证书过期了,那么没办法,只能换了,直接替换证书会有一个问题就是需要将之前的旧证书的app卸载之后才能重装。这就问题大了。这样用户的数据不就没了吗?看来还是得找别的方案。
用过Android studio的打包就会知道,在签名那块是有V1和V2两种的,勾选就可以了,使用 gradlew 命令去打包的也可以在 build.gradle(app) 中设置的:
V2,解决了V1不安全的问题。V3要解决的问题就是让不同证书之间可以平滑过渡。(但是V3签名方式是有限制的,下面再说)
看了一下官方,发现签名方式有V3了(悄悄地告诉你,还有V4了)。于是就看了一下,大致的签名方式是这样的:
首先,你得准备一些文件:
old_project.jks (旧的证书,在我这就是我那过期的证书)
new_project.jks (新的)
old.apk(一个使用旧证书打包的apk,没有证书的也行)
apksigner(用于apk签名的工具,请使用29.0.2以上的,这个是在sdk中build-tools文件夹下找到的)
第二步:这一步称之为轮替,也叫沿袭,生成 lineage ,通过下面这条命令就可以了:
这样就会在当前文件夹下新生成一个名为“lineage”的文件。(这个文件很重要),这一步是必须旧证书在前,新证书在后,这样才是一个正确的轮替。(虽然换过来也是成功的)
第三步:使用上面所有的东西(包括生成的lineage)作V3签名:
这样就完成了,你可以通过命令去检查一下是否已经是启用了V3
可以看到V3的那一行已经是true了。
真正研究过之后发现,V3签名,很是鸡肋:
首先,V3是android 9.0开始支持的。也就是说如果你的手机是Android9.0之前的,都不能覆盖安装,第二,由于证书过期了,那么就是说无法上架到应用宝(可能有些应用市场是能上的,但是大多数应用市场是上不了的),那么使用V3签名方式打包之后的apk,由于打包过程使用了个密钥库(也就是两个 .jks 文件),你猜猜apk的签名是谁的呢?使用 keytool -list -printcert -jarfile 命令查看了一下,是旧的!!!(也就是轮替的时候放在前的证书)。所以依旧是上架失败的!!!白忙活了。除非应用市场将其检验方式换成V3的应该就可以了,可是并非所有版本的Android系统都可以直接覆盖安装,所以就算是安全上架了,系统版本低的还是要卸载才能安装。可能应用市场也是基于这个考虑吧。
如果需要更详细的了解V3签名方案,可以查看官方文档 Apk签名方案V3
更加详细的签名操作可以看这里 apksigner
希望大家在开始项目的时候一定要检查一下使用的证书是不是有问题。如果有,赶紧重新弄一个!!!!!
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
客户端会验证公钥是否有效。如果没有问题,就回生成一个随机值,并对其进行加密,(这个随机值其实就是对称加密的私钥)
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容进行对称加密。
首先用的是非对称加密。把公钥给客户端,私钥在服务端。客户端用公钥验证通过后,会生成私钥进行对称加密。然后传给后台。
为什么这么做呢。
图中的方法是验证服务端购买的证书。如果是信任所有证书的。这三个重写的方法不需要做操作。直接用默认即可。
详细解析 HTTP 与 HTTPS 的区别
非对称加密和对称加密的区别
如有错误。还望指正,非常感谢。
从Android Q版本开始,已经不能通过用户导入burpsuite证书拦截App的请求,应用App的请求默认不再信任用户安装的证书,除非另有说明,否则默认只信任系统证书。
在手机上查看系统证书: Settings - Security - Trusted Credentials
说明:certificates说明的src="system"表示信任系统的CA证书,src="user"表示信任用户导入的CA证书