适用于特定域的多个SSL证书-Flask

时间:2019-07-08 22:55:21

标签: ssl flask

我有一个目录来存储证书,并且将域及其SSL证书路径存储在数据库中

例如,我有:

certs_dir:
   - localhost1.pem
   - localhost1.key
   - localhost2.pem
   - localhost2.key

我有两个不同的域,例如localhost1/indexlocalhost2/index,它们都托管在同一个Flask应用上

我希望每个域都使用Flask使用自己的SSL

有可能吗?如果是,那怎么办?

我不想使用ssl_context运行flask应用程序,我想在中间件中查找路由的SSL证书,并确定响应时用于此请求的证书

1 个答案:

答案 0 :(得分:2)

TLS握手(因此选择要显示的证书)发生在任何HTTP交换之前。

仅在HTTP交换步骤中,客户端之间才交换完整的URL。在此之前,以及在TLS握手期间,客户端仅(通过TLS SNI扩展名)发送了它尝试联系的服务器的主机名

因此,服务器只能基于请求的主机名来决定将哪个证书发送回客户端。

因此,不,您的情况是URL中仅本地路径发生了更改(就像问题的原始版本:localhost/cert1localhost/cert2一样)不能引发单独的证书。如果您使用不同的主机名:realm1.example.comrealm2.example.com,则可以这样做。