我创建了一个密钥库并提取了公钥。为了使用密钥库,我创建了一个keyproperties.properties
文件,但我不确定名为“PRIVATE”的属性。无论是路径密码还是私钥密码,我都很困惑。
.properties
扩展名这是我的代码片段:
public static void main(String[] args)throws Exception {
Properties properties = new Properties();
String path = properties.getProperty("PRIVATE");
KeyStore ks = KeyStore.getInstance("pkcs12", "BC");
ks.load(new FileInputStream(path), keystore_password.toCharArray());
}
答案 0 :(得分:3)
使用Properties
创建new Properties()
对象时,尚未在该对象中存储任何数据。因此,执行properties.getProperty("PRIVATE")
没有意义,因为它总会返回null
。
您声称自己制作了.properties
文件,但我没有看到您在任何地方加载Properties
对象:
properties.load(new FileInputStream(readerForProperties));
您使用可以读取该文件的API documentation在.properties
文件中定义的任何属性(请参阅Reader
以了解如何创建此类文件)现在将是可以使用getProperty()
方法访问。
您正在使用path
变量创建用于加载FileInputStream
的{{1}}。在这种情况下,path必须是密钥库的路径。
好像你复制/粘贴了一个我没有阅读过的例子(或者至少是:不理解)documentation。
在我的示例中,我使用KeyStore
作为属性名称,但这无关紧要。如果您希望将其命名为"Private"
或"pathToKS"
甚至"keystore"
,则可以这样做。
就我而言,我的"banana"
文件如下所示:
.properties
所以在我的情况下,PUBLIC c:/examples/signatures/public.cer
ROOTCERT c:/examples/signatures/CACertSigningAuthority.crt
PRIVATE c:/examples/signatures/private.p12
PASSWORD secret
将返回我的密钥库,properties.getProperty("PRIVATE")
将返回我的公钥,properties.getProperty("PUBLIC")
将返回证书颁发机构的公钥,properties.getProperty("ROOTCERT")
将返回密钥库的密码以及存储在与我的公钥对应的密钥库中的私钥(这些密码不必相同)。
如果您希望将路径存储到密钥库,请执行以下操作:
properties.getProperty("PASSWORD")
你需要这样做:
banana c:/examples/signatures/private.p12
在编写更多代码之前,请仔细阅读文档。阅读文档将为您节省大量时间。