java https post (帶證書的)
- import java.io.BufferedReader;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.security.GeneralSecurityException;
- import java.security.KeyStore;
-
import javax.net.ssl.HostnameVerifier;
- import javax.net.ssl.HttpsURLConnection;
- import javax.net.ssl.KeyManagerFactory;
- import javax.net.ssl.SSLContext;
- import javax.net.ssl.TrustManagerFactory;
- publicclass HttpsPost {
- /**
- * 獲得KeyStore.
- * @param keyStorePath
- * 金鑰庫路徑
- * @param password
-
* 密碼
- * @return 金鑰庫
- * @throws Exception
- */
- publicstatic KeyStore getKeyStore(String password, String keyStorePath)
- throws Exception {
-
// 例項化金鑰庫 KeyStore用於存放證書,建立物件時
指定交換數字證書的加密標準
//指定交換數字證書的加密標準 - KeyStore ks = KeyStore.getInstance("JKS");
-
// 獲得金鑰庫檔案流
- FileInputStream is = new FileInputStream(keyStorePath);
- // 載入金鑰庫
- ks.load(is, password.toCharArray());
- // 關閉金鑰庫檔案流
- is.close();
- return ks;
- }
- /**
- * 獲得SSLSocketFactory.
- * @param password
- * 密碼
- * @param keyStorePath
- * 金鑰庫路徑
- * @param trustStorePath
- * 信任庫路徑
- * @return SSLSocketFactory
- * @throws Exception
- */
- publicstatic SSLContext getSSLContext(String password,
- String keyStorePath, String trustStorePath) throws Exception {
- // 例項化金鑰庫 KeyManager選擇證書證明自己的身份
- KeyManagerFactory keyManagerFactory = KeyManagerFactory
- .getInstance(KeyManagerFactory.getDefaultAlgorithm());
- // 獲得金鑰庫
- KeyStore keyStore = getKeyStore(password, keyStorePath);
- // 初始化金鑰工廠
- keyManagerFactory.init(keyStore, password.toCharArray());
- // 例項化信任庫 TrustManager決定是否信任對方的證書
- TrustManagerFactory trustManagerFactory = TrustManagerFactory
- .getInstance(TrustManagerFactory.getDefaultAlgorithm());
- // 獲得信任庫
- KeyStore trustStore = getKeyStore(password, trustStorePath);
- // 初始化信任庫
- trustManagerFactory.init(trustStore);
- // 例項化SSL上下文
- SSLContext ctx = SSLContext.getInstance("TLS");
- // 初始化SSL上下文
- ctx.init(keyManagerFactory.getKeyManagers(),
- trustManagerFactory.getTrustManagers(), null);
- // 獲得SSLSocketFactory
- return ctx;
- }
- /**
- * 初始化HttpsURLConnection.
- * @param password
- * 密碼
- * @param keyStorePath
- * 金鑰庫路徑
- * @param trustStorePath
- * 信任庫路徑
- * @throws Exception
- */
- publicstaticvoid initHttpsURLConnection(String password,
- String keyStorePath, String trustStorePath) throws Exception {
- // 宣告SSL上下文
- SSLContext sslContext = null;
- // 例項化主機名驗證介面
- HostnameVerifier hnv = new MyHostnameVerifier();
- try {
- sslContext = getSSLContext(password, keyStorePath, trustStorePath);
- } catch (GeneralSecurityException e) {
- e.printStackTrace();
- }
- if (sslContext != null) {
- HttpsURLConnection.setDefaultSSLSocketFactory(sslContext
- .getSocketFactory());
- }
- HttpsURLConnection.setDefaultHostnameVerifier(hnv);
- }
- /**
- * 傳送請求.
- * @param httpsUrl
- * 請求的地址
- * @param xmlStr
- * 請求的資料
- */
- publicstaticvoid post(String httpsUrl, String xmlStr) {
- HttpsURLConnection urlCon = null;
- try {
- urlCon = (HttpsURLConnection) (new URL(httpsUrl)).openConnection();
- urlCon.setDoInput(true);
- urlCon.setDoOutput(true);
- urlCon.setRequestMethod("POST");
- urlCon.setRequestProperty("Content-Length",
- String.valueOf(xmlStr.getBytes().length));
- urlCon.setUseCaches(false);
- //設定為gbk可以解決伺服器接收時讀取的資料中文亂碼問題
- urlCon.getOutputStream().write(xmlStr.getBytes("gbk"));
- urlCon.getOutputStream().flush();
- urlCon.getOutputStream().close();
- BufferedReader in = new BufferedReader(new InputStreamReader(
- urlCon.getInputStream()));
- String line;
- while ((line = in.readLine()) != null) {
- System.out.println(line);
- }
- } catch (MalformedURLException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 測試方法.
- * @param args
- * @throws Exception
- */
- publicstaticvoid main(String[] args) throws Exception {
- // 密碼
- String password = "123456";
- // 金鑰庫
- String keyStorePath = "tomcat.keystore";
- // 信任庫
- String trustStorePath = "tomcat.keystore";
- // 本地起的https服務
- String httpsUrl = "https://localhost:8443/service/httpsPost";
- // 傳輸文字
- String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><fruitShop><fruits><fruit><kind>蘿蔔</kind></fruit><fruit><kind>菠蘿</kind></fruit></fruits></fruitShop>";
- HttpsPost.initHttpsURLConnection(password, keyStorePath, trustStorePath);
- // 發起請求
- HttpsPost.post(httpsUrl, xmlStr);
- }
- }
- import javax.net.ssl.HostnameVerifier;
- import javax.net.ssl.SSLSession;
- /**
- * 實現用於主機名驗證的基介面。
- * 在握手期間,如果 URL 的主機名和伺服器的標識主機名不匹配,則驗證機制可以回撥此介面的實現程式來確定是否應該允許此連線。
- */
- publicclass MyHostnameVerifier implements HostnameVerifier {
- @Override
- publicboolean verify(String hostname, SSLSession session) {
- if("localhost".equals(hostname)){
-
相關推薦
java https post (帶證書的)
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.Mal
Java Https工具類,Java Https Post請求
Java Https工具類,Java Https Post請求 ================================ ©Copyright 蕃薯耀 2019-01-08 http://fanshuyao.iteye.com/ 一、使用jsoup進行
java https 忽略證書 過期方式
sets apache pic pcm gis aps div 調用接口 puts package com.sprucetec.pop.product.util; import java.security.cert.CertificateException; impo
Java的post(HTTPS)請求-----接口測試
eat class tin hostname ted buffered lin hat tls 這個是忽略證書的辦法 1 package com.ju.util; 2 3 4 import java.io.BufferedReader; 5 imp
C# HttpClient 帶證書的https 請求
1. 將證書安裝到伺服器上開始 -> 執行 ->輸入 mmc 進入控制檯介面2. 選擇 “證書” ->“計算機賬戶”->“下一步”->“完成”3. 選擇相關的證書進行匯入工具預設安裝的目錄為: C:\Program Files (x86)\Wi
java傳送https post請求例項
用於進行Https請求的HttpClient SSLClient.Java import java.security.cert.CertificateException;
java傳送https post請求例項
用於進行Https請求的HttpClient SSLClient.java import java.security.cert.CertificateException; import java.
Java傳送httpPost請求帶證書
/** * 帶證書httpPost請求 * @param url 介面地址 * @param param 引數 * @return * @throws Exception */ public stati
httpClient4.1傳送https報文請求,帶證書,簽名
這個方法時我測試了目前網上的commons-httpclient所提供的方法,根據HTTP請求改造的,那個測試沒有通過,這個是完全根據官方最新版的httpclinet4.1的英文文件以及example來做的,比較靠譜,當前前提是你的證書已經拆分好,這個可以找到相關的很多資
java實現 HTTP/HTTPS請求繞過證書檢測程式碼實現
1、開發需求 需要實現在服務端發起HTTP/HTTPS請求,訪問其他程式資源。 2、URLConnection和HTTPClient的比較 HttpClient是個很不錯的開源框架,封裝了訪問http的請求頭,引數,內容體,響應等等, De
JDK自帶工具keytool生成ssl證書(https自生成證書並配置到jboss和tomcat中)
1:什麼是HTTPS? HTTPS其實是有兩部分組成:HTTP + SSL / TLS, 也就是在HTTP上又加了一層處理加密資訊的模組,並且會進行身份的驗證。 問題: Firebug和postman之類的瀏覽器除錯工具,為什麼獲取到的是明文? 解答: SSL
java https繞過伺服器端證書
整這個程式碼真有夠麻煩的。 先說原理吧,https網站伺服器都是有證書的! 之所以google和12306表現不一,是因為12306的證書是什麼 “SRCA”,鐵道部自己的CA伺服器簽發的,並不被瀏覽器或作業系統(至少我的firefox就不認它)廣泛接受! Google的
java連線https時禁用證書驗證.
import java.io.File; import java.security.cert.CertificateException; import java.util.List; import java.util.Map; import javax.net.ssl.S
Java程式避開SSL證書問題訪問https網站
部分原創,參考:參考:http://tanyongbing.iteye.com/blog/1855132在專案開發中,有時會遇到與SSL安全證書匯入打交道的,如何把證書匯入java中的cacerts證書庫呢? 其實很簡單,方法如下: 每一步:使用Firefox瀏覽器,進入某個
java HttpClient POST請求
簡單 div mes rac mstr eth cep reat stack 一個簡單的HttpClient POST 請求實例 package com.httpclientget; import java.awt.List; import java.util.Arra
idhttp提交post帶參數並帶上cookie
tom page spa get 提交 clear lang 事件 lines 有這麽一個提交連接 http://www.XXXXXX.com/test.php?p1=411328&p2=1&d1=HeroSkinList 一共有三個參數[p1] [p
python3 urllib.requesturlopen 一個https 時ssl證書錯誤!
使用 就會 cert http ssl req pen urllib erro 不知道從那個版本起,python用urlopen打開一個https時會驗證一次 SSL 證書,當目標使用的是自簽名的證書時就會爆出一個 <urlopen error [SSL: CERT
JAVA代碼-數字證書公私鑰生成-公鑰cer ,私鑰jks, pfx格式
else generator actor issue 自己 bytearray 私鑰 公私鑰 throws import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStre
HTTPS請求 SSL證書驗證
cer import failed blog kit urllib2 highlight www. header import urllib2 url = "https://www.12306.cn/mormhweb/" headers = {"User-Agent"
xutils工具上傳日誌文件--使用https並且帶進度條顯示
throw muti inpu side ica nts app開發 stp pfile package logback.ecmapplication.cetcs.com.myapplication; import android.app.Activity; impor