📄 t.java
字号:
/* 以下是若干用于测试HTTPS通讯的网页地址:
https://www.verisign.com/
https://happiness.dhs.org/
https://www.microsoft.com
https://www.sun.com
https://www.ftc.gov
*/
import java.net.*;
import javax.net.*;
import java.io.*;
import javax.net.ssl.*;
import java.security.cert.*;
import java.util.*;
import java.math.*;
import java.security.*;
public class t {
public static void main(String args[ ])throws Exception {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
try {
// Create the client socket
int port = 443;
// String hostname = "www.microsoft.com"; //not all server could use https
String hostname =args[0];
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
SSLSocket socket = (SSLSocket)factory.createSocket(hostname, port);
// Connect to the server
socket.startHandshake();
// Retrieve the server's certificate chain
java.security.cert.Certificate[] serverCerts =
socket.getSession().getPeerCertificates();
System.out.println(serverCerts.length);
List mylist = new ArrayList();
for(int i=0;i<serverCerts.length-1;i++){
mylist.add((X509Certificate)serverCerts[i]);
}
CertPath cp = cf.generateCertPath(mylist);
System.out.println("aaaaaaaaaaaaaaaaaaaaa");
System.out.println(cp);
System.out.println("bbbbbbbbbbbbbbbbbbbbbb");
TrustAnchor anchor = new TrustAnchor((X509Certificate)serverCerts[serverCerts.length-1],null);
System.out.println(serverCerts[serverCerts.length-1]);
PKIXParameters params = new PKIXParameters(Collections.singleton(anchor));
params.setRevocationEnabled(false);
// CertPathValidator cpv = CertPathValidator.getInstance("PKIX");
CertPathValidator cpv
= CertPathValidator.getInstance(CertPathValidator.getDefaultType());
try {
PKIXCertPathValidatorResult result =
(PKIXCertPathValidatorResult) cpv.validate(cp, params);
PolicyNode policyTree = result.getPolicyTree();
PublicKey subjectPublicKey = result.getPublicKey();
System.out.println("Certificate validated");
System.out.println("Policy Tree:\n" + policyTree);
System.out.println("Subject Public key:\n" +subjectPublicKey);
} catch (CertPathValidatorException cpve) {
System.out.println("Validation failure, cert["
+ cpve.getIndex() + "] :" + cpve.getMessage());
}
// Close the socket
socket.close();
} catch (SSLPeerUnverifiedException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -