2017-12-20 12 views
9

私はここで私の髪を引っ張っています。 wix.com,squarespace.com ...などのようなウェブサイト。その場でWebサイトを生成し、数百万のカスタムドメインのすべてでSSLを使用することができます。SNIダイナミックな証明

私は同じことをやろうとしますが、私は彼らのやり方を理解できません

論理的な解決策は、Apache上で次のようになります。

<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:ファイル '/etc/apache2/ssl/%0/server.crt' をしません存在または空です

ダミーの証明書を使用して/ ssl /%0 /ダミーフォルダを作成しても...(間違った)ダミー証明書を使用しました。

TLSハンドシェイクの前にサーバ名を解決できない人もいます。 しかし、このpostと他のものに応じて:サーバー名がSNIで送信されるため、%0はmod_vhost_aliasで解決することができます...

私は、この作品を知っている:第二のアプローチは、すべてのカスタムドメインのためのバーチャルホストを作成することです:

<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毎日Eeewwwwをリロード...そして再び可能性:Apacheは256に仮想ホストの数をキャップ:/

彼らはどうやってそれをするのですか?私を助けることができる他の技術はありますか? Nginx、Nodejs? ありがとうございます。

+0

なぜ静的サーバー構成の一部である必要があると思いますか?ワイルドカードと一致する構成を作成して、アプリケーションでHTTP_HOSTなどを使用して、どの種類のリソースを提供するかを決めることができます。また、ワイルドカード証明書ではなく、サイトごとに異なる証明書を使用していると思われるのはなぜですか? –

+0

あなたの素早い答えをいただきありがとうございます@ StteenUllrich。あなたのアイデアを広げてください。わかりません。アプリケーションがアクセスする前にHTTPSを解決する必要があります。つまり、ワイルドカードと一致する設定を作成し、アプリケーションでHTTP_HOSTなどを使用することができます。また、私は作ることができます:site111.mysite.comは問題なく動作しますが、私はsite111.com、site222.comを作ろうとします。たぶん私たちはお互いに話し合っているでしょう:) –

+0

ワイルドカード証明書を使うことができます。つまり、\ *。mysite.comは可能ですが、\ *。comは使えません。しかし、それはまた、他のサイトが提供するものではありませんか? –

答えて

0

I try to do the same thing, but I can't figure out how they do it!?

オンザフライでSSLウェブサイトを生成するには、自分で確認できるようにLetsencrypt認証局を使用します(例:CN = www.thefoodmarketchiswick.com)。しかし、.wix.comの名前でホストされているウェブサイトでは、ワイルドカード証明書(CN = * .wix.com)を使っているだけです。それまでは、簡単。

2番目の質問は、Apacheがこの大規模なホスティングを処理できないということです(1人のサーバーで何百万ものアプリケーションをホストできるとは誰も信じていません)。いくつか手掛かりを与えるこのNetcraft Surveyを見てください。私はそれらに答えることはできませんが、openssl s_clientを実行するとエラーになります。つまり、非常に遵守していることはしません。

1

TL; DR:ワイルドカード証明書を使用します。だから問題は、あなたがしようとしているようなサーバ設定レベルだけでなく、証明書レベルとサーバ設定レベルで解決されます。ポイントの

カップル:

  • The logical solutionは - ほとんど私はコンピュータサイエンスやソフトウェア工学における「論理」何を参照してください行いません。それは工学であり、数学ではありません。だから知識は、多くの場合(すべてではない)知性よりも重要になります。

  • あなたはSNIについて正しい点を持っています。これは、HTTPヘッダーが利用可能になる前に、TCP/SSL層へのホスト識別メカニズムのプッシュバックです。

  • virtualhost for every custom domain - 私たちが話している規模によって、動作する可能性があります。ただし、200,1000,5000のサブドメインを持つクライアントを搭載している場合は、それでは?

  • How do they do it - 私はちょうど例を提供してみましょう:CloudFlareのようなHTTPプロキシは無料、あなたのサーバー(PROXY-> ORIGINのecryption)に追加することが必要であることあなたのための証明書、およびEND_USERを生成 - > CloudFlareの接続は、ワイルドカードを使用して暗号化されます証明書。これらは、彼らが私のために発行したワイルドカード証明書のDNS名です:

    略称

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 
  • どのようなサーバの構成が見えますか?これは実際には、リソースを共有しているロードバランサーの下にあるサーバーファームです(キャッシュで別々に調整されたマシン上の静的リソース)。各サーバには複数の仮想ホスト/ドメイン/ホストエイリアスがありますが、それらの多くは1つのSSLファイルのみです(またはスケールに応じてすべて)。ドメインは専用の構成を持つことができ、構成が同一であればグループ化できます。

  • ウェブサーバーに関する推奨事項 - APACHEを使用する正当な理由がない限り、私は使用しません。 nginxが牽引力と人気を得ている理由があります。