2016-07-23 8 views
0

証明書を(JAVA_HOMEが指している)cacertsにインポートしましたが、このエラーが発生しています。問題を把握することはできません。 Microsoft ESMTPサーバーであるクライアントのメールサーバーからのファイアウォールの問題はありません。私は私のサーバからこれをtelnetすることができます。試したSSLpokeがタイムアウトになっています。ポート25のtcpdumpを試して、前後の通信を見ることができます。基本的に、メールサーバーからの送信メールをトリガーしようとしています。javax.mail.MessagingException:SMTPホストにコマンドを送信できません。

詳細なエラーログは次のとおりです。

によって引き起こさ:javax.mail.MessagingException:SMTP ホストにコマンドを送信できません。ネストされた例外は次のとおりです。 javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIXパスの構築に失敗しました: sun.security.provider.certpath.SunCertPathBuilderException:できない にCOMで要求されたターゲット への有効な証明書パスを見つけます.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1420) (com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1408) 、com.sun.mail.smtp.SMTPTransport.ehlo (SMTPTransport.java:847) com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:384) at javax.mail.Service.connect(Service.java:297) at javax.mail.Service .connect(Service.java:156) at javax.mail.Service.connect(サービス.java:105) at javax.mail.Transport.send0(Transport.java:168) at javax.mail.Transport.send(Transport.java:98) at com.issuetracker.esb.mail.GmailImpl.transportMessageキーツールで証明書をインポートするときcom.issuetracker.esb.mail.Mail.sendSRMailで(GmailImpl.java:94) (Mail.java:188)

答えて

0

あなたは-trustcacertsパラメータを使用しましたか?

編集:このトピックに関する私の会話では、エラーが発生する特定の理由が説明されていましたが、「回答」のようには見えませんでした。

PKIXパスの構築に失敗しました: sun.security.provider.certpath.SunCertPathBuilderException: にできないが、有効な証明書パスを見つける要求されたターゲットへ

このエラーはの目的のために、有効な証明書チェーンを示し、実行中のJRE(デフォルトでは、JREのjre/lib/security/cacertsファイル内)で使用されている常駐キーストアファイルから、受信証明書を信頼することができませんでした。この

典型的な原因は、次のとおりです。keytoolコマンドを使用して証明書をインポートするときにパラメータを含めるように無視

は-trustcacerts。

JREは、受信した証明書と一致することが分かっている証明書を探している場合、この方法で信頼できるとマークされた証明書のみを検討します。

証明書には、JREにルート証明書がインストールされていないルートCAによって署名されています。

通常、これは、JREが(まだ)何も知らない社内のCAなどの未知のルート証明機関(CA)によって署名された証明書を持つか、他の大手ベンダーほど人気が​​ないので、ブラウザやOSにはすでにルート証明書があるかもしれないが、Javaはそれに同梱されていないかもしれない。

この問題を解決するには、ルートCA証明書を入手してインストールし、それに信頼できるマークを付ける必要もあります。

仲介者として機能する証明書署名を提供する企業もあります。つまり、自分自身のルートCAを所有していないが、信頼できるルートCAによって証明書が渡されている要求(CSR)。これらのケースでは

、あなたはまた、中間証明書を入手してインストールしない限り、あなたは、独自の証明書とその下にあるルートがすでにインストールされ、信頼されたCAがありながら、それから「証明書チェーンが」壊れていると、有効な証明書パスをすることはできません製。要約で

だから、可能な解決策は以下のとおりです。

  1. は-trustcacertsパラメータを使用して他のサイトのためのすべての証明書のインストールを実行します。
  2. キーストアファイルにルートCA証明書も存在するかどうかを確認し、存在しない場合は、keytool -importcert -trustcacertsも使用して取得してインストールします。
  3. フルチップを完了するための中間証明書もあるかどうか確認してください。そうであれば、キーストアファイルにkeytool -importcert -trustcacertsを使用して取得してインストールしてください。

注:ファイルをダブルクリックしてWindowsの.crtファイルを調べると、証明書のパスを調べ、必要なものを表示するのに役立つルートと中間のCAがあるかどうかを確認できます。

完全で有効な証明書チェーンがインストールされ、キーストアファイルに信頼されると、エラーは合格します。

+0

いいえ私はこのパラメータを追加しませんでした。 – harsh

+0

keytool -importcert ...コマンドは以前と同じように繰り返す必要があります(最初にcacertsファイルから古いcertエイリアスエントリを削除してください)が、-trustcacertsすでにjre/lib/security/cacertsファイルを指しているにもかかわらず、 – topdog

+0

私はkeytool -import -file -alias -trustcacerts -keystore cacertsを使用しましたが、エラーは引き続き発生します。 – harsh

関連する問題