遗留组件的 TLS 1.2 解决方法

TLS 1.2 workaround for legacy component

我有一个 Windows 应用程序在野外使用一个非常旧的组件通过 HTTPS 联系身份验证服务器:

http.QuickGetStr("https://www.myserver.com/validate?license=myserial)

这 return 是一个包含身份验证数据的数组。

我需要将 Apache 更新到 TLS 1.2,因为同一台服务器用于电子商务方面,浏览器现在显示 "insecure" 而非 运行 TLS 1.2+

问题是与认证服务器通信的应用程序中使用的组件不支持 TLS 1.2,因此当服务器更新到 TLS 1.2 时,所有退出的用户都无法再以组件失败并且 return 没有任何身份验证数据。我可以而且肯定会用更现代的组件更新应用程序,但这对不更新的旧用户没有帮助。

我需要找到一种方法将身份验证服务器切换到 TLS 1.2,同时又不关闭对将启动应用程序但无法进行身份验证的现有用户的访问。一个想法是在新的更新中使用新的身份验证 URL 并以某种方式通过 .htacess 重定向身份验证请求并以一种方式发送 TLS 1.0 请求,而 TLS 1.2 请求另一种方式。那行得通吗?

您应该能够使用 RewriteCond 解决此问题。需要启用 ModRewrite

NameVirtualHost *:443
SSLStrictSNIVHostCheck on

<VirtualHost *:443>
  DocumentRoot /var/www/html
  ServerName my.domain.com

  SSLProtocol TLSv1 TLSv1.2

  RewriteEngine On
  RewriteCond %{SSL:SSL_PROTOCOL} ^TLSv1$
  RewriteCond %{REQUEST_URI} !^/validate$
  RewriteRule .* "-" [F]

  <Directory "/var/www/html">
    Order Deny,Allow
    Allow from all
  </Directory>
</VirtualHost>