我可以从我的工作站很好地连接并给自己发送电子邮件
工作站版本:
- Java - 1.6.0_21
- 雄猫 - 6.0.29
但是在服务器上我得到一个错误:
javax.mail.MessagingException: Could not connect to SMTP host:
smtpa.state.ak.us, port: 465
(java.net.SocketException: java.security.NoSuchAlgorithmException:
Error constructing implementation
(algorithm: Default, provider: SunJSSE,
class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl))
在堆栈跟踪的底部是以下部分
Caused by: java.io.IOException: Keystore was tampered with, or password was incorrect
at sun.security.provider.JavaKeyStore.engineLoad(Unknown Source)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(Unknown Source)
at java.security.KeyStore.load(Unknown Source)
at com.sun.net.ssl.internal.ssl.TrustManagerFactoryImpl.getCacertsKeyStore(Unknown Source)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultTrustManager(Unknown Source)
at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
... 76 more
Caused by: java.security.UnrecoverableKeyException: Password verification failed
... 88 more
服务器正在运行:
- Java - 1.6.0_18-b-07
- 雄猫 - 6.0.28
Javamail 与我的 Web 应用程序捆绑在一起,版本为1.4.3
编辑:
为了完整起见,我将捆绑的Javamail升级到1.5.0-b01
我仍然遇到同样的错误。
keytool -list -keystore <path-to-default-java-keystore>
使用默认的 java 密钥库密码可以在两个系统上使用。
进一步编辑:
经过一番挖掘后,我发现了这个 SO Question: Accessing Tomcat's configured KeyStore and TrustStore
我在我的应用程序中添加了一些日志记录语句:我在工作站上得到的结果与在服务器上得到的结果相同。
10-25@12:20:30 DEBUG [statements] TextEmail - javax.net.ssl.trustStore: null
10-25@12:20:30 DEBUG [statements] TextEmail - javax.net.ssl.trustStorePassword: fedizPass
10-25@12:20:30 DEBUG [statements] TextEmail - javax.net.ssl.trustStoreType: null
10-25@12:20:30 DEBUG [statements] TextEmail - javax.net.ssl.keyStore: null
10-25@12:20:30 DEBUG [statements] TextEmail - javax.net.ssl.keyStorePassword: fedizPass
10-25@12:20:30 DEBUG [statements] TextEmail - javax.net.ssl.keyStoreType: null
如果您仔细查看,默认密码不会返回,信任存储也不会返回。我为WS-FEDERATION配置了自定义trustStore的Fediz-1.1.0-SNAPSHOT我的 Fediz 代码正在使用Spring-Security插件。所有这些都正常工作。我在我的 WorkStation 和测试服务器上都部署了第二个应用程序,它也使用它。它也可以正常工作,并且可以通过 FTPS 将文件发送到另一台服务器。此外,如果它在 SystemProperties 中提供了错误的密码,那么为什么它在我的工作站上工作而不是在服务器上工作?