From a1dd4b12aba5d625dbd09deabbe89dd893f89a15 Mon Sep 17 00:00:00 2001 From: yexuejc <1107047387@qq.com> Date: Tue, 15 May 2018 15:37:32 +0800 Subject: [PATCH] 1.0.7 --- PARAMS_RSA_DECRYPT_ENCRYPT.md | 6 + README.md | 2 +- UPDATE.md | 10 +- pom.xml | 16 +- yexuejc-springboot-base/pom.xml | 10 +- .../base/filter/ParamsRequestBodyAdvice.java | 27 +-- .../base/filter/ParamsResponseBodyAdvice.java | 22 ++- .../springboot/base/filter/RsaProperties.java | 49 +++++ .../com/yexuejc/springboot/base/util/RSA.java | 177 ------------------ .../springboot/base/ApplicationTest.java | 59 +++++- .../src/test/resources/application.properties | 10 +- .../src/test/resources/lgfishing.cer | Bin 0 -> 816 bytes .../src/test/resources/lgfishing.keystore | Bin 0 -> 1588 bytes 13 files changed, 171 insertions(+), 217 deletions(-) delete mode 100644 yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/util/RSA.java create mode 100644 yexuejc-springboot-base/src/test/resources/lgfishing.cer create mode 100644 yexuejc-springboot-base/src/test/resources/lgfishing.keystore diff --git a/PARAMS_RSA_DECRYPT_ENCRYPT.md b/PARAMS_RSA_DECRYPT_ENCRYPT.md index c4fcdcb..0f6c0a1 100644 --- a/PARAMS_RSA_DECRYPT_ENCRYPT.md +++ b/PARAMS_RSA_DECRYPT_ENCRYPT.md @@ -95,7 +95,13 @@ params.setData(RSA.publicEncrypt(datas, RSA.getPublicKey(properties.getPublicKey ### 配置 1. 服务器配置私钥 ``` +#配置密钥方式 yexuejc.http.encrypt.private-key=私钥 +#配置证书方式:方式二选一,两者都配置会选择配置密钥方式 +yexuejc.http.encrypt.private-key-path=/lgfishing.keystore +yexuejc.http.encrypt.private-alias=lgfishing +yexuejc.http.encrypt.private-pwd=lgfishing2018 + yexuejc.http.encrypt.encrypt=true //加密:默认false yexuejc.http.encrypt.decrypt=true //解密:默认false ``` diff --git a/README.md b/README.md index 4d03cef..f33896b 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ parent:版本封装
base:功能封装 #### 引用 ->yexuejc.springboot.version=1.0.6 +>yexuejc.springboot.version=1.0.7 pom.xml ``` diff --git a/UPDATE.md b/UPDATE.md index 5a458fa..a611b6a 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -1,7 +1,15 @@ uselaw-base 更新内容 ------------------- -#### version :1.0.6 ~~1.0.5~~ +#### version :1.0.7 +**time:** 2018-5-4 09:54:18
+**branch:** master
+**update:**
+>1. 新增加密证书配置 +>2. RSA迁移到[yexuejc-base:1.1.1](https://github.com/yexuejc/yexuejc-base)工程 + +# +##### version :1.0.6 ~~1.0.5~~ **【change:2018-5-15 09:24:37】** 1.0.5 jitpack打包失败,升级版本1.0.6
**time:** 2018-5-4 09:54:18
**branch:** master
diff --git a/pom.xml b/pom.xml index 66b623a..4a93ba8 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.yexuejc.springboot yexuejc-springboot-parent - 1.0.6 + 1.0.7 pom ${project.artifactId} @@ -16,7 +16,7 @@ org.springframework.boot spring-boot-starter-parent 1.5.12.RELEASE - + @@ -35,7 +35,7 @@ 1.2.0 3.4.2 - 1.1.0 + 1.1.1 0.7.0 1.1.46 1.10 @@ -64,11 +64,11 @@ yexuejc-base ${yexuejc.base.version} - - - - - + + com.yexuejc.base + yexuejc-base + ${yexuejc.base.version} + commons-codec diff --git a/yexuejc-springboot-base/pom.xml b/yexuejc-springboot-base/pom.xml index 6b7943d..5513aac 100644 --- a/yexuejc-springboot-base/pom.xml +++ b/yexuejc-springboot-base/pom.xml @@ -9,7 +9,7 @@ com.yexuejc.springboot yexuejc-springboot-parent - 1.0.6 + 1.0.7 @@ -23,12 +23,12 @@ - - + + - com.github.yexuejc - yexuejc-base + com.github.yexuejc + yexuejc-base diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsRequestBodyAdvice.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsRequestBodyAdvice.java index 659bc24..1c08dc7 100644 --- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsRequestBodyAdvice.java +++ b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsRequestBodyAdvice.java @@ -1,11 +1,12 @@ package com.yexuejc.springboot.base.filter; +import com.yexuejc.base.encrypt.RSA; +import com.yexuejc.base.encrypt.RSA2; import com.yexuejc.base.pojo.ParamsPO; import com.yexuejc.base.util.JsonUtil; import com.yexuejc.base.util.StrUtil; import com.yexuejc.springboot.base.exception.GatewayException; import com.yexuejc.springboot.base.util.LogUtil; -import com.yexuejc.springboot.base.util.RSA; import org.apache.commons.io.IOUtils; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.core.MethodParameter; @@ -18,10 +19,7 @@ import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdvice; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Type; -import java.security.NoSuchAlgorithmException; -import java.security.spec.InvalidKeySpecException; -import java.util.List; -import java.util.Map; +import java.security.interfaces.RSAPrivateKey; /** * 请求数据解密 @@ -59,10 +57,19 @@ public class ParamsRequestBodyAdvice implements RequestBodyAdvice { //RSA解密 try { long t = System.currentTimeMillis(); + RSAPrivateKey rsaPrivateKey = null; + if (StrUtil.isEmpty(properties.getPrivateKey())) { + rsaPrivateKey = RSA2.getPrivateKey( + this.getClass().getResource(properties.getPrivateKeyPath()).getFile().toString(), + properties.getPrivateAlias(), + properties.getPrivatePwd()); + } else { + rsaPrivateKey = RSA.getPrivateKey(properties.getPrivateKey()); + } String data = new String( RSA.privateDecrypt( paramsPO.getData(), - RSA.getPrivateKey(properties.getPrivateKey()) + rsaPrivateKey ) ); //md5 校验 @@ -73,15 +80,9 @@ public class ParamsRequestBodyAdvice implements RequestBodyAdvice { InputStream body = IOUtils.toInputStream(JsonUtil.obj2Json(StrUtil.parseUrlencoded(data)), "UTF-8"); LogUtil.accessLogger.info("解密耗时:{}", System.currentTimeMillis() - t); return new MyHttpInputMessage(inputMessage.getHeaders(), body); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - throw new GatewayException("data错误"); - } catch (InvalidKeySpecException e) { - e.printStackTrace(); - throw new GatewayException("data错误"); } catch (Exception e) { e.printStackTrace(); - throw new GatewayException("data错误"); + LogUtil.accessLogger.error("解密失败,直接传递参数{}。\n异常信息:{}", JsonUtil.obj2Json(paramsPO), e); } } return inputMessage; diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsResponseBodyAdvice.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsResponseBodyAdvice.java index cca6bb6..4746031 100644 --- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsResponseBodyAdvice.java +++ b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/ParamsResponseBodyAdvice.java @@ -1,10 +1,11 @@ package com.yexuejc.springboot.base.filter; +import com.yexuejc.base.encrypt.RSA; +import com.yexuejc.base.encrypt.RSA2; import com.yexuejc.base.http.Resps; import com.yexuejc.base.util.JsonUtil; import com.yexuejc.base.util.StrUtil; import com.yexuejc.springboot.base.util.LogUtil; -import com.yexuejc.springboot.base.util.RSA; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; @@ -13,8 +14,7 @@ import org.springframework.http.server.ServerHttpResponse; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; -import java.security.NoSuchAlgorithmException; -import java.security.spec.InvalidKeySpecException; +import java.security.interfaces.RSAPrivateKey; import java.util.List; import java.util.Map; @@ -69,13 +69,19 @@ public class ParamsResponseBodyAdvice implements ResponseBodyAdvice { } resps.setSign(StrUtil.toMD5(data)); try { + RSAPrivateKey rsaPrivateKey = null; + if (StrUtil.isEmpty(properties.getPrivateKey())) { + rsaPrivateKey = RSA2.getPrivateKey( + this.getClass().getResource(properties.getPrivateKeyPath()).getFile().toString(), + properties.getPrivateAlias(), + properties.getPrivatePwd()); + } else { + rsaPrivateKey = RSA.getPrivateKey(properties.getPrivateKey()); + } resps.setData( - RSA.privateEncrypt(JsonUtil.obj2Json(resps.getData()), RSA.getPrivateKey(properties.getPrivateKey())) + RSA.privateEncrypt(JsonUtil.obj2Json(resps.getData()), rsaPrivateKey) ); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - LogUtil.accessLogger.error("出参加密错误,进行明文出参{}。\n异常信息:{}", JsonUtil.obj2Json(resps), e.getMessage()); - } catch (InvalidKeySpecException e) { + } catch (Exception e) { e.printStackTrace(); LogUtil.accessLogger.error("出参加密错误,进行明文出参{}。\n异常信息:{}", JsonUtil.obj2Json(resps), e.getMessage()); } diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/RsaProperties.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/RsaProperties.java index 6a819c6..5bfa663 100644 --- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/RsaProperties.java +++ b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/filter/RsaProperties.java @@ -16,10 +16,27 @@ public class RsaProperties { * 私钥 */ private String privateKey = ""; + /** + * 私钥证书路径:默认private.keystore + */ + private String privateKeyPath = "/private.keystore"; + /** + * 私钥证书别名 + */ + private String privateAlias = "alias"; + /** + * 私钥证书密码 + */ + private String privatePwd = "password"; /** * 公钥 */ private String publicKey = ""; + /** + * 公钥证书路径:默认public.cer + */ + private String publicKeyPath = "/public.cer"; + /** * 是否解密 */ @@ -42,6 +59,38 @@ public class RsaProperties { this.decrypt = decrypt; } + public String getPrivateKeyPath() { + return privateKeyPath; + } + + public void setPrivateKeyPath(String privateKeyPath) { + this.privateKeyPath = privateKeyPath; + } + + public String getPrivateAlias() { + return privateAlias; + } + + public void setPrivateAlias(String privateAlias) { + this.privateAlias = privateAlias; + } + + public String getPrivatePwd() { + return privatePwd; + } + + public void setPrivatePwd(String privatePwd) { + this.privatePwd = privatePwd; + } + + public String getPublicKeyPath() { + return publicKeyPath; + } + + public void setPublicKeyPath(String publicKeyPath) { + this.publicKeyPath = publicKeyPath; + } + public boolean isEncrypt() { return encrypt; } diff --git a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/util/RSA.java b/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/util/RSA.java deleted file mode 100644 index b4310d6..0000000 --- a/yexuejc-springboot-base/src/main/java/com/yexuejc/springboot/base/util/RSA.java +++ /dev/null @@ -1,177 +0,0 @@ -package com.yexuejc.springboot.base.util; - -import org.apache.commons.codec.binary.Base64; -import org.apache.tomcat.util.http.fileupload.IOUtils; - -import javax.crypto.Cipher; -import java.io.ByteArrayOutputStream; -import java.security.*; -import java.security.interfaces.RSAPrivateKey; -import java.security.interfaces.RSAPublicKey; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; -import java.util.HashMap; -import java.util.Map; - -public class RSA { - - public static final String CHARSET = "UTF-8"; - public static final String RSA_ALGORITHM = "RSA"; - - public static Map initKeys(int keySize) { - //为RSA算法创建一个KeyPairGenerator对象 - KeyPairGenerator kpg; - try { - kpg = KeyPairGenerator.getInstance(RSA_ALGORITHM); - } catch (NoSuchAlgorithmException e) { - throw new IllegalArgumentException("No such algorithm-->[" + RSA_ALGORITHM + "]"); - } - - //初始化KeyPairGenerator对象,密钥长度 - kpg.initialize(keySize); - //生成密匙对 - KeyPair keyPair = kpg.generateKeyPair(); - //得到公钥 - Key publicKey = keyPair.getPublic(); - String publicKeyStr = Base64.encodeBase64URLSafeString(publicKey.getEncoded()); - //得到私钥 - Key privateKey = keyPair.getPrivate(); - String privateKeyStr = Base64.encodeBase64URLSafeString(privateKey.getEncoded()); - Map keyPairMap = new HashMap(); - keyPairMap.put("publicKey", publicKeyStr); - keyPairMap.put("privateKey", privateKeyStr); - - return keyPairMap; - } - - /** - * 得到公钥 - * - * @param publicKey 密钥字符串(经过base64编码) - * @throws Exception - */ - public static RSAPublicKey getPublicKey(String publicKey) throws NoSuchAlgorithmException, InvalidKeySpecException { - //通过X509编码的Key指令获得公钥对象 - KeyFactory keyFactory = KeyFactory.getInstance(RSA_ALGORITHM); - X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(Base64.decodeBase64(publicKey)); - RSAPublicKey key = (RSAPublicKey) keyFactory.generatePublic(x509KeySpec); - return key; - } - - /** - * 得到私钥 - * - * @param privateKey 密钥字符串(经过base64编码) - * @throws Exception - */ - public static RSAPrivateKey getPrivateKey(String privateKey) throws NoSuchAlgorithmException, InvalidKeySpecException { - //通过PKCS#8编码的Key指令获得私钥对象 - KeyFactory keyFactory = KeyFactory.getInstance(RSA_ALGORITHM); - PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKey)); - RSAPrivateKey key = (RSAPrivateKey) keyFactory.generatePrivate(pkcs8KeySpec); - return key; - } - - /** - * 公钥加密 - * - * @param data - * @param publicKey - * @return - */ - public static String publicEncrypt(String data, RSAPublicKey publicKey) { - try { - Cipher cipher = Cipher.getInstance(RSA_ALGORITHM); - cipher.init(Cipher.ENCRYPT_MODE, publicKey); - return Base64.encodeBase64URLSafeString(rsaSplitCodec(cipher, Cipher.ENCRYPT_MODE, data.getBytes(CHARSET), publicKey.getModulus().bitLength())); - } catch (Exception e) { - throw new RuntimeException("加密字符串[" + data + "]时遇到异常", e); - } - } - - /** - * 私钥解密 - * - * @param data - * @param privateKey - * @return - */ - - public static String privateDecrypt(String data, RSAPrivateKey privateKey) { - try { - Cipher cipher = Cipher.getInstance(RSA_ALGORITHM); - cipher.init(Cipher.DECRYPT_MODE, privateKey); - return new String(rsaSplitCodec(cipher, Cipher.DECRYPT_MODE, Base64.decodeBase64(data), privateKey.getModulus().bitLength()), CHARSET); - } catch (Exception e) { - throw new RuntimeException("解密字符串[" + data + "]时遇到异常", e); - } - } - - /** - * 私钥加密 - * - * @param data - * @param privateKey - * @return - */ - - public static String privateEncrypt(String data, RSAPrivateKey privateKey) { - try { - Cipher cipher = Cipher.getInstance(RSA_ALGORITHM); - cipher.init(Cipher.ENCRYPT_MODE, privateKey); - return Base64.encodeBase64URLSafeString(rsaSplitCodec(cipher, Cipher.ENCRYPT_MODE, data.getBytes(CHARSET), privateKey.getModulus().bitLength())); - } catch (Exception e) { - throw new RuntimeException("加密字符串[" + data + "]时遇到异常", e); - } - } - - /** - * 公钥解密 - * - * @param data - * @param publicKey - * @return - */ - - public static String publicDecrypt(String data, RSAPublicKey publicKey) { - try { - Cipher cipher = Cipher.getInstance(RSA_ALGORITHM); - cipher.init(Cipher.DECRYPT_MODE, publicKey); - return new String(rsaSplitCodec(cipher, Cipher.DECRYPT_MODE, Base64.decodeBase64(data), publicKey.getModulus().bitLength()), CHARSET); - } catch (Exception e) { - throw new RuntimeException("解密字符串[" + data + "]时遇到异常", e); - } - } - - private static byte[] rsaSplitCodec(Cipher cipher, int opmode, byte[] datas, int keySize) { - int maxBlock = 0; - if (opmode == Cipher.DECRYPT_MODE) { - maxBlock = keySize / 8; - } else { - maxBlock = keySize / 8 - 11; - } - ByteArrayOutputStream out = new ByteArrayOutputStream(); - int offSet = 0; - byte[] buff; - int i = 0; - try { - while (datas.length > offSet) { - if (datas.length - offSet > maxBlock) { - buff = cipher.doFinal(datas, offSet, maxBlock); - } else { - buff = cipher.doFinal(datas, offSet, datas.length - offSet); - } - out.write(buff, 0, buff.length); - i++; - offSet = i * maxBlock; - } - } catch (Exception e) { - throw new RuntimeException("加解密阀值为[" + maxBlock + "]的数据时发生异常", e); - } - byte[] resultDatas = out.toByteArray(); - IOUtils.closeQuietly(out); - return resultDatas; - } - -} diff --git a/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/ApplicationTest.java b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/ApplicationTest.java index 551c371..9933978 100644 --- a/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/ApplicationTest.java +++ b/yexuejc-springboot-base/src/test/java/com/yexuejc/springboot/base/ApplicationTest.java @@ -1,17 +1,22 @@ package com.yexuejc.springboot.base; +import com.yexuejc.base.encrypt.RSA; +import com.yexuejc.base.encrypt.RSA2; import com.yexuejc.base.pojo.ParamsPO; import com.yexuejc.base.util.JsonUtil; import com.yexuejc.base.util.StrUtil; import com.yexuejc.springboot.base.filter.RsaProperties; -import com.yexuejc.springboot.base.util.RSA; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import java.io.IOException; +import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; +import java.security.UnrecoverableKeyException; +import java.security.cert.CertificateException; import java.security.spec.InvalidKeySpecException; import java.util.HashMap; import java.util.List; @@ -25,6 +30,12 @@ public class ApplicationTest { @Autowired RsaProperties properties; + /** + * 客户端加密 + * + * @throws InvalidKeySpecException + * @throws NoSuchAlgorithmException + */ @Test public void contextLoads() throws InvalidKeySpecException, NoSuchAlgorithmException { Map map = new HashMap(); @@ -50,6 +61,12 @@ public class ApplicationTest { // "sign":"d46b089cdea6ddbe3a747a27454ae090"} } + /** + * 客户端解密 + * + * @throws InvalidKeySpecException + * @throws NoSuchAlgorithmException + */ @Test public void t2() throws InvalidKeySpecException, NoSuchAlgorithmException { // String strData = "KrlXChF8LE94EEnycvbi8AygpaZiHKaXH_OmC5sGhGQlvYp1arNk6WW7yR7kAWMLugCS5TKf8FIiYXnyuI8vjA"; @@ -77,7 +94,7 @@ public class ApplicationTest { // ).isEqualTo("fc4ead323d52f2b1122d1a9634c865c6"); // ).isEqualTo("c4ca4238a0b923820dcc509a6f75849b"); // ).isEqualTo("b326b5062b2f0e69046810717534cb09"); - ).isEqualTo("c977050805d8d1ebaa1e03525cbaee15"); + ).isEqualTo("c977050805d8d1ebaa1e03525cbaee15"); //map assertThat( @@ -101,4 +118,42 @@ public class ApplicationTest { } + + /** + * 证书操作 + * + * @throws CertificateException + * @throws IOException + * @throws UnrecoverableKeyException + * @throws NoSuchAlgorithmException + * @throws KeyStoreException + */ + @Test + public void file() throws CertificateException, IOException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyStoreException { + String publicKey = this.getClass().getResource("/lgfishing.cer").getFile().toString(); + String privateKey = this.getClass().getResource("/lgfishing.keystore").getFile().toString(); + + String privatePwd = "lgfishing2018"; + String privateAlias = "lgfishing"; + + String dataStr = "{\"ret\":\"0\",\"ExpireTime\":\"2015/10/28 23:59:59\",\"rettxt\":\"OK\",\"Token\":\"69296128A59798E2D423D3B1A9F766F4\"}'"; + +/***************************************************************************************************************************************************************************************************************************************/ + //客户端公钥加密 + String publicEncryptResult = RSA.publicEncrypt(dataStr, RSA2.getPublicKey(publicKey)); + System.out.println(publicEncryptResult); + + //服务器私钥解密 + String privateDecryptResult = RSA.privateDecrypt(publicEncryptResult, RSA2.getPrivateKey(privateKey, privateAlias, privatePwd)); + System.out.println(privateDecryptResult); +/***************************************************************************************************************************************************************************************************************************************/ + //服务器端私钥加密 + String privateEncryptResult = RSA.privateEncrypt(dataStr, RSA2.getPrivateKey(privateKey, privateAlias, privatePwd)); + System.out.println(privateEncryptResult); + + //客户端公钥解密 + String publicDecryptResult = RSA.publicDecrypt(privateEncryptResult, RSA2.getPublicKey(publicKey)); + System.out.println(publicDecryptResult); + + } } diff --git a/yexuejc-springboot-base/src/test/resources/application.properties b/yexuejc-springboot-base/src/test/resources/application.properties index 3caa578..499140d 100644 --- a/yexuejc-springboot-base/src/test/resources/application.properties +++ b/yexuejc-springboot-base/src/test/resources/application.properties @@ -5,10 +5,16 @@ security.basic.enabled=false yexuejc.http.filter.type=0 -yexuejc.http.encrypt.private-key=MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAiSo5blJ9-QJ0_QElcy5AaRTq-3oO4lJ8PvIOIt-Xr5SUFODVj3DUbiy6_0bxQYO3NiYHlXPb37UVV3jjlXJsXwIDAQABAkBE0WOJH2hGs93gRl_0vwLf9ffDfkTTdlER_73p70aad3QZRslEkinQH7G5aE_DgBm5m72TCeH-PD2FZ2lwtavBAiEAvnRown5Lpqbl0tN_OUxr_e1u9d_-8dNL_JEETO7BZCECIQC4XtY-18j0bVVLxaXPjKQ00D59yntwObihDNyRK0nAfwIgHPHEGgrnpGQo-Wl7JFIg925mNqfcLxRVsAS6CpcefQECIQCUsLdsmy6QIhTmNRJSXoSXq1KatE_05DhIekzwLs8eFQIgfMawMiu52ZxBI5_pZ7ancQZ6Dsxl45utFqJShzV1pio -yexuejc.http.encrypt.public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIkqOW5SffkCdP0BJXMuQGkU6vt6DuJSfD7yDiLfl6-UlBTg1Y9w1G4suv9G8UGDtzYmB5Vz29-1FVd445VybF8CAwEAAQ + yexuejc.http.encrypt.encrypt=true yexuejc.http.encrypt.decrypt=true +#配置密钥方式 +#yexuejc.http.encrypt.private-key=MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAiSo5blJ9-QJ0_QElcy5AaRTq-3oO4lJ8PvIOIt-Xr5SUFODVj3DUbiy6_0bxQYO3NiYHlXPb37UVV3jjlXJsXwIDAQABAkBE0WOJH2hGs93gRl_0vwLf9ffDfkTTdlER_73p70aad3QZRslEkinQH7G5aE_DgBm5m72TCeH-PD2FZ2lwtavBAiEAvnRown5Lpqbl0tN_OUxr_e1u9d_-8dNL_JEETO7BZCECIQC4XtY-18j0bVVLxaXPjKQ00D59yntwObihDNyRK0nAfwIgHPHEGgrnpGQo-Wl7JFIg925mNqfcLxRVsAS6CpcefQECIQCUsLdsmy6QIhTmNRJSXoSXq1KatE_05DhIekzwLs8eFQIgfMawMiu52ZxBI5_pZ7ancQZ6Dsxl45utFqJShzV1pio +#yexuejc.http.encrypt.public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIkqOW5SffkCdP0BJXMuQGkU6vt6DuJSfD7yDiLfl6-UlBTg1Y9w1G4suv9G8UGDtzYmB5Vz29-1FVd445VybF8CAwEAAQ +#配置证书方式 +yexuejc.http.encrypt.private-key-path=/lgfishing.keystore +yexuejc.http.encrypt.private-alias=lgfishing +yexuejc.http.encrypt.private-pwd=lgfishing2018 #编码 diff --git a/yexuejc-springboot-base/src/test/resources/lgfishing.cer b/yexuejc-springboot-base/src/test/resources/lgfishing.cer new file mode 100644 index 0000000000000000000000000000000000000000..a602ddf7fcc94206be347d7375b051065f91818f GIT binary patch literal 816 zcmXqLV%9NeVw$>unTe5!iKSNU>SF_5HcqWJkGAi;jEvl@3$$A_V3Vr(a`Ara?<3N8}}Gm8(4z$bMqKI+rIJX zoXs!WCq7-W{Q1Vs#Auc>kN|0B78cA%&CE{COHav6%&#ofOU}EE8LshQrv)BO2}cEN#&%6*%- zvi9xmE;t`(aHM1L#j=|Xyz99)FKXEEHS-*IKvJ9N(uNGf4Y|wR+1y%0bl#hrCNZ>S zi`+bY_flos6xofoGXHj@iCx<*aYEU~Rr@|O!&I|F&et7m_cc9q<(?t)iFxLlts4aF z3s>t4eKRmxaC0jYGb01zVnqXa16g2H$?~y?v50K*Ty`f7s+5?y1{P1?^b-t$m*rcL{=?>zM;{=W~ZWWA2DiYxm$rA97G qdfoS*!asjYiE01z40*`+#j>^M#Os}NAFk#)%_8#B?E4$9>AL`nzhT<| literal 0 HcmV?d00001 diff --git a/yexuejc-springboot-base/src/test/resources/lgfishing.keystore b/yexuejc-springboot-base/src/test/resources/lgfishing.keystore new file mode 100644 index 0000000000000000000000000000000000000000..ff8a7854c5a7cb453b550ff768a12fb8b83692d1 GIT binary patch literal 1588 zcmezO_TO6u1_mY|W&~r-obX_7T1dP`tW0lWY53mP-(M|0%s=WMuy7yYI?-y z-Qb!WT+qa%{Y&Xn%C9e9=Kky8PUhT}p5xLy`_^n*o?Tbc4?eh;r&r|A&k>gY;okO( zd)A~V&-wOnS8jN+LQA@a?u&v8-;b?+V>nT^NN=%1)&axIbL!^DH6-LT+kFbCth}Bw z*GR|Zi^OS{wIS>F`FTHQ4)tBodP7nukfG|Ov#25ab)CG7W#0m-j>1U%8CJhayThSdM(`J;cMFH~ZkfIgV>;qEA@u`7adld{wBf&+V)eGZtOA7x_sy zbc^fk=#t2#ZtBx7tq#`SxMiZMh|lZCXaCGuV)c8LMc;q>ITd>aW~nv{-J2#IF8OM^ z+Qs9a_UdGA-f78O79DSPG(7cL@3!Dss|!u7ZEMxPv++LSV4m5fpA^6J)04QqQ~&31 zFVs7FEbX#UOkd=b8_N`~Jdikho%JcRHut6<-3~F+{e`k7NW4l;D?Zo}P`1P|C9-`- z+pIsu%9X2pJ{?wH%J}uiik%a0ProRze@>h3QO#8hXU@!Q)!>*YzQS+kao#rv?;ZPm z;E3+&(u+H)^op35E#5a*Z8mq;-Sm@Qzj{p5Zd)%gHJ`hlg`EC=clQTFv##@9wRx5a@3dv!Pd74IlH@ior6%>?1fAJTWy*KB z`%{L&v$Qm zzIWpD-E*EVpZKh+;n|$dmoq0kZC&%Ue~0dihDP_7lP161xW~}iz!IdNo5$$c_Ki>H zY<}53@#&J~&o^!+MzfTG1V}TpuwX`NW_D^`dP-(uer2g%a(=FXoH(zcg@LJ|se!Sf zk%@5>m}_BZ4CM|duQtv{jz?he#N5~mjLS}@#zuze-=3_gncl(E{P~D>!GVa%eVe$l z_U-L1I3H+mq+{{LvYQRO>$x{CYS{2K^Bi|TQk&?~h77|Exy#+z+*(9*-kX~yF|=ii z+&q2vQf1o|*^Ra`|8}H_UE3{jLfOVu`#v+nRI@|Q*Bxy4H9d6Yo+0yzdFGm}8wBhN zSL+LXGca0kb1M@wBLm}NMFV*QSzuJj^0A1qh-~v*b}`)X;ICdeKhFoZSp0Gme(gf` z0Wc*p1D)Qa>}r|wmgCTLfn~iqXP$Qzw4G$r*r$9_+sAIYq59PB>yF3!BU`%+G!vfj zSC+q<819+9T5_}M+v}4OU1QTt+RrWC^H6uDP5ZC!JoP62zYnTpy^gVpEBiU6MlMTw z-S?luKYvS!Y5(*LdC2$0vbE>L>z#8SuI4(;BJ$Gg`x~$6yLNpHZK~9_k5NiLZ_cgH KB