Websphere密钥集未获取最新密钥

时间:2018-09-20 16:17:39

标签: java websphere keystore keytool keyset

我对Websphere键集有疑问。我使用使用以下命令使用keytool在另一台计算机上生成的公共密钥创建密钥库:

keytool -import -noprompt -alias eeccstore -keystore eeccstore.jks -file D:\Keys\eecc_public.key -storepass password

然后,在Websphere Server中,如下图所示创建KeyStore:

密钥库用法:密钥集密钥库

Create keystore in Websphere Server

我使用与Keytool创建KeyStore相同的密码。

然后在下图中,按如下所示在WebSphere Server中创建keySet:

Create keyset in Websphere Server

在我的Java代码中,我按如下方式使用键集:

KeySetHelper ksh = KeySetHelper.getInstance();
KeyPair key = (KeyPair)ksh.getLatestKeyForKeySet("eeccKeySet");

控制台会显示以下内容:

java.lang.NullPointerException
com.ibm.ws.crypto.config.WSKeySet.getLatestKey(WSKeySet.java:257)
com.ibm.websphere.crypto.KeySetHelper.getLatestKeyForKeySet

我了解服务器无法在KeySet中找到任何密钥,但是我不知道自己可能在做什么。

预先感谢您的支持。

雷加德!

1 个答案:

答案 0 :(得分:0)

经过几天的搜索,我找到了解决方案。我直接访问KeyStore而不是获取密钥,而不是访问KeySet,但是带有wich的X509证书可以创建公共密钥,并使用它来加密任何文本。

    char [] passch = password.toCharArray();

    com.ibm.crypto.provider.JavaKeyStore keystore = new JavaKeyStore();

    keystore.engineLoad(new FileInputStream(new File(pathKeyFileJKS)), null);
    KeyStore.TrustedCertificateEntry privKeyEntry =  (TrustedCertificateEntry) 
    keystore.engineGetEntry("eecc-KeyStore", new KeyStore.PasswordProtection(passch)); 

    X509CertImpl cert = (X509CertImpl) privKeyEntry.getTrustedCertificate();

    cert.checkValidity();

    PublicKey publicKey  = cert.getPublicKey();

其中 password 变量包含用于创建eecc_public.key文件的密码,而 pathKeyFileJKS 包含创建jks文件的路径和“ eecc- KeyStore” 是用于在WebSphere Server中创建密钥库的名称。