Как использовать SSL с самоподписанным сертификатом в отличном?

У меня есть некоторые ресурсы, к которым я должен получить доступ с SSL, то использование самоподписало сертификаты. В целом большинство инструментов имеет простую установку, чтобы позволить им быть полученными доступ без ошибки или просто предупреждения. Однако это походит на надлежащий способ сделать, что это с JVM должно импортировать сертификат подписания в keystore как Приблизительно.

У меня есть отличный сценарий, который я хотел бы использовать, но я предпочту, чтобы мой сценарий работал автономный над любой любой JVM, не изменяя keystore или распределяя новый keystore. Существует ли простой способ переопределить проверку сертификации?

12
задан ataylor 13 July 2010 в 23:28
поделиться

3 ответа

После небольшого исследования я нашел этот пост . Вот что я в итоге использовал:

import javax.net.ssl.HostnameVerifier
import javax.net.ssl.HttpsURLConnection
import javax.net.ssl.SSLContext
import javax.net.ssl.TrustManager
import javax.net.ssl.X509TrustManager

def nullTrustManager = [
    checkClientTrusted: { chain, authType ->  },
    checkServerTrusted: { chain, authType ->  },
    getAcceptedIssuers: { null }
]

def nullHostnameVerifier = [
    verify: { hostname, session -> true }
]

SSLContext sc = SSLContext.getInstance("SSL")
sc.init(null, [nullTrustManager as X509TrustManager] as TrustManager[], null)
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory())
HttpsURLConnection.setDefaultHostnameVerifier(nullHostnameVerifier as HostnameVerifier)

Используйте на свой страх и риск: это подрывает проверку сертификата!

18
ответ дан 2 December 2019 в 06:44
поделиться

] Если вы вызываете программу командной строки curl , а не используете собственные инструменты groovy / JVM, вы можете отключить проверку сертификатов для своего пользователя, выполнив следующую команду из командной строки:

$ echo 'insecure' >>~/.curlrc
-4
ответ дан 2 December 2019 в 06:44
поделиться

Мне просто пришлось пройти через это с приложение Grails, над которым я работаю. Вы будете иметь дело с хранилищем ключей только один раз. Предполагая, что у вас есть сертификат, просто поместите его в хранилище ключей, а затем укажите свой jvm в хранилище ключей с помощью свойств командной строки ...

edit - я не знаю никакого способа обойти необходимость в хранилище ключей. Но вы можете создать его, используя только необходимые сертификаты, и передать его вместе с вашим приложением. Вы делаете это только один раз.

edit edit - вот команда для keytool и java CL prop

keytool -import -trustcacerts -alias www.the-domain.com -file the-cert.der -keystore store.jks

-Djavax.net.ssl.trustStore=/path/to/store.jks
9
ответ дан 2 December 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: