Ich brauche zu extrahieren Ablaufdatum von SSL-Zertifikat auf der Webseite in Java überprüfen soll, beide unterstützen vertraut und selbst signiertes Zertifikat, wie zum Beispiel: 1.trusted https://github.com 2 .self signierte https://mms.nw.ru/wie SSL-Zertifikat Ablaufdatum programmatisch in Java
ich bereits einige Code kopieren, wie:
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
public class SSLTest {
public static void main(String [] args) throws Exception {
// configure the SSLContext with a TrustManager
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(new KeyManager[0], new TrustManager[] {new DefaultTrustManager()}, new SecureRandom());
SSLContext.setDefault(ctx);
URL url = new URL("https://github.com");//https://mms.nw.ru
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
System.out.println(conn.getResponseCode());
Certificate[] certs = conn.getServerCertificates();
for (Certificate cert :certs){
System.out.println(cert.getType());
System.out.println(cert);
}
conn.disconnect();
}
private static class DefaultTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
}
Die Fragen sind:
Wie das Ablaufdatum aus dem Zertifikat zu analysieren, in meinem Code die toString() gab das Datum aus, aber es ist schwer zu analysieren.
Wie kann ich die Zertifikatskette ermitteln, z. B. das GitHub-Zertifikat mit Ketten 3, woher weiß ich, von welchem Zertifikat das Ablaufdatum stammt?
Google ist hier auch Regie obwohl ich für .NET zu fragen, also werde ich nur hinzufügen [diesen Link] (http://forums.asp.net/post/4630222.aspx) zu einem C# Antworten. –