㈠ 如何用Java代碼來把SSL的證書自動導入到Jav
下面這個Java類可以幫助我們做這個事情。同時我們還可以把這個幫助方法開發一個可視化的程序,這樣就更加方便:
import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.security.KeyStore;import java.security.cert.CertificateFactory;import java.security.cert.X509Certificate;import java.util.List;import javax.naming.ldap.LdapName;import javax.naming.ldap.Rdn;import javax.security.auth.x500.X500Principal;public class KeyStoreHelper { public static void createTrustJKSKeyStore(final String originalTrustFolder, final String jksTrustStoreLocation, final String password) { File keyStoreFile = new File(jksTrustStoreLocation); if (!keyStoreFile.exists()) { try { KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); keystore.load(null, password.toCharArray()); File trustedFolder = new File(originalTrustFolder); File[] certs = trustedFolder.listFiles(); if (certs != null) { for (File cert : certs) { CertificateFactory factory = CertificateFactory.getInstance("X.509"); try { X509Certificate certificate = (X509Certificate) factory.generateCertificate(new FileInputStream(cert)); X500Principal principal = certificate.getSubjectX500Principal(); LdapName ldapDN = new LdapName(principal.getName()); List<Rdn> rdns = ldapDN.getRdns(); for (Rdn rdn : rdns) { String type = rdn.getType(); if (type.equals("CN")) { keystore.setCertificateEntry((String) rdn.getValue(),certificate);break; } } } catch (Exception ex) { continue; } } } FileOutputStream fos = new FileOutputStream(jksTrustStoreLocation); keystore.store(fos, password.toCharArray()); fos.close(); } catch (Exception exp) { } } } /** * @param args */ public static void main(String[] args) { KeyStoreHelper.createTrustJKSKeyStore("D:\\cacerts", "D:\\cacerts\\test.jks", "test123"); }}
㈡ 跪求大神講解一下java模擬https請求時如何使用p12證書!!!
你有用過 KeyManager.init (...)? 和抄 TrustManager.init(...) ?
想要在連接建立過程上互動式的彈出確認對話框來的話需要我們自己提供一個 KeyManager 和 TrustManager 的實現類,這有點復雜,你可以看一個 Sun 的 X509KeyManager 是怎麼做的,默認地情況下它是從自動搜索匹配的 subject ,我們需要用自己提供的方式彈出確認的過程還不是全自動,另外一個賬戶可能有多個數字證書,比如支付寶我們就有多個簽發時間不一樣的數字證書,在連接建立時 IE 會提示我們選擇其中的一個來使用,銀行的 U 盾在安裝多張數字證書時也會提示我們選擇其中一個對應到你正在使用的銀行卡號的那張證書。
㈢ 如何配置Java HTTPS CA證書
Java一般使用的環境Tomcat SSL加密證書獲取:網頁鏈接
Tomcat安裝SSL證書:專網頁鏈接
Tomcat自動跳轉到HTTPS:網頁鏈接
注意:安裝防火牆需要設屬置允許443埠或關閉防火牆,如果本地伺服器安裝安全狗的,請允許443埠。
㈣ 做javaweb項目時要把http改為https,有的說直接用keystore生成證書,有的說要買CA證書,到底哪個是正確的
你這個項目 要是自己電腦上測試就不需要,但是你要是想在放在伺服器上並且用瀏覽器訪問那就必須購買證書,然後安裝配置證書
㈤ https證書快過期 java報錯么
在java代碼中請求https鏈接的時候,可能會報下面這個錯誤
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
原因是沒有證書。在瀏覽器中直接使用url訪問是可以的,應該是瀏覽器之前就保存過對應的.cer證書。
解決方法有兩種,從目標機器獲得有效證書或者忽略證書信任問題。
一、獲得目標機器有效證書
1、編譯安裝證書程序 javac InstallCert.java
2、運行安裝證書程序生成證書
java InstallCert my.hoolai.com
例如:java InstalCert smtp.zhangsan.com:465 admin
如果不加參數password和host的埠號,上面的獲取證書程序中默認給的埠號是:443,密碼是:changeit
3、根據運行提示信息,輸入1,回車,在當前目錄下生成名為: jssecacerts 的證書
將證書放置到$JAVA_HOME/jre/lib/security目錄下, 切記該JDK的jre是工程所用的環境!!!
或者:
System.setProperty("javax.net.ssl.trustStore", "你的jssecacerts證書路徑");
可以更改密碼,在security目錄下運行命令
keytool -storepasswd -new xxxcom -keystore cacerts
就可以修改密碼,修改後使用命令
keytool -list -v -keystore cacerts
查看文件的信息,會提示需要密碼才能查看,如果輸入密碼與修改後的密碼匹配,說明修改成功了。
PS:至此這種方式可以成功使用ssl了,另外再補充一下,根據剛才生成的文件jssecacerts,可以生成cer文件,
命令如下
keytool -export -alias xxx.com-1 -keystore jssecacerts -rfc -file xxx.cer
如上,之前的工具類中默認命名別名是加上"-1"。使用InstallCert設置的密碼需要跟cacerts文件中的密碼一致,
如果修改過密碼,就需要修改InstallCert類中對應的密碼字元串,否則會有下面這個異常:
java.security.UnrecoverableKeyException: Password verification failed
二、忽略證書信任問題
源碼:http://mengyang.iteye.com/blog/575671
一定要注意需要在connection創建之前調用文章里所述的方法,像這個樣子:
trustAllHttpsCertificates();
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(hv);
connection = (HttpURLConnection) url.openConnection();
好吧,兩種方法都試過有效。
㈥ java 建立雙向認證 https連接
絕對好用的。直用的這個,GOOD LUCK FOR YOU
public static String httpRequest(String requestUrl, String requestMethod, String outputStr) {
JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();
try {
// 創建SSLContext對象,並使用我們指定的信任管理器初始化
TrustManager[] tm = { new MyX509TrustManager() };
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
// 從上述SSLContext對象中得到SSLSocketFactory對象
SSLSocketFactory ssf = sslContext.getSocketFactory();
URL url = new URL(requestUrl);
HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
httpUrlConn.setSSLSocketFactory(ssf);
httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
// 設置請求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);
if ("GET".equalsIgnoreCase(requestMethod))
httpUrlConn.connect();
// 當有數據需要提交時
if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意編碼格式,防止中文亂碼
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}
// 將返回的輸入流轉換成字元串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 釋放資源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
System.out.println("返回的數據:"+buffer.toString());
// jsonObject = JSONObject.fromObject(buffer.toString());
} catch (ConnectException ce) {
log.error("Weixin server connection timed out.");
} catch (Exception e) {
log.error("https request error:{}", e);
}
return buffer.toString();
}
㈦ java https 證書 java 實現https請求
JSSE是一個SSL和TLS的純Java實現,通過JSSE可以很容易地編程實現對HTTPS站點的訪問。但是,如果該站點的證書未經權威機構的驗證,JSSE將拒絕信任該證書從而不能訪問HTTPS站點。建議到權威CA機構去申請一受信任的免費https證書來使用,比如wosign免費多域名https證書等。
㈧ 如何把Https網站中的安全證書導入到java中的cacerts證書庫
在項目開發中,有時會遇到與SSL安全證書導入打交道的,如何把證書導入java中的cacerts證書庫呢?
其實很簡單,方法如下:
每一步:進入某個https //www xxx com 開頭的網站,把要導入的證書下載過來,
在該網頁上右鍵 >> 屬性 >> 點擊"證書" >>
再點擊上面的"詳細信息"切換欄 >>
再點擊右下角那個"復制到文件"的按鈕
就會彈出一個證書導出的<nobr>向導 </nobr>對話框,按提示一步一步完成就行了。
例如:保存為abc.cer,放在C盤下
第二步:如何把上面那步的(abc.cer)這個證書導入java中的cacerts證書庫里?
方法如下
假設你的jdk安裝在C:/jdk1.5這個目錄,
開始 >> 運行 >> 輸入cmd 進入dos命令行 >>
再用cd進入到C:/jdk1.5/jre/lib/security這個目錄下
敲入如下命令回車執行
keytool -import -alias cacerts
-keystore C:/jdk1.5/jre/lib/security/cacerts
-file C:/abc.cer
-trustcacerts
此時命令<nobr>行會 </nobr>提示你輸入cacerts證書庫的密碼,
你敲入changeit就行了,這是java中cacerts<nobr>證書 </nobr>庫的默認密碼,
你自已也可以修改的。
㈨ java B/S開發,ssl證書是怎麼回事
jks是數字證書庫,
pfx是一種二進制格式,
cer 是證書後綴名 ,譬如 test.cer ;
keytool工具,jdk中有自帶的,所在路徑為:%JDK_HOME%/bin
客戶端訪問時,怎麼驗證證書?
--當你訪問https的網站時,服務端會將它那邊的信息,包括伺服器證書傳給客戶端,然後你再驗證改該證書的有效期,頒發者,公鑰信息等,確認是否可信任該證書,這就是一個驗證證書的過程。
其它驗證步驟,可以網上搜索SSL驗證步驟。
㈩ java下載https的url,需要帶證書
需要https證書的話可以去沃通CA申請一個免費的https證書