2 个扭曲的 SSL 证书

2023-12-03

我有这个代码:

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 个证书。我如何为扭曲添加第二个证书?


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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2 个扭曲的 SSL 证书 的相关文章

随机推荐

  • Java/Mongodb 身份验证

    我看到很多教程展示了如何使用 Java 在 mongodb 中进行身份验证 我的 mongodb 配置为启用身份验证 在控制台中我使用 使用管理员 db auth myUser newPassword 并且运行良好 在java中 在访问的每
  • 按组的平均值划分数据列

    如果我有一个数据框 例如 group rep 1 4 each 10 data c seq 1 10 1 seq 5 50 5 seq 20 11 1 seq 0 3 3 0 3 DF data frame group data 现在 我想
  • 检测 PHP 变量不足:FALSE、NULL、unset()、empty()?

    定义 PHP 中不存在某个值或不足以满足应用程序需求的最佳方法是什么 var NULL var array var FALSE 最好的测试方法是什么 isset var empty var if var NULL if var 将变量初始化
  • System.in.read实际返回什么?

    什么是 System in read 返回 这文档 says 返回 数据的下一个字节 如果到达流末尾则为 1 49是字符的 ASCII 值1 它是第一个字节的值 The stream of bytes that is produced wh
  • 如何使用 Android 从 Firebase 数据库获取嵌套子项?

    我想从这种类型的 JSON 树中获取所有允许的子项的列表 databaseRef child Users child Allowded addValueEventListener new ValueEventListener Overrid
  • Django 测试:查看创建错误响应的回溯

    该模式来自 django 文档 class SimpleTest unittest TestCase def test details self client Client response client get customer deta
  • Swift - 委托协议结构

    请原谅我对 Swift 还很陌生 我想创建一个用于 POST 请求并从服务器获取响应的委托 然后将从服务器返回的参数传递给 func 并允许我的主类做出相应的响应 下面是我的代表和我的主要课程 它没有打印 LoginViewControll
  • 使用 GoogleCloudMessaging 替换 GCMBaseIntentService

    我是 Android 开发新手 我不得不将我的第一个项目从 Eclipse 切换到 Android Studio 发现库 GCMBaseIntentService 不再受支持 我找到了 GoogleCloudMessaging 但完全不知道
  • 如何在没有 CSR 的情况下在 Tomcat 中安装 GoDaddy SSL 证书?

    我们的一位客户购买通配符 SSL 证书 example com 来自 GoDaddy 他只是简单下载 没有提供 CSR 数据 该 zip 文件中有 3 个文件 那些是fce4f111a61ea3f4 crt gd bundle g2 g1
  • 访问从模板类派生的类中的基成员函数[重复]

    这个问题在这里已经有答案了 我正在工作中开发一个库 并且设计了一个复杂的继承 其中包括模板类并从中派生 我的问题是基模板类具有虚拟重载运算符 它接受 2 个参数并返回一些值 在基类中实现了此运算符 并且大多数派生类没有重新实现此运算符 其他
  • React ReduxReducer:“this.props.tasks.map不是函数”错误

    我正在制作一个 React Redux 示例 但是 我遇到了一个问题并收到以下错误 类型错误 this props tasks map 不是函数 了解更多 我尝试了很多事情 但我似乎无法理解为什么这不起作用 我相信这是 allReducer
  • 从堆栈中删除 ViewController

    在我们的应用程序中 我们有一个登录ViewController A 用户登录时 会自动调用请求导航以导航到下一个ViewController B 然而 完成后我们想要删除登录ViewController A从堆栈中 因此用户无法 返回 到登
  • 在 pebble js 文件中包含外部 javascript 库?

    有什么方法可以在我的 pebble 代码中包含外部 JS 库吗 按照惯例 在网页上我会在我的 head 标签中执行此操作 但在 pebble 中 我无法做到这一点 因为我只使用 JS 那么我怎样才能包含 JavaScript 文件的外部库呢
  • require() 不适用于变量 - React Native

    我遇到一个奇怪的问题 如果我直接设置一个变量 其值类似于 const myString someWord 可以 但是如果我从像 const myString someVariable 这样的变量中获取值 则不起作用 并且如果我在条件块上设置
  • 而在Lua中,它是如何处理的呢?

    我在一个中看到了这段代码Lua 风格指南 print x yes and YES or x Context local function test x print x yes and YES or x rather than if x ye
  • 使用 Boost 库生成的 UUID 与 Java 的唯一性

    我组织的一个 Android 应用程序需要在每个用户首 次启动该应用程序时为其分配一个 UUID 版本 4 目前我们使用 Boost 库 1 58 0 用于此目的 我们的 Android 应用程序将使用 JNI 运行以下代码生成 UUIDv
  • vector::erase() 未按预期工作

    for it1 prime begin it1
  • 在 Python 中将 Excel 工作表从一个工作表复制到另一个工作表

    我想做的就是用 Python 将工作表从 Excel 工作簿复制到另一个 Excel 工作簿 我想保留所有格式 彩色单元格 表格等 我有许多 Excel 文件 我想将所有文件中的第一张工作表复制到一个工作簿中 如果对任何单个工作簿进行更改
  • 如何写入资源文件?

    如果可以从源文件中读取 如下所示 string fileContent Resources Users using var reader new StringReader fileContent string line while line
  • 2 个扭曲的 SSL 证书

    我有这个代码 from twisted web server import Site from twisted web static import Data from twisted internet import reactor ssl