Давайте зашифруем SSL-сертификат, не принятый JVM - PullRequest
0 голосов
/ 17 января 2019

Я установил сервер Apache Symfony 4.2 и запросил SSL-сертификат через Let's Encrypt, который отлично работает с браузерами.

Теперь я написал приложение на Kotlin / Java, которое связывается с сервером через OKHttp и Retrofit. Я установил соединение через:

val client = OkHttpClient.Builder()
    .connectTimeout(60, TimeUnit.SECONDS)
    .readTimeout(60, TimeUnit.SECONDS)
    .writeTimeout(60, TimeUnit.SECONDS)
    .addInterceptor(BasicAuthInterceptor(username, password))
    .build()

val retrofit = Retrofit.Builder()
    .baseUrl(baseUrl)
    .addConverterFactory(GsonConverterFactory.create())
    .client(client)
    .build()

Теперь я ожидал, что мне просто придется начать baseUrl с https вместо http, но когда я попытался подключиться, я получил исключение

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target)...

Я установил самую новую версию Java, поскольку где-то писал, что сертификаты Let's Encrypt должны приниматься с более новыми версиями. Тем не менее, я следовал этому Руководству , чтобы импортировать Сертификат со Страницы в Truststore JVM, но это ничего не изменило.

В качестве временного обходного пути я следую этому Руководству , чтобы Принять все Сертификаты, которые работали, но, конечно, я бы предпочел сделать это правильно!

У кого-нибудь есть подсказка, что еще я мог бы попробовать? Я работаю над MacOs X High Sierra for Development, вот где появилась проблема.

...