【发布时间】:2017-10-16 17:34:21
【问题描述】:
我有JAVA_HOME=C:\Users\myuser\jdk1.8.0_65
Eclipse 中的 JRE 系统库指向 C:\Users\myuser\jdk1.8.0_65
java -version 给C:\Users\myuser\jdk1.8.0_65
导入证书:
C:\Users\myuser\jdk1.8.0_65\bin\keytool.exe -importcert -trustcacerts -keystore C:\Users\myuser\jdk1.8.0_65\jre\lib\security\cacerts -storepass changeit -noprompt -alias ldap -file C:\Users\myuser\certificates\ldap_cer.cer
Keytool 列表给出:
C:\Users\myuser>keytool -list
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 0 entries
当我尝试使用以下程序检查证书时,我可以看到条目,为什么keytool -list 没有给我相同的结果?如何添加证书?我错过了什么?
package com.;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.Certificate;
import java.util.Enumeration;
public class HandShake {
static FileInputStream is;
public static void main(String[] args) {
try {
File file = new File("C://Users//myuser//jdk1.8.0_65//jre//lib//security//cacerts");
System.setProperty("javax.net.ssl.keyStore", file.getAbsolutePath());
System.out.println(System.getProperty("javax.net.ssl.keyStore"
));
is= new FileInputStream(file);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
String password = "changeit";
keystore.load(is, password.toCharArray());
Enumeration enumeration = keystore.aliases();
while(enumeration.hasMoreElements()) {
String alias = (String)enumeration.nextElement();
if(alias.equals("ldap")){
System.out.println("alias name: " + alias);
Certificate certificate = keystore.getCertificate(alias);
System.out.println(certificate.toString());
}
}
} catch (java.security.cert.CertificateException e4) {
e4.printStackTrace();
} catch (NoSuchAlgorithmException e1) {
e1.printStackTrace();
} catch (FileNotFoundException e2) {
e2.printStackTrace();
} catch (KeyStoreException e3) {
e3.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(null != is)
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
【问题讨论】: