我试图使用Jmeter中的JSR223 Sampler中的Groovy检索存储在Windows机器上的“Local Computer\Personal\Certificates”路径中的证书。我用下面的代码段测试我的代码:
import java.security.KeyStore;
import java.security.cert.X509Certificate;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import java.security.MessageDigest;
import java.io.IOException;
try {
KeyStore keystore = KeyStore.getInstance("Windows-MY");
keystore.load(null, null);
String keystoreProvider = keystore.getProvider().getName();
Enumeration<String> aliases = keystore.aliases();
while (aliases.hasMoreElements()) {
String alias = aliases.nextElement();
Certificate cert = keystore.getCertificate(alias);
if (cert instanceof X509Certificate) {
X509Certificate x509Cert = (X509Certificate) cert;
log.info("Location: " + keystoreProvider);
log.info("Alias: " + alias);
log.info("Subject: " + x509Cert.getSubjectDN());
log.info("Issuer: " + x509Cert.getIssuerDN());
log.info("Serial Number: " + x509Cert.getSerialNumber());
log.info("Valid From: " + x509Cert.getNotBefore());
log.info("Valid To: " + x509Cert.getNotAfter());
log.info("------------------------------------------------");
}
}
} catch (Exception e) {
log.error("Error: " + e.getMessage());
}
然而,这段代码检索各种证书,但它似乎没有检索位于“Personal\Certificates”中的证书。这可能是由于KeyStore示例的问题吗?是什么导致了这种差异?
1条答案
按热度按时间jmo0nnb31#
看起来个人证书或本地证书在Java的更高版本之前是不可能的。
https://bugs.openjdk.org/browse/JDK-6782021
JDK 17或19+。