【问题标题】:Using TLS/SSL trusted certificate improved performances使用 TLS/SSL 可信证书提高了性能
【发布时间】:2017-04-11 07:09:23
【问题描述】:

我们正在为企业开发基于云的服务。我负责的组件分为三个部分,一个简单的WEBassets服务器,一个API服务器(都是用Go写的)和实际的WEB 应用程序(基于AngularJS)。 WEB 应用程序流程非常简单,它从 Web 服务器下载资产和源文件,从 API 服务器下载数据。

直到昨天,我们一直在使用一个简单的自签名 SSL 证书,我一直在责备自己,因为整个应用程序很慢,我说的慢是指非常慢(我没想到实际测量它,但加载资产和源可能需要大约 3/4 秒,加载数据可能需要更多时间)。

昨天我们设法开始使用可信 SSL 证书(通过 Let'sEncrypt 获得),突然间我注意到性能有了显着提高。现在(测量)不到 2 秒即可完全加载并准备好使用。

现在,我猜真正的原因是,使用受信任的证书颁发机构和有效的 SSL 证书,浏览器和/或在 TLS 握手期间执行的安全检查更少,因此所有请求的性能下降较少。

但是:我是对的还是部分/完全错了?我错过了什么吗?

【问题讨论】:

  • 您是如何准确地(使用哪些命令行选项)生成自签名证书和 Let's Encrypt 证书的?
  • 这看起来很奇怪。你有没有改变什么?就像 SSL 配置设置一样。根据算法和支持的协议版本,SSL/TLS 的成本可能更高(顺便说一句,不是以秒为单位)。
  • @Zoyd 我自己没有生成它,但我设法通过使用来自 quay.io/letsencrypt/letsencrypt 的 docker 容器获取已执行的命令以生成证书。论据是:letsencrypt --name certbot certonly --standalone --preferred-challenges tls-sni(AFAIK 没什么特别的)
  • @MaurizioBenedetti 配置设置没有任何变化。 TLS 握手和 SSL 配置是 Golang HTTP 服务器提供的标准。
  • 所以 Let's Encrypt 证书使用默认值,假设 Docker 容器中的配置文件没有覆盖它们。自签名证书呢?

标签: performance ssl go https tls1.2


【解决方案1】:

为什么不使用 HAproxy 或 Nginx 作为带有 ssl/tls 的反向代理,然后将请求定向到您的应用程序。类似https://www.digitalocean.com/community/tutorials/how-to-secure-haproxy-with-let-s-encrypt-on-ubuntu-14-04

这样你就支持水平缩放了。

【讨论】:

  • 我们已经为生产环境设计并准备好了代理策略。有问题的案例与我们没有(或不需要)任何代理并且每个服务自己处理 TLS 握手的暂存环境有关。
猜你喜欢
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多