SSLHandshakeException при аутентификации с помощью Linkedin

У меня есть некоторые проблемы с аутентификацией с Linkedin с помощью Spring Social.

Пока я могу открыть форму на http://localhost:8080/signin на моем сервере, где нажмите на ссылку auth/linkedin перенаправляет на https://www.linkedin.com/uas/oauth2/authorization?..., который после разрешения доступа перенаправляет обратно на http://localhost:8080/auth/linkedin?..., На этом этапе мой сервер отправляет в https://www.linkedin.com/uas/oauth2/accessToken, но не с:

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is 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
...
Caused by: 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
...
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Я далек от эксперта, когда дело доходит до сертификатов. Насколько я могу судить, сертификат Linkedins отклоняется. Для того чтобы он был принят, либо сертификат Linkedins, либо сертификат центра сертификации, который его выдал, должен находиться в моем хранилище доверенных сертификатов.

Ошибка указывает на то, что у меня нет ни того, ни другого. Таким образом, кажется, что одним из решений является простой импорт сертификата центра сертификации в хранилище доверенных сертификатов.

Это похоже на плохую практику. Я предполагаю, что разговариваю с linkedin, но смысл цепочки доверия не в том, чтобы предполагать, а в том, чтобы доказать, что кто-то идентифицирует себя, и в этом случае этого не произошло. Если я просто предполагаю, что кто-то, кто они говорят, сертификат теряет ценность.

Кроме того, кажется, я не должен был получить эту ошибку в первую очередь. Я не нашел других людей, имеющих проблемы с Linkedin, и мне трудно поверить, что они не будут использовать признанный центр сертификации. Итак, что может быть основной причиной проблемы?

1 ответ

Оказывается, что на более ранней стадии разработки, о которой я забыл, я создал новое хранилище ключей для некоторых самозаверяющих сертификатов с параметром "-Djavax.net.ssl.trustStore=...". Это заменило хранилище ключей по умолчанию cacerts. Теперь я импортировал свои сертификаты вместо этого.

Другие вопросы по тегам