1

SSL 証明書が正しく構成されていない環境にアクセスしようとすると、次のエラーが発生します。

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:390)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:562)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:776)
at dispatch.BlockingHttp$class.dispatch$BlockingHttp$$execute(Http.scala:45)
at dispatch.BlockingHttp$$anonfun$execute$1$$anonfun$apply$3.apply(Http.scala:58)
at dispatch.BlockingHttp$$anonfun$execute$1$$anonfun$apply$3.apply(Http.scala:58)
at scala.Option.getOrElse(Option.scala:108)
at dispatch.BlockingHttp$$anonfun$execute$1.apply(Http.scala:58)
at dispatch.Http.pack(Http.scala:25)
at dispatch.BlockingHttp$class.execute(Http.scala:53)
at dispatch.Http.execute(Http.scala:21)
at dispatch.HttpExecutor$class.x(executor.scala:36)
at dispatch.Http.x(Http.scala:21)
at dispatch.HttpExecutor$class.when(executor.scala:50)
at dispatch.Http.when(Http.scala:21)
at dispatch.HttpExecutor$class.apply(executor.scala:60)
at dispatch.Http.apply(Http.scala:21)
at com.secondmarket.cobra.lib.delegate.UsersBDTest.tdsGet(UsersBDTest.scala:130)
at com.secondmarket.cobra.lib.delegate.UsersBDTest.setup(UsersBDTest.scala:40)

証明書を完全に無視したいと思います。

更新: 不適切に構成された SSL 証明書に関する技術的な問題を理解しています。問題はボックスではなく、使用しているサービスにあります。ほとんどの場合、prod/stg ではなくテスト ボックスで発生するため、調査中ですが、API をテストするために何かが必要でした。

4

3 に答える 3

5

次の理由により、「証明書を完全に無視する」ことはできません。

  1. この場合の問題は、クライアントがそれを提供していないことです。
  2. セキュリティが必要ない場合、SSL を使用する必要はありません。
  3. これらの主張された回避策の「開発用」の多く、おそらくほとんどが、本番環境に「漏えい」していることに疑いの余地はありません。安全でないシステムを構築すると、安全でないシステムを展開する重大なリスクがあります。不安を構築しないと展開できないため、リスクはなくなります。
于 2012-03-19T23:13:13.020 に答える
2

以下は、安全でないSSL証明書を許可することができました。

 Http.postData(url, payload).options(HttpOptions.allowUnsafeSSL,
                                     HttpOptions.readTimeout(5000))
于 2012-03-22T14:32:58.413 に答える
1

Dispatch の最新バージョン (0.13.2) では、以下を使用して、任意の証明書を受け入れる http クライアントを作成できます。

val myHttp = Http.withConfiguration(config => config.setAcceptAnyCertificate(true))

次に、次のような GET リクエストに使用できます。

myHttp(url("https://www.host.com/path").GET OK as.String)

(POST リクエストに応じて変更します...)

私はこれをここで見つけました:特定の URL に対してディスパッチが "java.net.ConnectException: General SSLEngine ..." および "unexpected status" 例外をスローするのはなぜですか?

また、証明書を検証する HTTP クライアントを作成するために、サンプル コードをhttps://kevinlocke.name/bits/2012/10/03/ssl-certificate-verification-in-dispatch-and-asynchttpclient/で見つけました。

于 2017-09-19T23:03:09.920 に答える