Ssl
當公共端點是 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 配置),以便:
- 通過 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 層不會有很大的好處,因為所有密鑰都位於系統上。在對本地流量進行解密/加密時節省的資源可用於系統可以處理的更多連接……