当公共端点是 https 时,使用 http 与本地 API 通信是否安全?

当公共端点是 https 时,使用 http 与本地 API 通信是否安全?

语境

我有一个如下所示的服务器设置:

  • Apache 服务器正在监听example.com
  • 公共端口80重定向至443
  • 公共端口443转发到 Symfony 项目;
  • 在同一台机器上,有一个用 Rust 编写的本地 API 服务器,它正在监听 http://127.0.0.1:8030不支持 SSL/TLS(英文):
  • 本地 API 能够响应一些敏感数据,例如 JWT 身份验证令牌;
  • https://example.com/api是本地 API 服务器的代理(ProxyPass以及ProxyPassReverse,请参阅下面的 Apache 配置),以便:
    • 向最终用户公开 API支持 SSL/TLS
    • 并能够从公共 Symfony 网站向其发送 XHR javascript 请求。

笔记:我使用本地 API 的代理进行了此设置,因为我在 CORS 规则方面遇到了很多麻烦;但这是不是我的问题的主题(我猜有更好的设置)。

问题

这个设置可以被认为是安全的吗,或者是否应该为本地 API 添加 SSL/TLS 支持是一个好主意?

Apache 配置,稍微简化一下

<VirtualHost *:80>
   ServerName example.com
   Redirect / https://example.com
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com

    DirectoryIndex /index.php

    ProxyPass /api http://127.0.0.1:8030/
    ProxyPassReverse /api http://127.0.0.1:8030/

    SSLEngine on
    SSLProtocol -ALL +TLSv1.2 +TLSv1.3
    SSLCompression off
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    SSLCACertificateFile /etc/letsencrypt/live/example.com/fullchain.pem

    DocumentRoot /var/www/html/symfony_project/public
    <Directory /var/www/html/symfony_project/public>
        AllowOverride All
        Require all granted
        Allow from All
        FallbackResource /index.php
    </Directory>

    ErrorLog /var/log/apache2/symfony_project_error.log
    CustomLog /var/log/apache2/symfony_project_access.log combined
</VirtualHost>

答案1

取决于访问主机本身的权限。如果系统仅处理 http/https 流量,并且不允许任何用户(管理员除外)登录,我会说是的,这是安全的设计...

问题是谁和何时可能捕获敏感数据。SSL 终止无论如何都是在服务器上完成的,因此无论如何都会存在不安全数据的部分(例如 RAM)。因此,除非系统访问受到限制并且不安全数据不会离开系统(例如不会通过网卡),否则数据将是安全的。

本地连接上的 SSL 层不会带来太大的好处,因为所有密钥都位于系统上。解密本地流量所节省的资源可用于系统可以处理的更高连接量...

相关内容