Ssl

當公共端點是 https 時,使用 http 與本地 API 通信是否安全?

  • October 6, 2021

語境

我有一個如下所示的伺服器設置:

  • 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 配置),以便:

    • 通過 SSL/TLS 支持將 API 公開給最終使用者,
    • 並能夠從公共 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>

取決於訪問主機本身的權限。如果系統僅處理 http/https 流量並且不允許使用者(管理員除外)登錄,我會說是的,這是安全設計…

問題是誰和何時可以潛在地擷取敏感數據。SSL 終止無論如何都是在伺服器上完成的,因此無論如何都會存在不安全數據的部分(例如 RAM)。因此,除非系統被限制訪問並且不安全的數據不會離開系統(例如不通過網卡),否則數據將是安全的。

本地連接上的 SSL 層不會有很大的好處,因為所有密鑰都位於系統上。在對本地流量進行解密/加密時節省的資源可用於系統可以處理的更多連接……

引用自:https://serverfault.com/questions/1079533