gpt4 book ai didi

java - 从 Java 中的 .p12 文件中获取 PrivateKey 对象

转载 作者:IT老高 更新时间:2023-10-28 21:10:21 26 4
gpt4 key购买 nike

正如标题所示,我有 .p12 文件,用于访问 google 服务帐户 api。为了获得连接到 api 的凭据,有一个字段 .setServiceAccountPrivateKey(PrivateKey privateKey)。那么,我能做到这一点的最简单方法是什么?我的类路径中有一个资源文件夹,所以如果我在其中添加 p12 文件,我可以从 getClass().getResource() 作为 inputStream 或 URL 获取资源。我尝试了 URL 方法,但它不起作用(尝试从 URL.toURI() 创建文件对象时出现“URI 不是分层”错误)。

最佳答案

您可以使用 ClassLoader.getResourceAsStream(String) 方法加载您的 .p12 文件,将其加载到 KeyStore,然后他们从 KeyStore 中获取 key 。

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: PKCS12
Keystore 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 - 从 Java 中的 .p12 文件中获取 PrivateKey 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18621508/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com