【问题标题】:2 SSL certificates in twisted2 SSL 证书扭曲
【发布时间】:2014-09-19 14:36:23
【问题描述】:

我有这个代码:

from twisted.web.server import Site
from twisted.web.static import Data
from twisted.internet import reactor, ssl

root = Data("", "text/plain")
site = Site(root)
reactor.listenSSL(config.ws_port, site,
                      ssl.DefaultOpenSSLContextFactory(
                        '/etc/apache2/ssl/wc.key',
                        '/etc/apache2/ssl/wc.crt')
                      )

但我有额外的域和另一个证书。我需要为每个域使用 2 个证书扭曲工作。我怎样才能为twisted添加第二个证书?

【问题讨论】:

    标签: python ssl twisted


    【解决方案1】:

    TLS 与 HTTP 一起支持多个主机名的方式是使用包含所有这些主机名的单个证书(例如,subjectAltName 扩展名)或使用多个证书(每个证书都少于完整的一组主机名)和 SNI TLS 扩展。

    如果您想使用前一种解决方案,您需要做的就是获取正确构造的证书。你如何做到这一点可能取决于你从哪里获得证书。也许证书供应商对此有一个特殊的用户界面,或者您使用的证书请求生成器可能有控制它的选项。

    如果您想使用后一种解决方案,请调查txSNI

    from txsni.snimap import SNIMap
    from txsni.tlsendpoint import TLSEndpoint
    
    from twisted.web.server import Site
    from twisted.web.static import Data
    from twisted.internet import reactor
    from twisted.internet.ssl import Certificate, KeyPair, PrivateCertificate
    from twisted.internet.endpoints import serverFromString
    
    def main(reactor):
        root = Data("", "text/plain")
        site = Site(root)
    
        def load(key_path, cert_path):
            with open(key_path) as key_file:
                key = KeyPair.loadPEM(key_file.read())
    
            with open(cert_path) as cert_file:
                 cert = cert.read()
    
            return PrivateCertificate.fromCertificateAndKeyPair(cert, key)
    
        snimap = SNIMap({
            "DEFAULT": load('/etc/apache2/ssl/wc.key', '/etc/apache2/ssl/wc.crt').options(),
            "another.host.name": load(another_key, another_cert).options(),
            ...
        })
    
        endpoint = TLSEndpoint(serverFromString(reactor, "tcp:80"))
        endpoint.listen(site)
    
        reactor.run()
    

    【讨论】:

    • 你能用 txSNI 修改我的例子吗?
    猜你喜欢
    • 2013-02-08
    • 2012-04-23
    • 2014-11-20
    • 2019-01-24
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多