• SpringBoot获取resource下证书失败


    1.第一种失败的情况:

       本来使用Spring的上下文容器获取文件,将证书文件放在resource下,编译后获取文件会出现报错

    java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : DerInputStream.getLength(): lengthTag=111, too big.
    at sun.security.rsa.RSAKeyFactory.engineGeneratePrivate(RSAKeyFactory.java:217)
    at java.security.KeyFactory.generatePrivate(KeyFactory.java:372)
    at com.msok.signatured.crypto.KryptoUtil.getStoredPrivateKey(KryptoUtil.java:136)
    at com.msok.signatured.xml.digsig.XmlDigitalSignatureGenerator.generateXMLDigitalSignatureXML(XmlDigitalSignatureGenerator.java:254)
    at com.msok.signatured.xml.digsig.GetXmlDigtalSign.DigtalSignProcess(GetXmlDigtalSign.java:32)
    at com.msok.insure.service.impl.PayJLYHServiceImpl.checkFour(PayJLYHServiceImpl.java:104)
    at com.msok.insure.service.dubbo.PayPlatformFacadeImpl.payPlatForm(PayPlatformFacadeImpl.java:117)
    at com.alibaba.dubbo.common.bytecode.Wrapper27.invokeMethod(Wrapper27.java)
    at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)
    at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)
    at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)
    at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64)
    at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)  


    这个报错的原因是因为, maven会替换war中的证书文件替。那证书为什么会被修改呢,是maven-resources-plugin作怪。

    详细资料有博客 https://blog.csdn.net/wolf_love666/article/details/51448596 根据博主的解决方式可以处理该异常

    2.第二部失败的情况

    项目打包使用的SpringBoot打包成jar在服务器上部署,发现一直获取不到证书文件。

      获取证书文件方式是

    File pfxfile = SpringContextUtils.getApplicationContext().getResource("classpath:key" + File.separatorChar + xinyanProperties.getPfxName()).getFile();
    

      最后查找相关资料,这种获取文件的方式不能获取jar里边的文件,jar里边文件只能通过流的方式获取。

    最后使用

    InputStream stream = getClass().getClassLoader().getResourceAsStream("key" + File.separatorChar + xinyanProperties.getPfxName());

    问题解决

  • 相关阅读:
    js之面向对象
    常用功能
    html圆环(该代码非原创,具体出处已不详)
    关于jsonp的一篇文章(传播好的东西)
    当切换select时,获取select选中的值;获取选中的单选按钮的val,判断复选框是否选中
    js类型判断(数字、0、""、undefined、null)
    js获取窗口可视范围的高度、获取窗口滚动条高度、文档内容实际高度
    66
    55
    44
  • 原文地址:https://www.cnblogs.com/mlfz/p/10282643.html
Copyright © 2020-2023  润新知