CherryPy SSL 链式证书

CherryPy SSL Chained Certificates

我正在尝试让 CherryPy 使用 SSL。

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

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

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

然后他们返回了两个文件,一个 .crt 和一个 gd_bundle.crt。第一个包含: 一个 -----BEGIN CERTIFICATE----- 证书 -----END CERTIFICATE-----

第二个包含 3,如上。

CherryPy 是否使用链式证书?我看到这个 link 说它需要修补并按建议尝试,但修补失败并且该方法无效。

有人可以解释我遗漏了什么或如何解决这个问题。

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

If you have a certificate chain at hand, you can also specify it: 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. I strongly recommend you to use Python 2.7.9+ or Python 3.4+ for security reasons or pyOpenSSL with latest OpenSSL available to you. Also don't forget to test your deployment with comprehensive SSL tester, Qualys's