如何修复https openid错误

时间:2013-04-27 10:53:03

标签: python django openid

我使用的是本地https协议和假证书。

使用django-openid-auth时,会出现此错误:

OpenID failed

OpenID discovery error: Error fetching XRDS document: (60, 'server certificate         verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none')

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

根据我的经验,在大多数情况下,验证人对自签名证书都很挑剔。

通常,在使用“假”证书时,您应该始终采取额外步骤并创建假CA并与CA签署假证书。如果不出意外,这会使您的测试更像现实生活场景。

以下是有关如何使用OpenSSL执行此操作的简要说明:

  1. 创建CA(自签名)openssl req -x509 -new -out ca.crt -keyout ca.key -days 3650
  2. 创建服务器密钥和csr openssl req -out server.csr -pubkey -new -keyout server.secure.key
  3. 取消密码openssl rsa -in server.secure.key -out server.key
  4. 使用CA openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 1825
  5. 对服务器证书进行签名
  6. (对于更多证书,请使用现有序列号openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAserial ca.srl -out server.crt -days 1825
  7. 每当您遇到任何 SSL(而不仅仅是HTTPS)的问题时 - 使用raw openssl进行调试

    openssl s_verify -connect <hostname>:<portnumber> <options>
    

    e.g。

    openssl s_verify -connect localhost:443 -CAfile myfakeca.pem
    

    这通常可以帮助您解决实际证书中与您的代码无关的问题。