91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

SSLSocket雙向認證通信示例(含證書庫及證書),自己編寫的可使用的代碼按鈕,此代碼中含將服務端證書及CA證書自動下載并導入到客戶端證書庫的功能。

資源截圖

代碼片段和文件信息

package?ssl_client;

import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.InputStream;
import?java.io.InputStreamReader;
import?java.io.OutputStream;
import?java.nio.charset.CharsetEncoder;
import?java.nio.charset.spi.CharsetProvider;
import?java.security.KeyStore;
import?java.security.MessageDigest;
import?java.security.cert.CertificateException;
import?java.security.cert.X509Certificate;

import?javax.net.ssl.SSLContext;
import?javax.net.ssl.SSLException;
import?javax.net.ssl.SSLSocket;
import?javax.net.ssl.SSLSocketFactory;
import?javax.net.ssl.TrustManager;
import?javax.net.ssl.TrustManagerFactory;
import?javax.net.ssl.X509TrustManager;

public?class?CertHelper?{
public?static?boolean?intallCert(String?trustKeyStoreFilePath
String?trustKeyStorePassword?String?targetHost?int?targetPort)
throws?Exception?{
char[]?passphrase?=?trustKeyStorePassword.toCharArray();

File?file?=?new?File(trustKeyStoreFilePath);
if?(!file.isFile())?{
char?SEP?=?File.separatorChar;
File?dir?=?new?File(System.getProperty(“java.home“)?+?SEP?+?“lib“
+?SEP?+?“security“);
file?=?new?File(dir?“jssecacerts“);
if?(file.isFile()?==?false)?{
file?=?new?File(dir?“cacerts“);
}
}
System.out.println(“加載證書庫[“?+?file?+?“]...“);
InputStream?in?=?new?FileInputStream(file);
KeyStore?ks?=?KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(in?passphrase);
in.close();

SSLContext?context?=?SSLContext.getInstance(“TLS“);
TrustManagerFactory?tmf?=?TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ks);
X509TrustManager?defaultTrustManager?=?(X509TrustManager)?tmf
.getTrustManagers()[0];
SavingTrustManager?tm?=?new?SavingTrustManager(defaultTrustManager);
context.init(null?new?TrustManager[]?{?tm?}?null);
SSLSocketFactory?factory?=?context.getSocketFactory();

System.out.println(“連接?“?+?targetHost?+?“:“?+?targetPort?+?“...“);
SSLSocket?socket?=?(SSLSocket)?factory.createSocket(targetHost
targetPort);
socket.setSoTimeout(10000);
try?{

socket.startHandshake();
socket.close();
//?System.out.println(“存在可信證書,handshake通信成功.“);
//?return?true;
}?catch?(Exception?e)?{
System.out.println(“handshake通信失敗...“);
System.out.println(e);
}

X509Certificate[]?chain?=?tm.chain;
if?(chain?==?null)?{
System.out.println(“不包含服務器證書鏈安裝失敗.“);
return?false;
}
System.out.println();
System.out.println(String.format(“收到服務器發送的%d個證書.“?chain.length));
System.out.println();
for?(int?i?=?1;?i?<=?chain.length;?i++)?{
System.out.println(“安裝第“?+?i?+?“個數字證書...“);
X509Certificate?cert?=?chain[i?-?1];
String?alias?=?targetHost?+?“-“?+?(i);
ks.setCertificateEntry(alias?cert);
OutputStream?out?=?new?FileOutputStream(trustKeyStoreFilePath);
ks.store(out?passphrase);
out.close();
System.out.println(String.format(“成功安裝證書[%s]至證書庫[%s]“?alias
trustKeySto

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-06-02?10:58??ssl_client\
?????文件?????????301??2016-06-01?15:02??ssl_client\.classpath
?????文件?????????386??2016-06-01?15:02??ssl_client\.project
?????目錄???????????0??2016-06-01?15:02??ssl_client\.settings\
?????文件?????????598??2016-06-01?15:02??ssl_client\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2016-06-03?16:06??ssl_client\bin\
?????目錄???????????0??2016-06-03?18:03??ssl_client\bin\ssl_client\
?????文件????????1303??2016-06-03?17:51??ssl_client\bin\ssl_client\CertHelper$SavingTrustManager.class
?????文件????????5341??2016-06-03?17:51??ssl_client\bin\ssl_client\CertHelper.class
?????文件????????2098??2016-06-01?15:38??ssl_client\bin\ssl_client\sslClientKeysbyKeytool
?????目錄???????????0??2016-06-03?16:06??ssl_client\bin\ssl_client_test\
?????文件????????3789??2016-06-06?11:29??ssl_client\bin\ssl_client_test\SSLTestClient.class
?????文件????????2919??2016-06-02?10:58??ssl_client\jssecacerts
?????目錄???????????0??2016-06-03?16:02??ssl_client\src\
?????目錄???????????0??2016-06-03?18:01??ssl_client\src\ssl_client\
?????文件????????4137??2016-06-03?17:51??ssl_client\src\ssl_client\CertHelper.java
?????目錄???????????0??2016-06-03?16:02??ssl_client\src\ssl_client_test\
?????文件????????2340??2016-06-06?11:29??ssl_client\src\ssl_client_test\SSLTestClient.java
?????目錄???????????0??2016-06-01?14:53??ssl_server\
?????文件?????????301??2016-06-01?14:53??ssl_server\.classpath
?????文件?????????386??2016-06-01?15:02??ssl_server\.project
?????目錄???????????0??2016-06-01?14:53??ssl_server\.settings\
?????文件?????????598??2016-06-01?14:53??ssl_server\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2016-06-03?18:03??ssl_server\bin\
?????目錄???????????0??2016-06-06?09:29??ssl_server\bin\ssl_server_test\
?????文件????????1242??2016-06-06?13:47??ssl_server\bin\ssl_server_test\SSLTestServer$SavingTrustManager.class
?????文件????????3669??2016-06-06?13:47??ssl_server\bin\ssl_server_test\SSLTestServer.class
?????目錄???????????0??2016-06-03?18:02??ssl_server\src\
?????目錄???????????0??2016-06-03?16:00??ssl_server\src\ssl_server_test\
?????文件????????3001??2016-06-06?13:47??ssl_server\src\ssl_server_test\SSLTestServer.java
?????文件????????5107??2016-06-03?18:12??ejbcakclient.jks
............此處省略1個文件信息

評論

共有 條評論