2017-06-02 20 views
1

我正在構建一個密鑰庫,我將隱藏我的授權和刷新令牌。我在API 19上。查看KeyPairGeneratorSpec的示例。大多數示例使用虛擬證書(X500Principal)。我沒有很多證書。我不確定我在哪裏得到這個「主題」。這是用於生成簽名APK的證書嗎? IE https://developer.android.com/studio/publish/app-signing.html
還是我從CA這樣的組織獲得證書?Android Keystore KeyPairGeneratorSpec我在哪裏可以得到X500Principal

這就是說,一旦我有這個數據,我該如何轉換它到這個X500?如何將數據映射到x500?

由於我的公司處理應用程序簽名的方式,前者會有問題。我不確定我能夠訪問它。

KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(this) 
         .setAlias(k) 
         .setSubject(new X500Principal("CN=Sample Name, O=Android Authority")) 
         .setSerialNumber(BigInteger.ONE) 
         .setStartDate(start.getTime()) 
         .setEndDate(end.getTime()) 
         .build(); 
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore"); 

回答

1

簽署的有關谷歌分佈.apk文件Play商店和加密使用AndroidKeyStore敏感的用戶數據是不同的。前者在開發機器上(即您的筆記本電腦或臺式機)使用Java密鑰庫(jks)進行,而另一次則在安裝應用程序的手機上進行。

您不需要獲得X500Principal的認證機構。你報的示例代碼是正確的,你只是用它替換,例如,你的應用程序名稱和組織:

new X500Principal("CN=StarWind, O=StarWindOrganization"); 

如果你想了解什麼不同的縮寫的意思,請參考Wikipedia entry for Lightweight Directory Access Protocol但只是例如,「CN」表示「通用名稱」,「O」表示組織。您在這裏提供的屬性僅僅是爲了形成一個唯一的條目,就像您在Java中形成一個唯一的包名稱(如com.starwind.myapp)一樣。

如果你發現它令人困惑,你可以看看Scytale這是Android KeyStore的包裝。即使你最終沒有使用該庫,該代碼對於如何使用KeyStore也非常有用。

相關問題