首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SNI动态证书

SNI动态证书
EN

Stack Overflow用户
提问于 2017-12-20 03:12:35
回答 2查看 1.1K关注 0票数 11

我把头发拔出来了。像wix.comsquarespace.com ...etc这样的网站可以动态生成网站,并且仍然可以在数百万自定义域中的每一个使用SSL。

我试着做同样的事情,,但是我不知道他们是如何做到的,!?

逻辑解决方案应该是在Apache上:

代码语言:javascript
复制
<IfModule mod_ssl.c>
            <VirtualHost *:443>
                    ServerAlias *
                    UseCanonicalName Off

                    DocumentRoot /var/www/html

                    SSLEngine on
                    SSLCertificateFile /etc/apache2/ssl/%0/server.crt
                    SSLCertificateKeyFile /etc/apache2/ssl/%0/server.key
            </VirtualHost></IfModule>

但是当我重新启动apache时,我得到一个错误:SSLCertificateFile: file‘/etc/apache 2/ssl/%0/server.crt’不存在或者是空的

即使当我使用一些虚拟证书创建一个虚拟文件夹/ssl/%0/时.它仍然使用(错误的)虚拟证书。

我知道有些人会骑着他们的马大喊,在TLS握手之前你不能解析服务器名。但是根据这个帖子和其他帖子:%0可以用别名解析,因为服务器名是用SNI发送的.

我知道这是可行的:第二种方法是为每个自定义域创建一个虚拟主机:

代码语言:javascript
复制
  <VirtualHost *:443>
                    ServerName site111.ca
                    ServerAlias www.site111.ca

                    DocumentRoot /var/www/html

                    SSLEngine on
                    SSLCertificateFile "/var/app/s3/ssl/site111.ca/certificate.crt"
                    SSLCertificateKeyFile "/var/app/s3/ssl/site111.ca/certificate.key"
                    SSLCertificateChainFile "/var/app/s3/ssl/site111.ca/certificate.chain"
            </VirtualHost><VirtualHost *:443>
     ServerName site222.ca
         ServerAlias www.site222.ca
     DocumentRoot /var/www/html

      SSLEngine on
      SSLCertificateFile "/var/app/s3/ssl/site222.ca/certificate.crt"
      SSLCertificateKeyFile "/var/app/s3/ssl/site222.ca/certificate.key"
      SSLCertificateChainFile "/var/app/s3/ssl/site222.ca/certificate.chain"

我可以创建一个肮脏的系统,在这个系统中,我在每个新域添加一个虚拟主机,并每天重新加载apache。再说一遍: Apache将虚拟主机的数量限制为256 :/

他们是怎么做到的?还有其他技术可以帮助我吗?Nginx,Nodejs?谢谢您抽时间见我。

EN

回答 2

Stack Overflow用户

发布于 2018-01-03 23:07:52

我试着做同样的事,但我不知道他们是怎么做到的!?

要动态生成SSL网站,它们使用Letsencrypt证书颁发机构,因为您可以检查自己(例如: CN = www.thefoodmarketchiswick.com)。但是对于托管在.wix.com名称下的网站来说,它们只是使用通配符certicate ( CN = *.wix.com )。在那之前,别紧张。

第二个问题,正如您提到的,Apache无法处理这种大规模的托管(没有人相信您可以在一台服务器上托管数百万个应用程序)。看看这个网工艺测量,它提供了一些线索。我不能回答他们的问题,但是运行openssl s_client是错误的,这意味着他们做的事情不太符合要求。

票数 1
EN

Stack Overflow用户

发布于 2018-01-17 07:21:24

TL;DR:他们使用通配符证书。因此,这个问题已经解决了@证书级别和服务器配置级别,而不仅仅是在服务器配置级别,就像您试图做的那样。

以下几点:

  • The logical solution --在计算机科学或软件工程领域,我几乎看不到任何“逻辑”。这是工程,不是数学,你必须做一些事情,而不是想出问题来。因此,在很多情况下,知识比智力更重要(不是全部)。
  • 关于SNI,您有一个正确的观点--它是对TCP/SSL层(在HTTP之前,HTTP报头可用)主机标识方式的推送。
  • virtualhost for every custom domain --取决于我们谈论的规模,它可能会起作用。但是,如果您在一个客户端上有200,1000,5000 -子域。然后呢?
  • How do they do it -让我提供一些例子: HTTP代理(如cloudflare )为您生成一个免费证书,您必须在服务器上添加该证书(代理->原产地加密),END_USER -> CLOUDFLARE连接是使用通配符证书加密的。这些是他们为我颁发的通配符证书的DNS名称:

缩写:

代码语言:javascript
复制
DNS Name=sni178747.cloudflaressl.com
DNS Name=*.9992924.com
DNS Name=*.apum.de
DNS Name=*.arbomedia.net
DNS Name=*.australiacasinobonus.net
DNS Name=*.auto-lpg.de
DNS Name=*.autoprof.de
DNS Name=*.circuitodesafio.com.br
DNS Name=*.data--center.info
DNS Name=*.devclub.com
DNS Name=*.eissportanlagen.de
DNS Name=*.entrepreneur-hebdo.fr
DNS Name=*.environmentalbrasil.com.br
DNS Name=*.gofitnessplan.fr
DNS Name=*.golfinterieur.info
DNS Name=*.greenbuch.cf
DNS Name=*.mindaugas.cf
DNS Name=*.mp3fdm.trade
DNS Name=*.mp3freedom.info
DNS Name=*.mp3star.cricket
DNS Name=environmentalbrasil.com.br
DNS Name=gofitnessplan.fr
DNS Name=golfinterieur.info
DNS Name=greenbuch.cf
DNS Name=mindaugas.cf
DNS Name=mp3fdm.trade
DNS Name=mp3freedom.info
DNS Name=mp3star.cricket
DNS Name=preussische-geschichte.de
  • 这种服务器的配置如何?它实际上是一个服务器场,在负载平衡器下,w/资源共享(分别调优的机器上的静态资源w/ cache)。每个服务器上都有多个虚拟主机/域/主机别名,但其中许多服务器只有一个SSL文件(或全部,视规模而定)。域可以有专用的配置,如果它们的配置是相同的,它们可以分组在一起。
  • 关于use服务器的建议--除非有充分的理由使用APACHE,否则我不会使用它。nginx之所以能获得吸引力和人气,是有原因的。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47898255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档