用途
我們?cè)诟叩隆俣鹊冗@些第三方SDK的集成和注冊(cè)時(shí),都會(huì)讓我們提供包名或者證書指紋(MD5、SHA-1、SHA-256)等信息,這些信息如何獲取呢?有多種方法。
準(zhǔn)備工作
安裝好JDK。最好配置好環(huán)境變量(為啥要配置環(huán)境變量我就不解釋了,反正大佬們都懂,小白們起碼也知道怎么配,都是基本功了),這樣用起來(lái)更方便。
我們主要用的是jdk的bin目錄中的keytool工具。
動(dòng)手
情況1:證書在手
這種情況下,我就是開(kāi)發(fā)者,我有keystore或者jks文件。可以使用命令直接查看證書信息。
keytool -list -v -keystore [keystore或jks文件路徑] -storepass [密鑰庫(kù)密碼]
-storepass 也可以不寫,回車后會(huì)提示輸入密碼。
關(guān)于這個(gè)命令用法的詳細(xì)介紹,我們可以看一下命令本身提供的幫助輸出:
keytool -list [OPTION]...
列出密鑰庫(kù)中的條目
選項(xiàng):
-rfc 以 RFC 樣式輸出
-alias <alias> 要處理的條目的別名
-keystore <keystore> 密鑰庫(kù)名稱
-storepass <arg> 密鑰庫(kù)口令
-storetype <storetype> 密鑰庫(kù)類型
-providername <providername> 提供方名稱
-providerclass <providerclass> 提供方類名
-providerarg <arg> 提供方參數(shù)
-providerpath <pathlist> 提供方類路徑
-v 詳細(xì)輸出
-protected 通過(guò)受保護(hù)的機(jī)制的口令
使用 "keytool -help" 獲取所有可用命令
情況2:手中只有用目標(biāo)證書打包出來(lái)的apk包
有的時(shí)候,是給別人幫忙,或者僅僅是查看一下別人家apk的信息,這時(shí)候,我們就需要稍微繞點(diǎn)彎路。我們知道,apk打包之后,包內(nèi)會(huì)保存有RSA文件,這相當(dāng)于是證書的公鑰,用來(lái)給系統(tǒng)驗(yàn)證apk包簽名有效性的(非對(duì)稱加密的知識(shí)如果還不太了解,大家可以去查一下,這里暫時(shí)不再贅述)。而一般第三方廠商校驗(yàn)的,也就是這個(gè)公鑰證書的指紋。
解壓縮apk文件(初級(jí)開(kāi)發(fā)者們不要吃驚,apk包其實(shí)就是一個(gè)zip);
找到RSA文件:apk包/META-INF/xxx.RSA。(這個(gè)xxx一般是簽名證書的別名,不重要);
使用命令讀取RSA的信息:
keytool -printcert -file [RSA文件路徑]
- 關(guān)于此命令的用法介紹:
keytool -printcert [OPTION]...
打印證書內(nèi)容
選項(xiàng):
-rfc 以 RFC 樣式輸出
-file <filename> 輸入文件名
-sslserver <server[:port]> SSL 服務(wù)器主機(jī)和端口
-jarfile <filename> 已簽名的 jar 文件
-v 詳細(xì)輸出
使用 "keytool -help" 獲取所有可用命令
結(jié)束
拿到了輸出信息之后,想必大家已經(jīng)知道要用什么了。有的時(shí)候可能還要考慮大小寫,還有去除冒號(hào)之類的,這個(gè)具體要看人家第三方需要什么格式了,睜大眼睛看好了。