我对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中找到任何密钥,但是我不知道自己可能在做什么。
预先感谢您的支持。
雷加德!
答案 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中创建密钥库的名称。