目前,我的apacheconfiguration包含一个 SSL证书(所有的域列为备用主题名称)。 此外,我还为每个域提供一个虚拟主机configuration,以同时处理SSL和非SSL请求。 所有这些都发生在一个公共IP上。 我想切换到多个SSL证书,每个域使用主题名称指示。 我知道,如果我复制所有的虚拟主机configuration条目,一个端口80和一个端口443 SSL(如已经在SF上讨论)是可能的。 但我宁愿有一些类似于我目前的设置,这些function: 所有SSL相关configuration在一个地方。 在最好的情况下,告诉apache“在这个目录中使用所有SSL证书,并且为每个HTTP请求,根据SNI信息select正确的证书” 虚拟主机configuration不重复,完全没有提及SSL。 可以使用一个虚拟主机configuration来服务许多域名,同时仍然有单独的证书。 那可能吗?
我不太了解Apacheconfiguration中的if语句,而且我想知道是否只有在某个端口上收到请求时才能应用configuration的一部分。 总之,这是关于SSL。 我有基于名称的虚拟主机,我可以对端口80进行configuration,然后将其全部复制到端口443,并添加相关的SSLconfiguration。 但是这似乎是多余的。 我想知道如果我能有这样的东西: <VirtualHost *:80 *:443> 然后我可以把: <IfModule mod_ssl.c> SSLEngine on SSLCertificateFile … SSLCertificateKeyFile … SSLCACertificateFile … </IfModule> 在一个if语句中检查连接是否在端口443上,或者是不可能的? 服务器支持SNI,我不担心不符合SNI的浏览器。
我的服务器上有许多SSL主机通过Nginx SNI提供服务。 但是,当我input该服务器的IP地址时,将看到第一个configuration了虚拟主机的证书警告。 是否有可能完全停用默认的SSL主机? 任何其他的想法,你们这样做呢?
我们有一个SaaS应用程序,允许客户使用他们自己的域名 – 非常典型。 该架构的核心是一个简单的通用虚拟主机(apache),软件负责根据主机名parsing哪个客户。 但是,我们的许多客户都要求该自定义域名支持SSL。 目前我们通过使用SSL证书添加(更高优先级)虚拟主机并重新启动apache来实现这一点。 虽然这有效,但它有一些问题: 你要么重新启动apache,这意味着暂时的市中心,或切换到一个全新的服务器堆栈的DNS。 在偶然的机会有一个问题,我们没有赶上SSL证书,Apache抛出一个致命的错误,将无法重新启动。 把这个推广到成千上万的用户是不可能的或者至less是不切实际的。 简而言之 – 它不会缩放。 我们已经在负载均衡器中探索了SSL终止…这是有希望的,但是我们找不到任何支持多个SSL证书(通过SNI)的负载均衡器。 向前发展,越来越成为产品的瓶颈 – 如果需要的话,我们愿意改变架构或者离开Apache。
当我去: http : //web-sniffer.net/并检查我的网站的标题( https://www.example.org ),我得到一个状态代码200 但是当我使用单选buttonHTTP / 1.0(没有主机头),我得到一个状态代码400(坏请求)。 我的apache日志说:“通过SNI提供的主机名www.example.org,但没有HTTP请求中提供的hostnmae” 我读了,使其工作我需要closures指令“SSLStrictSNIVHostCheck”在我的Apacheconfiguration文件。 我添加了这个指令,但是在制作HTTP / 1.0(没有主机头)的时候,我仍然得到了状态码400。 作为参考,这是我的ports.conf文件: ServerName www.example.org NameVirtualHost *:80 Listen 10.0.0.1:80 <IfModule mod_ssl.c> # If you add NameVirtualHost *:443 here, you will also have to change # the VirtualHost statement in /etc/apache2/sites-available/default-ssl # to <VirtualHost *:443> # Server Name Indication for SSL named virtual hosts […]
以前我在这里问过一个问题: 在共享IP上为所有域提供的单域SSL关于在单个IP上设置安全和非安全域。 意见不一,但似乎SNI持有解决scheme。 不幸的是,我不能按要求工作。 https://domaina.com – 按预期工作 https://domainb.com – 介绍domaina.com证书,而不是预期的。 我希望它不响应SSL请求。 我希望我的服务器只发送domaina.com的证书domaina.com发送其他主机名,即使这意味着向非SNI客户端发送403错误。 我在香草Ubuntu Server 12.04 LTS上的当前configuration如下: Ports.conf … <IfModule mod_ssl.c> NameVirtualHost *:443 Listen 443 </IfModule> … 域虚拟主机 <VirtualHost *:80> ServerName domaina.com ServerAlias www.domaina.com DocumentRoot /var/www/domaina.com/public ErrorLog /var/www/domaina.com/logs/error.log CustomLog /var/www/domaina.com/logs/access.log combined </VirtualHost> <IfModule mod_ssl.c> <VirtualHost *:443> ServerName domaina.com ServerAlias www.domaina.com DocumentRoot /var/www/domaina.com/public SSLEngine on SSLCertificateFile /etc/apache2/ssl/domaina.com.crt […]
只是想知道SNI是否有用于将公共内容与私人内容分离。 我设法configuration我们的服务器为每个客户端服务/foo ,但只为来自内部网的客户端提供/bar服务,方法是指定仅从intranetparsing的主机名。 所以configuration如下:(剥离到非常必要的部分) NameVirtualHost *:443 # JkWorkersFile must be global so including it here JkWorkersFile workers.properties <VirtualHost *:443> ServerName public.foo.com JkMountFile uriworkermap-pub.properties </VirtualHost> <VirtualHost *:443> ServerName private-foo JkMountFile uriworkermap-priv.properties </VirtualHost> <VirtualHost *:443> ServerName 10.1.2.3 JkMountFile uriworkermap-priv.properties </VirtualHost> 问题在于,如果您将该名称添加到hosts文件中以parsing公有IP,则SNI实际上将以与从Intranet发出的有效请求相同的方式处理它。 我围绕着只使用数字IP而不是名字(例如10.1.2.3 )的想法,但是我认为如果客户端在自己的子网中有相同的IP地址,也可能会被欺骗(例如,一个将端口转发到公有IP的Linux主机我的networking服务器。 节点位于我没有影响力的防火墙后面。 它只有一个IP(内部的),但如果需要的话,我可以把它做成两个。 实际的问题是:你如何防止这样的泄漏? 例如通过htaccess? 通过指定不同的IP地址? 还是没有别的办法,而不是创build一个单独的服务器实例,忘记SNI?
我们的网站通过内容交付networking(AWS CloudFront)提供静态内容,该networkingconfiguration为响应多个CNAME,并为这些主机名使用SSL通配符证书。 由于CDN可以服务于来自相同IP地址的许多不同的虚拟主机,因此客户端需要SNI支持。 我们很清楚一些操作系统/浏览器组合不支持SNI ,所以我们基于User-Agent头实现了对http的回退。 然而,一些客户反馈说,内容没有被送达。 似乎没有哪种浏览器或操作系统出现问题,例如现代Windows上的现代Chrome会引发ERR_CONNECTION_CLOSED 。 另外,整个办公室也会遇到同样的问题,所以有一个强烈的迹象表明,这个问题来自于networking设置而不是个人客户。 当我们转向非SNI解决scheme时,问题就消失了。 那么,我的问题是,如果networking中的其他元素可以阻止TLSv1和/或SNI? 网关,路由器,代理服务器,VPN或其他任何可能在networking设置中find的东西是否可以以某种方式防止TLSv1 / SNI工作?
我有两个不同的“家庭”的相关网站,每个在同一台服务器上都有自己的UCC证书。 我将它们托pipe在同一台IIS服务器上,每个家庭使用一个IP地址。 这两个UCC证书都来自GoDaddy。 每个绑定(对于UCC中的每个SAN)都具有“要求服务器名称指示”禁用。 但是,当我尝试从Windows XP上的IE 8访问网站时,只有一个“家庭”的网站工作。 另一个就是不谈判。 当分析SSLLabs.com上的SSL时,我得到以下结果 – 告诉我“这个网站只能在支持SNI的浏览器上运行”。 但是这怎么可能呢! 我已经禁用了“要求SNI”每443次绑定。 我甚至看过applicationHost.config文件,并没有一个sslFlags="1"站点来表示这个设置是启用的。 是的,我也重新启动IIS。 这是怎么回事。 我很难过 我想知道如果我可以完全禁用服务器上的SNI,或者什么会触发这种事情发生。 我昨天做了几个月的Windows更新,但坦率地说,我认为这已经很长一段时间了,没有我意识到 – 基于IE8 XP客户端销售的$ 0 😉 编辑:我真的认为我的IIS已经损坏。 当我运行netsh http show sslcert每一个绑定的forms都是IP:port。 根据这篇文章,如果SNI启用,那么我会看到hostname:port ,我看不到这种格式的条目。 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslSniBindingInfo中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslSniBindingInfo中也没有条目,但是如果我暂时添加一个SNI绑定,我确认在这里创build了一个新条目。 IP:port : 10.0.0.2:443 Certificate Hash : d59a149e6678bc10d62093401c5b705cc23094be Application ID : {4dc3e181-e14b-4a21-b022-59fc669b0914} Certificate Store Name : My Verify Client Certificate Revocation : Enabled Verify […]
编辑新的问题: NGINX可以检查TLS请求寻找SNI像HAProxy(等)吗? 根据我所读到的(据我所知),NGINX不应该支持SNI,我应该为HAProxyselectSSL透明的反向代理。 精细。 但是, 这似乎表明NGINX实际上支持SNI,但我无法find一个有用的文件。 也就是说,我能够find的所有东西都意味着我仍然必须向NGINX提供证书,以便能够匹配请求的主机名。 但是,这不就是SNI试图解决的问题吗? 现在,我开始在相同的IP地址上运行大量不同的HTTPS站点,因为在许多不同的configuration中维护相同的信息时,会花费很多代价,所以我想知道我是否更好开槽NGINX,并学习另一个软件(又名HAProxy),或者如果我真的可以坚持NGINX – 以及如何。 理想情况下,我希望代理为encryptionstream量提供一种透明的隧道,只有客户端和后端服务器(比如Apache或者其他正在运行的应用程序)应该能够解密它 – 这意味着我不必将证书信息保留在反向代理的configuration中。 这意味着我可以从这里走 server { listen 443 default ssl; server_name example.org; add_header X-Clacks-Overhead "GNU Terry Pratchett"; ssl on; ssl_certificate /etc/le_certs/example.org/live/example.org/fullchain.pem; ssl_certificate_key /etc/le_certs/example.org/live/example.org/privkey.pem; location / { proxy_pass_header Server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass https://exampleapp; } } […]