0

クラスを実行すると、ローカルコンピューターでjavamailでメールを送信しようとしていますが、メールはうまく送信されます。

実稼働コンピューターでエラーが発生します:

Caused by: javax.mail.MessagingException: Could not convert socket to TLS (java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl))
        at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1230)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:378)
        at javax.mail.Service.connect(Service.java:271)
        at javax.mail.Service.connect(Service.java:91)
        at javax.mail.Service.connect(Service.java:76)
        at javax.mail.Transport.send(Transport.java:94)
        ... 8 more
Caused by: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
        at javax.net.ssl.DefaultSSLSocketFactory.throwException(SSLSocketFactory.java:179)
        at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:199)
        at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:249)
        at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1226)
        ... 13 more
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
        at java.security.Provider$Service.newInstance(Provider.java:1245)
        at sun.security.jca.GetInstance.getInstance(GetInstance.java:220)
        at sun.security.jca.GetInstance.getInstance(GetInstance.java:147)
        at javax.net.ssl.SSLContext.getInstance(SSLContext.java:125)
        at javax.net.ssl.SSLContext.getDefault(SSLContext.java:68)
        at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:102)
        at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:247)
        ... 14 more
Caused by: java.io.IOException: Invalid keystore format
        at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633)
        at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
        at java.security.KeyStore.load(KeyStore.java:1185)
        at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.getDefaultKeyManager(DefaultSSLContextImpl.java:150)
        at com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl.<init>(DefaultSSLContextImpl.java:40)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at java.lang.Class.newInstance0(Class.java:355)
        at java.lang.Class.newInstance(Class.java:308)
        at java.security.Provider$Service.newInstance(Provider.java:1221)
        ... 20 more

セキュリティ パスには、次のファイルがあります。

68595 Mar  9  2009 cacerts
 2221 Mar  9  2009 java.policy
 9937 Mar  9  2009 java.security
  132 Mar  9  2009 javaws.policy
 2940 Mar  9  2009 _local_policy.jar
 2481 Feb 28 12:54 local_policy.jar
 2469 Mar  9  2009 _US_export_policy.jar
 2465 Feb 28 12:54 US_export_policy.jar

trusted.certs ファイルはありません。

プロダクションではjdk 1.6.0_13を使用していますが、一部のファイルが古すぎる可能性はありますか? 最後の月曜日 (7/30) まで、すべてが本番環境でうまく機能していましたが、コードは何も変更されていませんでしたが、今ではこのエラーが発生しています。

どのファイルに問題があるのか​​もわからないので、何が悪いのかわかりにくいです。何かアイデアがあれば、私はそれを取ります!

手伝ってくれてありがとう !

4

2 に答える 2

1

最後の問題は、カスタム keyStore が管理者によって定義されたことでした:

-Djavax.net.ssl.keyStore=xxxxxxx.p12

そして、これが欠けていました:

-Djavax.net.ssl.keyStoreType=pkcs12

于 2012-10-05T13:06:14.860 に答える