出现错误行为,错误为java.security.cert.CertificateParsingException

时间:2014-08-12 21:44:25

标签: eclipse maven tomcat ssl

我遇到了SSL和Java的一些问题。 我会尽快快速清楚。

这是一个Java Webapp,必须阅读电子邮件并使用这些电子邮件制作内容。 我有证书可以连接到邮箱。

Technicals info : 
Eclipse : Luna
Project : compiled with JDK 1.6
Tomcat : pluged with Eclipse, launched with JDK 1.6
Tomcat on Test server : launched with JDK 1.6
Maven pom.xml : compiler plugin source/target : 1.6

这是我的问题:

当我第一次结账时(通过Git)或当我用maven编译它时:

mvm clean compile eclipse:eclipse

我在Eclipse中编写了一个“ok”的项目并编译。 Ok对我来说意味着:来源编译,api没问题,库可以(JDK 1.6),webapp在Tomcat上运行正常。

然后,如果我尝试阅读邮件,我收到了这个错误:

java.net.SocketException: java.security.NoSuchAlgorithmException: 
Error constructing implementation (algorithm: Default, 
provider: SunJSSE, class: sun.security.ssl.DefaultSSLContextImpl)

DEBUG: getProvider() returning provider protocol=imaps;     type=javax.mail.Provider$Type@7df92e01; class=com.sun.mail.imap.IMAPSSLStore; vendor=Sun     Microsystems, Inc
DEBUG: mail.imap.fetchsize: 16384
keyStore is : 
keyStore type is : jks
keyStore provider is : 
init keystore
init keymanager of type SunX509
trustStore is: D:\Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\leaseit dev\WEB-INF\classes\certif\client-truststore.jks
trustStore type is : jks
trustStore provider is : 
init truststore
default context init failed:     java.security.cert.CertificateParsingException:java.io.IOException: DerInputStream.getLength(): lengthTag=50, too big.

如果那时,我只是用Eclipse清理我的项目(使用Options - > Clean),那么,我没有SSL问题。在我的测试服务器上,当我使用maven部署它时,我总是遇到问题。

我认为这是一种非常奇怪的行为,我无法找到问题所在。 我已经阅读了很多网络上的线程(包括Stackoverflow),我已经检查过我是否有jsse.jar,我把javax.mail调试,我试过调试但是错误也出现了远在代码中......: - (

  

奇怪的事实:我有一个其他网络应用程序,分享所有“阅读   邮件“部分,我没有问题。但我不是100%肯定   他们有相同的环境设置。

我不想相信我的证书有问题,因为它来自其他应用程序,如果我清理我的项目就可以读取。

问题:

  • 你建议我做哪些测试?
  • 为什么简单的“干净”会解决我的问题?
  • 它与我的jdk或我的证书是否与其他应用程序相同?

1 个答案:

答案 0 :(得分:0)

我怀疑你的client-truststore.jks被maven过滤破坏了。尝试使用以下maven-resources-plugin配置在您的pom中停用它。

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-resources-plugin</artifactId>
   <version>2.6</version>
   <configuration>
       <nonFilteredFileExtensions>
           <nonFilteredFileExtension>jks</nonFilteredFileExtension>
       </nonFilteredFileExtensions>
   </configuration>
</plugin>