Игнорирование SSL-сертификатов в Scala-рассылке - PullRequest
1 голос
/ 19 марта 2012

При попытке попасть в среду с неправильно настроенными сертификатами 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.

Ответы [ 3 ]

5 голосов
/ 20 марта 2012

Вы не можете «полностью игнорировать сертификаты» по следующим причинам:

  1. Проблема в этом случае заключается в том, что клиент даже не предоставил один.
  2. Есливам вообще не нужна безопасность, зачем вообще использовать SSL?
  3. Я не сомневаюсь, что многие, возможно, большинство из этих предполагаемых обходных путей «для разработки» «просочились» в производство.Существует значительный риск развертывания небезопасной системы, если вы строите небезопасную систему.Если вы не встраиваете небезопасность, вы не можете развернуть ее, поэтому риск исчезает.
1 голос
/ 20 сентября 2017

Для самой новой версии 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 ...)

Я обнаружил это здесь: Почему диспетчер выбрасывает "java.net.ConnectException: General SSLEngine ...Исключения "и" неожиданное состояние "для определенного URL?

И чтобы создать Http-клиент, который проверяет сертификаты, я нашел здесь пример кода: https://kevinlocke.name/bits/2012/10/03/ssl-certificate-verification-in-dispatch-and-asynchttpclient/.

1 голос
/ 22 марта 2012

Следующим разрешено использование небезопасных сертификатов SSL.

 Http.postData(url, payload).options(HttpOptions.allowUnsafeSSL,
                                     HttpOptions.readTimeout(5000))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...