82

今朝から、Android で証明書が信頼されなくなり、アプリケーションが接続できなくなりました。

 Catch exception while startHandshake: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
 return an invalid session with invalid cipher suite of SSL_NULL_WITH_NULL_NULL
 javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
    at org.apache.harmony.xnet.provider.jsse.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:137)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
    at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:591)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:807)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:781)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:770)

Google Chrome (PC 上) で試しても問題はなく、証明書は信頼されていますが、Android の Chrome ブラウザーで試してみると、証明書が信頼されていないと表示されます。私に何ができる?

4

14 に答える 14

19

crt バンドルを作成する必要があります。3 つの crt ファイルを受け取ります。それらをすべて使用してください!domain.crt のみを使用した場合、Android では警告が表示されますが、PC では表示されません。

私はnginxを使用しています。domain_name.crt を開き、次に positivesslca2.crt を開き、すべてを選択して domain_name.crt の末尾にコピーします。次に、AddTrustExternalCARoot.crt を開き、もう一度 domain_name.crt の末尾にコピーします。次に、domain_name.crt をインストールします。

うまくいきます。

于 2012-12-02T20:49:45.590 に答える
2

私は同じ問題を抱えていましたが、私の問題はデバイスの日付と時刻が正しくないことでした。証明書が信頼されていることを修正したら。

于 2017-01-27T20:42:27.100 に答える
0

SSLCertificateChainFile各中間証明書に複数のディレクティブを使用しようとしたときに、Apache 2.2 で同じ問題が発生しました。代わりに、3 つすべてを 1 つのファイルに連結する必要がありました。彼らが「バンドル」として私のためにこれを行ったGoDaddyから来て、この追加のステップは私にとって新しいものでしたが、Apacheのドキュメントを読み直すとこれが明らかになりました.

すべての中間体を実際の証明書と連結できるようになったため、このディレクティブはApache 2.4.8で廃止されました。

于 2014-09-22T17:15:23.407 に答える
0

Godaddy 証明書を使用すると、おそらくdomain.key, gd_bundle_something.crtand (ランダムな英数字の文字列)が含まれます。4923hg4k23jh4.crt

次のことを行う必要があります。cat gd_bundle_something.crt >> 4923hg4k23jh4.crt

そして、nginxでは、使用します

ssl                  on;
ssl_certificate      /etc/ssl/certs/4923hg4k23jh4.crt;
ssl_certificate_key  /etc/ssl/certs/domain.key;
于 2016-03-30T13:31:00.980 に答える
0

手遅れではないことを願っています。ここでのこのソリューションはうまくいきました。私は COMODO SSL を使用しています。上記のソリューションは時間の経過とともに無効になるようです。私のウェブサイトlifetanstic.co.ke

Comodo サポートに連絡して CA バンドル ファイルを取得する代わりに、次のことを行うことができます。

Comodo から新しい SSL 証明書を (メールで) 受け取ると、zip ファイルが添付されています。zip ファイルを解凍し、メモ帳などのテキスト エディターで次のファイルを開く必要があります。

AddTrustExternalCARoot.crt
COMODORSAAddTrustCA.crt
COMODORSADomainValidationSecureServerCA.crt

次に、各「.crt」ファイルのテキストをコピーし、「認証局バンドル (オプション)」フィールドにテキストを重ねて貼り付けます。

その後、通常どおり「証明書」フィールドに SSL 証明書を追加し、「証明書によるオートフィル」ボタンをクリックして、「インストール」をクリックします。

于 2015-05-20T16:00:13.543 に答える
-1

デバイスに証明書がない可能性があります。

この回答を見てみてください: How to install tr​​usted CA certificate on Android device? 自分のデバイスに CA をインストールする方法を参照してください。

于 2012-07-05T08:23:35.200 に答える