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。
我正在尝试让 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。