繁体   English   中英

web.py上的SSL证书链不完整

[英]SSL certificate chain incomplete on web.py

我不知道如何在web.py应用程序上正确设置SSL证书链...

在python代码中,我有:

CherryPyWSGIServer.ssl_certificate = "/path/mycert.pem"
CherryPyWSGIServer.ssl_certificate_chain = "/path/mychain.ca-bundle"
CherryPyWSGIServer.ssl_private_key = "/path/mykey.key"

当我在Chrome中访问该域时,它表示该域是安全的。


然而,

  • 当我尝试从Rails应用发送webhook时,它会响应:

     SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 
  • 如果我尝试在命令提示符下使用openssl连接,如下所示:

     openssl s_client -showcerts -connect mydomain.com:443 

    ..it仅显示域的证书,而不显示链的其余部分,并且输出包含错误消息:

     verify error:num=20:unable to get local issuer certificate verify error:num=21:unable to verify the first certificate 
  • 如果我通过Qualys SSL Server Test运行该域,尽管该域以B等级通过,但在证书下显示:

     Chain issues Incomplete 

    ...并且在“认证路径”下,将中间产品标记为“额外下载”,而不是“由服务器发送”


我尝试了文件内容和文件扩展名的一些不同组合。

例如,我尝试过放:

  • 仅中级证书;
  • 中间体和根证书;
  • 域,中间体和根

...进入certificate_chain文件。 我也尝试过将整个链包含在证书文件中。 而且我尝试了扩展名.crt,.pem,.perm,.ca-bundle

是否有人对我可能需要的正确文件格式,包含方法,文件扩展名或任何其他配置选项有任何建议? 谢谢!


PS Python版本是2.7.12,pip Frozen显示了已安装的以下软件包:

cffi==1.8.3
cryptography==1.5.2
enum34==1.1.6
idna==2.1
ipaddress==1.0.17
pyasn1==0.1.9
pycparser==2.16
pyOpenSSL==16.2.0
requests==2.11.1
six==1.10.0
web.py==0.38

web.py v0.38不使用现成的证书链。 这意味着它将忽略您的CherryPyWSGIServer.ssl_certificate_chain编辑,因为它没有通过。

幸运的是,每个https://github.com/movb/webpy/commit/9f9f6838e49f17cf395282392c3fc2762a97460b都有一个简单的补丁

编辑web/httpserver.py ,以通过ssl_certificate_chain如果已定义)传递。 然后您的代码将起作用。

== web/httpserver.py ==
- def create_ssl_adapter(cert, key):
+ def create_ssl_adapter(cert, key, chain=None):

- adapter = pyOpenSSLAdapter(cert, key)
+ adapter = pyOpenSSLAdapter(cert, key, chain)

- server.ssl_adapter = crate_ssl_adapter(server.ssl_certificate, server.ssl_private_key)
+ server.ssl_adapter = create_ssl_adapter(server.ssl_certificate, server.ssl_private_key,
+                                         getattr(server, 'ssl_certificate_chain', None))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM