Spring 使用Linkedin进行身份验证时出现SSLHandshakeException

Spring 使用Linkedin进行身份验证时出现SSLHandshakeException,spring,spring-boot,spring-security,linkedin,spring-social-linkedin,Spring,Spring Boot,Spring Security,Linkedin,Spring Social Linkedin,我在使用Spring Social与Linkedin进行身份验证时遇到一些问题 到目前为止,我可以在http://localhost:8080/signin在我的服务器上,点击链接到auth/linkedin重定向到https://www.linkedin.com/uas/oauth2/authorization?...,允许访问后,会重定向回http://localhost:8080/auth/linkedin?...。此时,我的服务器将发布到https://www.linkedin.com/

我在使用Spring Social与Linkedin进行身份验证时遇到一些问题

到目前为止,我可以在
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
说到证书,我远不是专家。据我所知,LinkedIn证书被拒绝。为了让它被接受,LinkedIn证书或颁发它的证书颁发机构的证书必须在我的信任存储中

错误表明我两者都没有。因此,一种解决方案似乎是简单地将证书颁发机构的证书导入信任存储

这似乎是个坏习惯。我想我是在和linkedin交谈,但信任链的重点不是假设,而是证明某人的身份,在这种情况下,这并没有发生。如果我只是假设某人是他们所说的人,证书就会失去价值


而且,我似乎一开始就不应该犯这个错误。我没有发现其他人对Linkedin有任何问题,我很难相信他们不会使用公认的证书颁发机构。那么问题的根本原因是什么呢?

事实证明,在我忘记的开发的早期阶段,我为一些自签名证书创建了一个新的密钥库,设置为“-Djavax.net.ssl.trustStore=…”。这取代了默认的cacerts密钥库。现在我已经将我的证书导入到了cacerts中。

事实证明,在我忘记的开发的早期阶段,我为一些自签名证书创建了一个新的密钥库,设置为“-Djavax.net.ssl.trustStore=…”。这取代了默认的cacerts密钥库。现在我已经将我的证书导入到cacerts中