我遇到了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%肯定 他们有相同的环境设置。
我不想相信我的证书有问题,因为它来自其他应用程序,如果我清理我的项目就可以读取。
问题:
答案 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>