Websphere 密钥集未获取最新密钥

Websphere keyset not get the latest key

我的 Websphere 键集有问题。我使用 public 密钥创建密钥库,该密钥是在另一台计算机上使用 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 中创建密钥集,如下图所示:

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 中找不到任何密钥,但我不知道我哪里做错了。

提前感谢您的支持。

Reggard!

经过几天的寻找,我找到了解决办法。为了访问 KeySet,我直接访问了 KeyStore 而不是密钥,但是 X509 证书可以创建 public 密钥并使用它来加密任何文本。

    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 中创建密钥库的名称。