2017-12-19 11 views
-1

2つのスプリングブートアプリケーションがあり、互いに要求する必要があります。それらはhttps経由で動作し、私はhereと同じように両方に対して同じキーストアを作成しました。しかし、最初の送信要求が第二、私は次のエラーを取得するとき:両方のアプリケーションで同じキーストアを使用している場合のSSLハンドシェイク例外

Caused by: javax.net.ssl.SSLHandshakeException: SSLHandshakeException invoking https://service: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 

SSLプロパティが

server.port = 5000 
security.require-ssl=true 
server.ssl.key-store-type:PKCS12 
server.ssl.key-store=classpath:keystore.p12 
server.ssl.key-store-password=secret 
server.ssl.key-alias=alias 

ですまた、私はそれが言及されるべきだと思う - 証明書は自己署名されています。

私が逃した、または間違っていることは?

答えて

0

これは意味をなさない。各エンドのアイデンティティは同じではないので、証明書は同じであってはなりません。さもなければ、彼らは間違っていません。

あなたが必要です:

  • 2のキーストア
  • 2トラスト
  • 2つの証明書を

    • 2の鍵ペア

      各キーストア内の証明書はにエクスポートしてからインポートする必要がありますそれぞれのケースでピアのトラストストア。

  • +0

    同じエラーです。 JDKキーストアに証明書を追加するとすべてがOKになりました。 Googleは、証明書が自己署名しているときにこの問題が発生する可能性のある記事をいくつか示しています。 同じキーストアを使用する理由は、同じ外部サービスと通信する2つの部分で分割された1つのアプリです。 – Anatoly

    +0

    もしあなたがカスタムトラストストアを使用しているなら、 'javax.net.ssl.trustStore'プロパティを介してJavaについて*通知する必要があります。 – EJP

    関連する問題