使用Let's Encrypt证书思考中间兼容性SSL

让我们加密是一个免费的,自动化的和开放的认证机构(CA),为公众的利益服务。让我们加密的关键原则是:

让我们加密的关键原则是免费的:任何拥有域名的人都可以使用我们的加密来获取零成本的受信任的证书。

  • 免费:任何拥有域名的人都可以使用“我们的加密”获得零成本的受信任证书。
  • 自动:在Web服务器上运行的软件可以与Let's Encrypt进行交互,从而无痛地获取证书,安全地配置它,并自动处理更新。
  • 安全:我们加密将作为推动TLS安全最佳实践的平台,无论是在CA侧还是通过帮助站点运营商正确保护其服务器。
  • 透明:所有发出或撤销的证书将被公开记录,供任何人查阅。
  • 开放:自动发行和更新协议将作为其他人可以采用的开放标准发布。
  • 合作:与底层互联网协议本身一样,让我们​​加密是为了使社区受益匪浅,超越了任何一个组织的控制。
    (来源: https : //letsencrypt.org/about/

介绍

首先我们要提一下我们加密服务的一些黑暗面。 然而,免费公开和公开认证机构的理念是伟大的,它给我们带来了许多麻烦。 开发人员试图使获取证书的系统尽可能简单,但是它仍然需要较高的服务器管理技能。 因此,许多像ISPConfig( http://www.ispconfig.org/ )这样的开发人员已经将这个解决方案直接实现到他们的。 这使得人们对整个系统的更有效的部署和监督更加容易和灵活。

真正的并发症

许多人决定实施让我们加入他们的生产基地。 我觉得这不是一个非常(但非常非常)小心的做法,这是一个非常坏的主意。 让我们加密为您带来自由,但也限制了使用SHA-256 RSA加密的证书。 在过去几年中,对SHA-256的支持有所改善。 大多数浏览器,平台,邮件客户端和移动设备已经支持SHA-256。 但是,一些较旧的操作系统(如Windows XP pre-SP3)不支持SHA-256加密。 许多组织将能够转换为SHA-256而不会遇到用户体验问题,许多组织可能希望鼓励用户运行较旧的,较不安全的系统进行升级。

在本教程中,我们将以简单但仍然令人讨厌的方式处理这种不兼容性。

先决条件

  • Apache版本2.4及更高版本
  • OpenSSL 1.0.1e及更高版本
  • 启用Apache mod_rewrite

整个想法

如前所述,仍然存在与互联网中SHA-256签名不兼容的设备。 当我被迫在某些网站部署SSL时,我必须在两个选项之间进行选择:

  1. 使用我们加密,免费,但不是所有。
  2. 购买128位签名的证书。

那么,仍然是选项不。 1是唯一的方式,因为它被承诺给客户很久以前(:没有更多的理论:

没有更多的理论

我希望我已经解释了需要的,现在我们可以处理我们网站上不支持的观众。 有很多人使用SP2和更低版本的Windows XP机器(是的,还有很多)。 所以我们必须过滤这些人。

在您的“/etc/apache2/sites-available/your_domain.com.conf”中,在文件末尾添加以下内容:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !(NT\ 5) [NC]
RewriteRule ^(.*) https:// your_domain.com [R]

RewriteCond从访问您的页面的访客的http头获取一个字符串。 您可以在此查看您的更多信息: http : //www.useragentstring.com/

我们使用的条件告诉我们像“如果字符串不包含”NT 5“”,那么RewriteRule执行/应用将[R]重定向到您的域的https变体的规则,NT 5是Windows XP设备的操作系统版本字符串如果您不使用此重定向,不兼容的用户将无法访问您的https网站。

如果您不使用此重定向,不兼容的用户将无法访问您的https网站。我必须警告您,该解决方案不是100%完美的一些

我必须警告你,这个解决方案不是100%完美,因为一些客人不必提供相关或真实的信息。 我已经与AWstats合作了解未知系统正在访问我的网页的速度,大约是1.3%,所以很少的请求。 如果要处理未知的操作系统以确保其兼容性,您可以在条件中添加未知数(RewriteCond%{HTTP_USER_AGENT}!(NT \ 5 | unknown)[NC])。

Awstats

成功“不重定向”您的不兼容的访问者(保持在http不安全的世界),您可以专注于https侧。

HTTPS配置

现在我们假设您已经将证书分配给您的Web服务器,并启用它。
再次在您的vhost配置文件中,添加以下内容:

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA 
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder On

这里使用的CipherSuite比平常要长一些。 这是为了更好的兼容性。 您可以从以下网址获取您自己的: https : //cipherli.st/https://mozilla.github.io/server-side-tls/ssl-config-generator/

我必须再次提到,你将永远不会得到一个完美的配置,以满足高安全性和兼容性。 你应该找到妥协。

使用这些设置后,您可以通过以下网址来测试服务器配置和兼容性: https//www.ssllabs.com/ssltest/index.html

您将找到一长串兼容设备和不兼容的设备,还有一些更多的信息指向您自己的“完美”解决方案。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏