Loading... ## Keytool和 keystore Keytool 是一个有效的安全钥匙和证书的管理工具。keystore 是证书库和保存有私钥信息的文件。 在keystore里,包含两种数据: 1. 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) 2. 可信任的证书实体(trusted certificate entries)——只包含公钥 Keytool可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。 证书库里可以包含多个证书,它们通过别名区分。(建议只保存一个证书,证书库与证书密码保持一致) ## 默认调试keystore的生成 ```cmd keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999 ``` 意思是: -keyalg 密钥加密算法为RSA; -genkeypair 和 -genkey 是一样的,添加密钥对。 -alias 添加条目 androiddebugkey -keypass 条目密码 android -keystore 证书库名字 debug.keystore -storepass 证书库密码 android -dname 证书实体信息 名称地址等信息 -validity 到期时间 9999 天 ## 发布keystore的生成 首先需要注意的是,在Godot中,证书库密码需要和证书密码保持一致。所以在生成时需要注意。 ```cmd keytool -v -genkey -v -keystore mygame.keystore -alias mygame -keyalg RSA -validity 10000 ``` `mygame.keystore` 是证书库名字 `alias` 后面的 `mygame` 是一个条目的名字 输入该命令后,会弹出各类信息的填写,包括证书库密码,证书实体信息(姓名,所在地)等,最后会问你的证书条目的密码是否要与证书库密码保持一致,答是即可。 最后会在当前目录下生成 mygame.keystore 文件 ## 查看证书库里的证书信息 ```cmd keytool -list -v -keystore mygame.keystore -storepass storepasswd ``` ## 查看应用的证书(签名)信息 ### 方法1: 首先解压apk包,然后进 META-INF 文件夹,其中保存了公钥等信息 ```cmd keytool -printcert -file xxxx.RSA ``` 其中 `xxxx.RSA` 是文件名,根据实际情况填写即可 ### 方法2: 注意:apk 文件名中不能包含空格。 ```cmd keytool -printcert -jarfile MyApp.apk ``` ## 给空应用手动签名 ```cmd jarsigner -keystore 密钥库名 xxx.apk 密钥条目名 ``` 根据提示输入密码即可 ## 一些例子 ```cmd keytool -genkey -dname "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN" -alias myCA -keyalg RSA -keysize 1024 -keystore myCALib -keypass 654321 -storepass 123456 -validity 3650 ``` 以上命令将生成一个别名为myCA的自签名证书,证书的密码为654321,证书中实体信息为 "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN",存储在名为myCALib.keystore文件中(如果没有将自动生成一个),这个keystore的密码为123456,密钥对产生的算法指定为RSA,有效期为10年。 ```cmd keytool -genkey -alias duke -keypass dukekeypasswd -keystore debug.keystore ``` 以上命令可以添加一个证书到证书库(debug.keystore)里 最后修改:2020 年 03 月 31 日 03 : 09 PM © 允许规范转载