获取debug.keystore和SHA1码
在开发百度地图时,需要使用keystore,并为此做出笔记,记录一下debug.keystore的生成,和获取SHA1码
第一步: 运行cmd.exe 进入DOS命令界面
第二步: C盘用户目录下找到.android文件夹,并进入该文件夹(C:\Users\Administrator.android)
第三步: 运行keytool -list -v -keystore debug.keystore
第四步: 输入口令:android
第五步: 界面显示
*******************************************
*******************************************
输入密钥库口令:
密钥库类型: JKS
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: androiddebugkey
创建日期: 2018-11-6
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: C=US, O=Android, CN=Android Debug
发布者: C=US, O=Android, CN=Android Debug
序列号: 1
有效期为 Wed Jun 27 15:33:02 CST 2018 至 Fri Jun 19 15:33:02 CST 2048
证书指纹:
MD5: EF:F7:BD:07:9E:CF:BD:EF:23:A5:D8:69:D5:CF:17:E7
SHA1: 7A:07:30:56:8F:63:C3:B8:11:BD:44:EA:F0:9D:49:CC:19:83:7D:58
SHA256: 6E:86:69:D7:F9:12:40:DA:85:66:05:78:2B:CD:BC:82:B6:82:07:DE:72:18:1A:BC:2E:EB:EB:AD:3B:CC:43:1D
签名算法名称: SHA1withRSA
主体公共密钥算法: 1024 位 RSA 密钥
版本: 1
*******************************************
*******************************************
第六步: 获取相关信息并保存,.android
文件夹下会生成一个 debug.keystore
文件,这个就是创建开发模式的签名文件,并拷贝出来使用
注:
1. 开发是获取第五步的重要数据,和所产生的签名文件
在AndroidStudio进行打包签名时用到的数据
- 密钥密码:android
- 密钥别名:androiddebugkey
别名查看方式:我用AS查看的当前签名别名 图片地址 - 签名文件[debug]:debug.keystore文件
在开发时集成百度地图等第三方,会用到SHA1码
- SHA1: 7A:07:30:56:8F:63:C3:B8:11:BD:44:EA:F0:9D:49:CC:19:83:7D:58
2. 在创建debug.keystore文件时,会遇到以下问题
① 执行第三步的时候会遇到
keytool 错误: java.lang.Exception: 密钥库文件不存在: debug.keystore
java.lang.Exception: 密钥库文件不存在: debug.keystore
at sun.security.tools.keytool.Main.doCommands(Main.java:783)
at sun.security.tools.keytool.Main.run(Main.java:366)
at sun.security.tools.keytool.Main.main(Main.java:359)
很明显的错误,密钥库文件不存在,就是说.android文件夹下没有密钥库文件debug.keystore
解决方法
,从别处拷贝一个debug.keystore文件放到.android文件夹下;或者创建一个新的debug.keystore
②执行第五步后也会出现这样的警告
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore debug.keystore -destkeystore debug.keystore -deststoretype pkcs12"
迁移到行业标准格式 PKCS12。
警告就警告,不过我的好奇心还是容不得警告,就运行了建议使用“……”这条命令;
会提示“输入源密钥库口令:”
我输入之前所设置的口令:android,并按下回车键
会提示
*******************************************
*******************************************
已成功导入别名 androiddebugkey 的条目。
已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消
Warning:
已将 "debug.keystore" 迁移到 Non JKS/JCEKS。将 JKS 密钥库作为 "debug.keystore.old" 进行了备份。
*******************************************
*******************************************
下次再运行keytool -list -v -keystore debug.keystore
这条命令就不会有什么警告了
关于jks签名库的操作
查看jks签名库里的签名信息:
keytool -v -list -keystore keystore.jks
更改别名:
keytool -changealias -keystore my.jks -alias myalias -destalias otheralias
删除别名:
keytool -delete -alias myalias -keystore my.jks -storepass jkspassword
查看.apk包里的签名详细:
jarsigner -verify -verbose -certs app-release.apk
通过命令生成密钥库和别名
keytool -genkey -alias myalias -keyalg RSA -keystore my.jks -keysize 2048 -validity 9125 -dname "CN=FirstAndLastName, OU=OrganizationalUnit, O=Organization, L=CityOrLocality, ST=StateOrProvince, C=CountryCode, EMAILADDRESS=email@gmail.com"
----注:-keyalg:加密算法 -keysize:加密位数 -validity:有效期(天) -dname:证书详细信息
导出证书:
keytool -export -alias myalias -keystore my.jks -file myalias.crt -storepass jkspassword
打印证书信息:
keytool -printcert -file myalias.crt
将证书导入到密钥库并生成别名
keytool -import -alias myotheralias -file myalias.crt -keystore my1.jks -storepass jkspassword
修改别名里的信息,注MD5的值也会同时被修改
keytool -selfcert -alias myalias -keypass aliaspassword -keystore my.jks -storepass jkspassword -dname "CN=FirstAndLastName1, OU=OrganizationalUnit1, O=Organization1, L=CityOrLocality1, ST=StateOrProvince1, C=CountryCode1, EMAILADDRESS=email1@gmail.com"