从Java中的.p12文件获取PrivateKey对象
顾名思义,我需要Google服务帐户api访问所需的.p12文件。为了获得连接到api的凭据,有一个字段.setServiceAccountPrivateKey(PrivateKey
privateKey)。那么,最简单的方法是什么?我在类路径中有一个资源文件夹,因此,如果在其中添加p12文件,则可以从getClass()。getResource()中获取资源作为inputStream或URL。我已经尝试了URL方法,但是它不起作用(尝试从URL.toURI()创建File对象时出现“
URI不是分层的”错误)。
回答:
您可以使用ClassLoader.getResourceAsStream(String)
方法加载.p12文件,将其加载到KeyStore,然后他们从KeyStore获取密钥。
KeyStore keystore = KeyStore.getInstance("PKCS12");keystore.load(this.getClass().getClassLoader().getResourceAsStream("keyFile.p12"), p12Password.toCharArray());
PrivateKey key = (PrivateKey)keystore.getKey(keyAlias, p12Password.toCharArray());
ClassLoader.getResourceAsStream(String)
只要它们已经在类路径中,就可以从任何位置加载资源,而无需指定文件的路径。
keyAlias
是p12文件中与私钥对应的条目的名称。PKCS12文件可以包含多个条目,因此您需要某种方式来指示要访问的条目。别名是如何实现的。
如果不确定私钥的别名是什么,则可以keytool
从命令行使用实用程序列出p12文件的内容。此工具包含在所有JRE和JDK安装中。
keytool -list -keystore keyFile.p12 -storepass password -storetype PKCS12
输出量
Keystore type: PKCS12Keystore provider: SunJSSE
Your keystore contains 1 entry
yourKeyAlias, Sep 4, 2013, PrivateKeyEntry,
Certificate fingerprint (MD5): 48:A8:C4:12:8E:4A:8A:AD:58:81:26:90:E7:3D:C8:04
以上是 从Java中的.p12文件获取PrivateKey对象 的全部内容, 来源链接: utcz.com/qa/430093.html