1

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

到目前为止,我可以http://localhost:8080/signin在我的服务器上打开一个表单,单击链接auth/linkedin重定向到https://www.linkedin.com/uas/oauth2/authorization?...,在允许访问后,重定向回http://localhost:8080/auth/linkedin?.... 此时,我的服务器 POST 到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 有问题,而且我很难相信他们不会使用公认的证书颁发机构。那么问题的根本原因可能是什么?

4

1 回答 1

0

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

于 2017-07-28T21:47:03.363 回答