ssl - 特定域的多个 SSL 证书 - Flask
问题描述
我有一个目录来存储证书,并将域及其 SSL 证书路径存储在数据库中
例如我有:
certs_dir:
- localhost1.pem
- localhost1.key
- localhost2.pem
- localhost2.key
我有 2 个不同的域,比如localhost1/index
和localhost2/index
,它们都托管在同一个 Flask 应用程序上
我希望每个域都使用它自己的 SSL 使用 Flask
甚至可能吗?如果是,那么如何?
我不想运行我的烧瓶应用程序ssl_context
,我想在我的中间件中查找路由的 SSL 证书,并在响应时决定使用哪个证书来处理这个请求
解决方案
TLS 握手,因此选择要呈现的证书,发生在任何 HTTP 交换之前。
只有在 HTTP 交换步骤中,客户端之间才会交换完整的 URL。在此之前,在 TLS 握手期间,客户端仅发送(通过 TLS SNI 扩展)它尝试联系的服务器的主机名。
因此,服务器只能基于请求的主机名来决定将哪个证书发送回客户端。
所以,不,只有 URL 中的本地路径发生变化的情况(就像问题的原始版本一样:localhost/cert1
vs localhost/cert2
)不能引发单独的证书。如果您使用不同的主机名,您可以这样做:realm1.example.com
和realm2.example.com
.
推荐阅读
- arrays - 在 Google 表格中提取 URL 减去路径
- string - 用最后一个特殊字符替换子字符串,是逗号分隔字符串的(第三部分)
- android - getStringExtra() 中的空值
- assembly - 为什么我需要偏移运算符?
- javascript - 为 mousemove 事件添加延迟
- excel - 条件格式 - 在 VBA 中突出显示
- haskell - 如何使用反驳来指导 Haskell 中的类型检查器?
- javascript - 如何在 three.js 中获得与我的 2D 上下文中相同的转换结果?
- flutter - 颤振 sqflite 错误 SqfliteDatabaseException
- ruby-on-rails - 如何在 Nokogiri 中使用 [% 特殊字符