From 8f5f3e8eaa8f6c8b056ba9a5f4f60970332ede55 Mon Sep 17 00:00:00 2001 From: egan Date: Sun, 14 Jan 2018 23:59:14 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E6=AC=BE=E8=AF=81=E4=B9=A6=E6=94=B9?= =?UTF-8?q?=E9=80=A0=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=AF=81=E4=B9=A6=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pay/common/http/HttpConfigStorage.java | 54 +++++++++++++++++-- .../pay/common/http/HttpRequestTemplate.java | 6 +-- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpConfigStorage.java b/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpConfigStorage.java index 2aca267..629ebb9 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpConfigStorage.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpConfigStorage.java @@ -19,8 +19,13 @@ public class HttpConfigStorage { //代理密码 protected String httpProxyPassword; - //https请求所需的证书(PKCS12)地址,请使用绝对路径 - private String keystorePath; + /** + * @see #keystore 是否为https请求所需的证书(PKCS12)的地址,默认为地址,否则为证书信息串 + */ + private boolean isPath = true; + + //https请求所需的证书(PKCS12) + private String keystore; //证书对应的密码 private String storePassword; @@ -76,13 +81,54 @@ public class HttpConfigStorage { /** * https请求所需的证书(PKCS12)地址,请使用绝对路径 * @return 证书(PKCS12)地址 + * @see #getKeystore() */ + @Deprecated public String getKeystorePath() { - return keystorePath; + return keystore; } + /** + * 设置https请求所需的证书(PKCS12)地址,请使用绝对路径 + * @param keystorePath 证书(PKCS12)地址 + * @see #getKeystore() + */ + @Deprecated public void setKeystorePath(String keystorePath) { - this.keystorePath = keystorePath; + this.keystore = keystorePath; + } + + + /** + * 获取是否为证书地址 + * @return 是否为证书地址,配合 {@link #getKeystore()}使用 + */ + public boolean isPath() { + return isPath; + } + + /** + * 设置是否为证书地址 + * @param path 是否为证书地址 + */ + public void setPath(boolean path) { + isPath = path; + } + + /** + * 获取证书信息 + * @return 证书信息 根据 {@link #isPath()}进行区别地址与信息串 + */ + public String getKeystore() { + return keystore; + } + + /** + * 设置证书 + * @param keystore 证书信息 + */ + public void setKeystore(String keystore) { + this.keystore = keystore; } /** diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpRequestTemplate.java b/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpRequestTemplate.java index d2564f7..4c0fa1f 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpRequestTemplate.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/http/HttpRequestTemplate.java @@ -14,9 +14,7 @@ import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.ssl.SSLContexts; import javax.net.ssl.SSLContext; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; +import java.io.*; import java.net.URI; import java.security.*; import java.util.Map; @@ -72,7 +70,7 @@ public class HttpRequestTemplate { } //读取本机存放的PKCS12证书文件 - try(FileInputStream instream = new FileInputStream(new File(configStorage.getKeystorePath()))){ + try(InputStream instream = configStorage.isPath() ? new FileInputStream(new File(configStorage.getKeystore())) : new ByteArrayInputStream(configStorage.getKeystore().getBytes())){ //指定读取证书格式为PKCS12 KeyStore keyStore = KeyStore.getInstance("PKCS12");