2017-08-03 11 views
3

こんにちはを見つけていない証明書パスのトラストアンカーは、小さなが仕えるセットアップを持って、レッツ・暗号化から自由な証明書を生成し、その証明書(fullchain.pemとprivkeyを使用するようにnginxのを構成し.PEM)レッツ・暗号化はjava.security.cert.CertPathValidatorExceptionを与える:

私はOkHttp3と私のAndroidアプリ() から電話をかけるしようとしたときしかし、私は

java.security.cert.CertPathValidatorException: Trust anchor for certification path not found 

このエラーを取得するには、Androidの証明書の信頼ストアで信頼されていませんレッツ・暗号化されたルート証明書ですか?または、nginxを設定するときに何かが恋しくなったのですか? これを回避する方法まだ証明書を暗号化しようとしていますか?

+0

"Android証明書ストアで信頼されていないルート証明書を暗号化しますか?" Androidのバージョンによって一部異なります。古いデバイスでは問題が発生しやすくなります。 「または、nginxをセットアップするときに何かが恋しくなったのですか? - 通常のWebブラウザでテストし、ブラウザが不満を持っているかどうかを確認します。 "これを回避する方法" - OkHttpで証明書のピン設定を行い、Let's Encryptルート証明書に固定します。 – CommonsWare

+0

通常のアンドロイドブラウザを使用すると、JDKのトラストストアに関する問題のように見えるかもしれません。/ – Johny19

+0

解決策はありましたか?私は同じ問題を抱えている – jaumard

答えて

1

は、私はそれが役に立つか分からないけど、/etc/letsencrypt/live/<your domain>/READMEファイルは言う:

このディレクトリには、あなたの鍵と証明書が含まれています。

privkey.pem:証明書の秘密鍵。

:ほとんどのサーバーソフトウェアで使用される証明書ファイル。

chain.pem:NginxでのOCSPステープル留め=> 1.3.7。

cert.pem:多くのサーバー構成が壊れてしまい、 を使用することはできません(詳しくは下記のリンクを参照してください)。

これらのファイルを移動しないことをお勧めします。詳細については、 Certbotユーザーガイド https://certbot.eff.org/docs/using.html#where-are-my-certificatesを参照してください。

chain.pemを使用する必要がありますか?

一方、Nginxを使用していない人でも、fullchain.pemの代わりにchain.pemを誤って使用したため、Androidから同じエラーが発生しました。 Androidアプリのための解決策の一つは、あなたが証明書(すなわち:fullchain.pem)のチェーン全体を送信する必要が、ここで説明したように、:

https://developer.android.com/training/articles/security-ssl.html#CommonHostnameProbs

をこの問題を解決するには、2つのアプローチがあります。

    は、
  • サーバー チェーンに中間CAを含めるようにサーバーを構成します。ほとんどのCAは、すべての一般的なWebサーバでこれを行う方法に関するドキュメントを提供しています。あなたは、少なくともアンドロイド4.2によってデフォルトのAndroidブラウザで を動作するようにサイトを必要とする場合、これが唯一の方法です。

  • または中間のCAを他の未知のCAのように扱い、 セクションで行われたように、TrustManagerを直接信頼するために TrustManagerを作成します。

希望します。

関連する問題