如何为keystore创建属性文件?

时间:2013-08-19 06:03:40

标签: java pdf-generation itext digital-signature

我创建了一个密钥库并提取了公钥。为了使用密钥库,我创建了一个keyproperties.properties文件,但我不确定名为“PRIVATE”的属性。无论是路径密码还是私钥密码,我都很困惑。

  1. 属性文件 - > .properties扩展名
  2. 数据不是来自任何地方,我使用的是静态数据。
  3. 私营>用于获取私钥的密钥库路径
  4. 这是我的代码片段:

    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());
    }
    

1 个答案:

答案 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

在编写更多代码之前,请仔细阅读文档。阅读文档将为您节省大量时间。