<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 17, 文章 - 1, 評論 - 0, 引用 - 0
    數據加載中……

    2015年6月7日

    Keystore 相關的一些概念

    把一些常見的 Key 相關的內容列在這,便于之后理解。

    1. JKS (Java KeyStore) 和 PFX (pkcs12) 都是常見的密鑰庫的格式,用于保存完整的證書密鑰對,證書鏈和信任證書信息,前者是 Sun 制定的,適用于 Java 世界,比如 Tomcat,Geronimo,Websphere 等,后者"據說"常用于 IIS (沒配置過) 等。JKS 相關的工具是 JDK 帶的 keytool,PFX 可以使用 openssl。

    2. JKS 中有存放的內容常見有兩類,一個是 PrivateKeyEntry, 包含了完整的證書密鑰對,證書鏈等信息,另外一個是 trustedCertEntry, 包含受信公鑰信息。可以使用 keytool -list -keystore 顯示。

    3. 一般使用工具生成 RSA 非對稱密鑰對之后,還會由第三方機構 (CA) 生成簽名,用于標識密鑰所有者的身份,所以通常我們會說,我們將證書下發給客戶端,此時的證書包括如下信息,公鑰,簽名信息等。

    4. 使用 JKS 存儲信息時,由于 Keystore 中可以存放多個密鑰信息,所以通過會使用 alias 標識,需要使用時,需要指定別名。另外,Keystore 本身可以使用 storepassword 保護,而針對每一個 key,也可以是使用 keypassword 保護。

    5. keytool 支持導入公鑰和其他 keystore,暫不支持導入 PrivateKeyEntry,此時若手中有私鑰和證書兩個信息,只能先倒入到 PFX 中,再導入到 JKS 中。

    openssl pkcs12 -export -in [my_certificate.crt] -inkey [my_key.key]
    -out [keystore.p12] -name [new_alias] -CAfile [my_ca_bundle.crt] -caname
     root

    keytool -importkeystore -deststorepass [new_keystore_pass]
    -destkeypass [new_key_pass] -destkeystore [keystore.jks] -srckeystore
    [keystore.p12] -srcstoretype PKCS12 -srcstorepass
    [pass_used_in_p12_keystore] -alias [alias_used_in_p12_keystore]

    6. JAR 簽名,主要是在 META-INF 目錄下,除了 MANIFEST.MF 之外,還有 *.SF 和 *.RSA 文件 (后綴隨簽名使用的算法會略有不同), MF 保存了 JAR 中每個文件的散列信息,一般使用 MD5 或者 SHA-1
    Name: AndroidManifest.xml
    SHA-256-Digest: vn9XTNvoXBMgbaxUqDoc4WUsWseMfRCQQRSR87+F/Hc=

    SF 文件使用 RSAwithSHA1, 針對 MF 中的每條信息再次生成簽名信息,另外針對整個 MF 也會生成簽名信息。
    Name: AndroidManifest.xml
    SHA-256-Digest: Pa/g6cA3KpnfBvCD/mgnyczjfLCSkAv2l9A+EVxaJlg=

    RSA 中是前述簽名所用證書等相關信息

    通常我們在讀取 Jar 文件的每個 Entry 時,如果 META-INF 目錄下有如上文件,會做簽名驗證,因為散列信息計算需要讀取文件內容,所用在調用 getCertifcate 方法時,需要讀一下流里面的內容,如果只是驗證的目的,讀取直接忽略即可,考慮讀取性能,可以指定 byte[] buffer 的大小,使用流的 skip 方法時,內部 ZipInputStream 中使用的是
    private byte[] tmpbuf = new byte[512];

    7. 一般而言,證書有兩種常見用途,一是用于傳輸加密,主要是 SSL,另外一個對文件進行簽名,比如 JarFile 相關,而 CA 頒發證書時,會在證書中指定其用途,從目前看,以上兩種不會同時生效,即若此證書聲明為用于 SSL,則無法用于對 JarFile 進行簽名,實際使用會發現 JarSign 時未顯示錯誤,但通過 JarEntry 獲取證書時一直為空。

    posted @ 2015-06-07 14:16 一直在努力 ! 閱讀(682) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 免费少妇a级毛片人成网| 亚洲av无码无线在线观看| 四虎免费久久影院| 成人黄色免费网址| 巨胸喷奶水www永久免费| 亚洲欧美日韩一区二区三区在线| 亚洲va久久久噜噜噜久久男同| 在线看片无码永久免费aⅴ | 国产精品1024永久免费视频| 国产vA免费精品高清在线观看| 亚洲中文字幕久久久一区| 亚洲AV电影院在线观看| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 99久久久国产精品免费无卡顿| 两个人日本WWW免费版| 亚洲AV无码一区二区乱子仑 | 抽搐一进一出gif免费视频| 亚洲AV日韩AV无码污污网站 | 在线观看免费中文视频| 91在线视频免费观看| 美美女高清毛片视频黄的一免费| 亚洲国产激情在线一区| 亚洲第一页在线视频| 久久国产精品亚洲综合 | 成人片黄网站色大片免费观看APP| 色吊丝性永久免费看码 | 国产美女做a免费视频软件| 在线观看日本免费a∨视频| 日韩av无码久久精品免费| 国产免费一区二区三区不卡| 国产高潮久久免费观看| 一级毛片免费一级直接观看| 老妇激情毛片免费| 国产精品亚洲专区无码牛牛| 亚洲高清乱码午夜电影网| 国产亚洲福利在线视频| 亚洲熟妇AV一区二区三区宅男| 亚洲色在线无码国产精品不卡| 亚洲一卡一卡二新区无人区| 在线观看亚洲AV日韩AV| 亚洲欧洲无码AV不卡在线|