CherryPy SSL链式证书

时间:2015-04-16 15:45:03

标签: python ssl cherrypy

我试图让CherryPy使用SSL。

我遇到的第一个问题是Ubuntu上当前版本不支持,因此我已升级到最新版本,并使用自签名证书。

然后我从GoDaddy获得了链接的证书。我向他们提供了这个命令的输出:

openssl req -new -newkey rsa:2048 -nodes -out  [private info]

然后他们返回了两个文件,一个.crt和一个gd_bundle.crt。第一个包含: 一-----开始证书-----证书-----结束证书-----

第二个包含3,如上所述。

CherryPy是否使用链式证书?我已经看到这个link声明它需要修补并按照建议进行尝试,但修补程序失败并且该方法无效。

请有人解释我错过的内容或解决方法。

1 个答案:

答案 0 :(得分:2)

CherryPy至少从2011年开始支持中间证书(不确定版本)。它也有记录,如果您准确阅读Deploy SSL support文档部分,您会注意到以下内容。

  

如果您手头有证书链,您也可以指定它:   cherrypy.server.ssl_certificate_chain = "certchain.perm"

您可能知道最新版本CherryPy 3.6有SSL套接字问题,但它已在开发分支中修复,您可以从repo安装它,如:

pip install hg+https://bitbucket.org/cherrypy/cherrypy

测试可能看起来像这样。

#!/usr/bin/env python
# -*- coding: utf-8 -*-


import cherrypy


config = {
  'global' : {
    'server.socket_host' : '127.0.0.1',
    'server.socket_port' : 8080,
    'server.thread_pool' : 8,

    'server.ssl_module'            : 'pyopenssl',
    'server.ssl_certificate'       : '/path/to/certs/domain.com.crt',
    'server.ssl_certificate_chain' : '/path/to/certs/ssl123_ca_bundle.pem',
    'server.ssl_private_key'       : '/path/to/certs/domain.com.key',
  }
}


class App:

  @cherrypy.expose
  def index(self):
    return '<em>Is this secure?</em>'


if __name__ == '__main__':
  cherrypy.quickstart(App(), '/', config)

相关安全警告

请务必阅读此question。出于安全原因,我强烈建议您使用Python 2.7.9+或Python 3.4+,或者使用最新OpenSSL的pyOpenSSL。另外,请不要忘记使用全面的SSL测试程序Qualys's来测试您的部署。