Apache:允许一台主机使用 TLS 1.0,同时强制所有其他主机使用 1.2?

     2023-03-10     258

关键词:

【中文标题】Apache:允许一台主机使用 TLS 1.0,同时强制所有其他主机使用 1.2?【英文标题】:Apache: Allow TLS 1.0 for one host while forcing all others to use 1.2? 【发布时间】:2018-08-23 00:03:10 【问题描述】:

有没有办法将 Apache mod_ssl 配置为允许对一个特定 IP 使用 TLS 1.0,同时对所有其他 IP 强制使用 TLS 1.2? 我需要支持来自仅支持 TLS 1.0 的旧系统的连接,但我不想为每个主机完全打开 TLS 1.0。 我知道 IP 欺骗等,但基于 IP 的限制(如果可能的话)似乎是在旧系统被替换之前的最佳折衷方案。

【问题讨论】:

不起作用,请参阅serverfault.com/questions/637344/… 了解基本原理。 【参考方案1】:

有两种方法可以解决您的问题,具体取决于您的客户端的行为方式,或者取决于您的偏好(带有 Allow 指令的本机 Apache,或基于 Rewrite)

您需要知道客户端是否支持 SNI(捕获握手将回答此问题)。大多数客户端都支持它,即使是 TLS 1.0,但由于它是一个遗留系统,可能不支持。

如果不支持 SNI,您可以声明两个虚拟主机,其想法是将所有遗留请求发送到第一个 VH(支持 TLS 1.0),第二个 VH 将回答其他人。 IP 检查由 Allow 指令完成:

NameVirtualHost *:443
SSLStrictSNIVHostCheck off

# For the legacy
<VirtualHost *:443>
  DocumentRoot /var/www/html
  ServerName unknown

  SSLProtocol TLSv1
  <Directory "/var/www/html">
    Order Deny,Allow
    Deny from all
    Allow from 192.168.1.50 # your legacy ip
  </Directory>
</VirtualHost>

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

  SSLProtocol TLSv1.2
  <Directory "/var/www/html">
    Order Deny,Allow
    Allow from all
  </Directory>
</VirtualHost>

如果允许 SNI,我们可以使用 RewriteCond 解决问题。我相信它需要更多的 CPU,因为使用 RewriteEngine,但解决方案 1 也可以用这个替代。您需要启用 Rewrite 和 Remoteip 模块。

NameVirtualHost *:443
SSLStrictSNIVHostCheck on

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

  SSLProtocol TLSv1 TLSv1.2

  RewriteEngine On
  RewriteCond %SSL:SSL_PROTOCOL ^TLSv1$
  RewriteCond %REMOTE_ADDR !"192.168.1.50" #your legacy ip
  RewriteRule .* "-" [F]

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

让我们知道结果。

【讨论】:

在一台 Apache 服务器上的单独虚拟主机中运行 Apache mod_php 和 mod_fastcgi

】在一台Apache服务器上的单独虚拟主机中运行Apachemod_php和mod_fastcgi【英文标题】:RunningApachemod_phpandmod_fastcgiinseperatevhostsononeApacheserver【发布时间】:2015-12-0418:49:16【问题描述】:所以,我需要在一台服务器上运行多个php应用程... 查看详情

如何只允许从 Apache Httpd 2.4 上的特定主机访问?

】如何只允许从ApacheHttpd2.4上的特定主机访问?【英文标题】:HowtoallowaccessonlyfromaspecifichostonApacheHttpd2.4?【发布时间】:2019-05-0620:20:01【问题描述】:我正在使用ApacheHttpd2.4作为网络服务器,但我无法仅允许从特定主机访问我的... 查看详情

Apache 403 禁止从所有 <Directory> 允许 - 虚拟主机 [重复]

】Apache403禁止从所有<Directory>允许-虚拟主机[重复]【英文标题】:Apache403forbiddenonallowfromall<Directory>-virtualhosts[duplicate]【发布时间】:2018-01-0316:56:42【问题描述】:我的httpd-vhosts文件的DocumentRoot出现403错误。\'注意:我使... 查看详情

配置apache虚拟主机,实现在一台服务器上运行多个网站

配置apache虚拟主机,实现在一台服务器上运行多个网站apache虚拟主机实现有三种方法:1、通过不同的IP地址2、通过不同的域名3、通过不同的端口号三种都需要把虚拟主机功能打开:[[email protected]~]#vim/etc/httpd/conf/httpd.conf改:... 查看详情

使用 SSL 代理 [关闭]

...发布时间】:2011-10-0912:59:13【问题描述】:我有一台运行Apache的Linux主机和一台运行IIS的Windows主机。我有一个指向Linux主机的域,需要将它的请求中继(代理)到IIS;因此,我在Apache中有以下虚拟主机定义(效果很好):<Virtua... 查看详情

ssh客户端无法远程连接其中一台linux主机,但远程同网段其它主机均可以正常连接,都能ping通。

SSH客户端无法远程连接其中一台Linux主机,但远程同网段其它主机均可以正常连接,都能ping通。远程的其它任意一台主机用命令行均可以正常连接该主机,防火墙没有问题,UFW和IPtables尝试开启和关闭故障现象没有变化。客户端... 查看详情

Apache 2.2 虚拟主机 + Tomcat 7 应用程序

】Apache2.2虚拟主机+Tomcat7应用程序【英文标题】:Apache2.2Virtualhosts+Tomcat7applications【发布时间】:2013-01-1311:35:06【问题描述】:我在同一台机器上安装了一台apache服务器和一台tomcat7服务器。apache服务器使用并配置了启用的虚拟主... 查看详情

如何仅允许访问 apache 中本地主机的文件夹

】如何仅允许访问apache中本地主机的文件夹【英文标题】:howtoallowaccesstofoldersonlyforlocalhostinapache【发布时间】:2017-09-1115:50:20【问题描述】:我想只允许本地主机访问这些文件夹.htaccess文件无法正常工作OrderDeny,AllowDenyfromallAllowf... 查看详情

如何强制“OpenConnect”客户端使用 TLS 1.0

】如何强制“OpenConnect”客户端使用TLS1.0【英文标题】:Howtoforce\'OpenConnect\'clienttouseTLS1.0【发布时间】:2020-09-0304:07:28【问题描述】:我在RedHatEnterpriseLinux8.1(Ootpa)上使用“OpenConnectv8.05版”来连接服务器。服务器只接受SSLv3、TLSv1.... 查看详情

配置apache虚拟主机,实现在一台服务器上运行多个网站

Apache虚拟主机实现有三种方法:1、通过不同的IP地址2、通过不同的域名3、通过不同的端口号 1、通过不同的IP地址,解析不同的域名(1)给服务器增加IP(另一个域名解析)[[email protected]~]#ifconfigeth0:1192.168.2.12查看添加成... 查看详情

sni协议分析

...始时通过客户端告诉它正在连接的服务器的主机名称。这允许服务器在相同的IP地址和TCP端口号上呈现多个证书,并且因此允许在相同的IP地址上提供多个安全HTTPS网站(或其他任何基于TLS的服务),而不需要所有这些站点使用相... 查看详情

通过配置强制在 wcf 客户端 c# 中使用 tls 1.0

】通过配置强制在wcf客户端c#中使用tls1.0【英文标题】:Forcebyconfigtousetls1.0inawcfclientc#【发布时间】:2015-12-1801:05:02【问题描述】:我们有一个使用WCF实现客户端的Web应用程序。此客户端使用SSL_LVL3与外部服务进行握手。事实证明... 查看详情

使用 SSL 的 Apache 名称虚拟主机

】使用SSL的Apache名称虚拟主机【英文标题】:ApacheNameVirtualHostwithSSL【发布时间】:2010-10-0518:20:21【问题描述】:我正在尝试设置我们的服务器以允许通过SSL进行流量。我知道SSL不适用于NameVirtualHost,但我们所有的apache服务器都... 查看详情

如何将 Apache 2.4 配置从 SSL 支持更改为 TLS

】如何将Apache2.4配置从SSL支持更改为TLS【英文标题】:HowtochangeApache2.4configurationfromSSLsupporttoTLS【发布时间】:2015-02-1716:10:41【问题描述】:我在WindowsServer2008R2上安装了Apache2.4(不使用IIS)我目前启用了带有2048证书的SSL。如何更... 查看详情

apache虚拟主机配置详细教程(代码片段)

文章目录Apache虚拟主机企业应用部署一个端口不同域名调试worker工作模式进行压力测试权限设置Apache配置文件详解ApacheRewrite规则讲解Apache配置文件权限操作总结Apache虚拟主机企业应用企业真实环境中,一台WEB服务器发布单个... 查看详情

如何使用 Conscrypt 和 Apache HttpClient 5 来​​加速 TLS

】如何使用Conscrypt和ApacheHttpClient5来​​加速TLS【英文标题】:HowtouseConscryptwithApacheHttpClient5tospeedupTLS【发布时间】:2020-05-2111:38:31【问题描述】:在ApacheHttpClient5中使用Conscrypt的推荐方法是什么?我尝试将conscrypt-openjdk-uber-2.2.1.j... 查看详情

一台服务器搭建两个不同域名的网站如何配置apache

...能正常访问网站A(默认80端口);3.那么我应该如何配置apache,使通过域名B能访问到网站B(10009端口,已开)?最简单高效的方法如下:1.先打开Apache的配置文件httpd.conf,在这个文件,找到这句:“#Includeetc/extra/httpd-vhosts.conf”... 查看详情

如果没有 TLS 1.0,WCF .NET 4.0 将无法工作

...9-1901:31:48【问题描述】:在我工作的公司中,我们有一个使用.NETFramework4.0中的SSL在net.tcp上使用WCF的产品。在特定客户端中,出于安全原因,存在禁用SSL2、SSL3和TLS1的要求。问题是如果没有TLS1.0,通信就无法工作。谁能告诉我 查看详情