大規模な仮想ホスティングに Let crypt を使用する方法は?

大規模な仮想ホスティングに Let crypt を使用する方法は?

私はApache VirtualHostを使用して単一のIPアドレスで2500のパブリックドメイン(例:www.example.com、example.com、www.example.net、example.net)を実行しています。

これらすべてのドメインに対してLetsEncryptを設定したいと思います。推奨されるアプローチは何ですか?これを行うための自動化されたツールはありますか?

解決策は次のとおりです。

  • 動作することが証明されている(推測ではない)
  • 十分
  • 単一IPで動作

私のセクションのアクティブな部分は<VirtualHost>次のとおりです。

<VirtualHost *:80>
  # www.sub.example.com -> sub.example.com/html/                                                  
  RewriteCond ${lowercase:%{SERVER_NAME}} ^(www\.)?(.*)
  RewriteRule ^/(.*)$ /home/hotels/%2/html/$1
</VirtualHost>

答え1

まず、単一のIPアドレスで複数のSSL証明書をサポートするには、Apache v2.2.12後でSNIを使用する必要があります。OpenSSL v0.9.8j続行する前に、サーバーを確認してApache Webサーバーのバージョンを確認してください。お使いのコンピュータがこのバージョン以上をサポートしていない場合は、アップグレードする必要があります。

Digicertには素晴らしい記事があります。Apacheで1つのIPアドレスで複数のSSL証明書を使用する

前述のように、ドメインごとに別々の仮想ホストを作成する必要があります。各仮想ホストには独自のSSL証明書構成があります。暗号化しようワイルドカードまたはマルチサーバー仕様を使用して、ドメインごとに1つのSSL証明書を生成できます。certbot

Digital Oceanに記事があります。Let's Encrypt 証明書を設定する方法certbotこれにはUbuntuでのインストールも含まれます。サーバーがUbuntuでない場合certbotのインストール手順。また、以下が必要な場合があります。文書を暗号化しよう

次の手順に従って、certbotを使用して各ドメインのSSL証明書を生成できます。

certbot --apache -d example.com -d www.example.com
certbot --apache -d example.net -d www.example.net

各コマンドは異なるドメインに適用されますが、各ドメインは複数のホスト名を持つことができます。

Apache 構成で各ドメインの仮想ホストを作成します。

NameVirtualHost *:443

<VirtualHost *:443>
 ServerName www.example.com
 ServerAlias example.com
 DocumentRoot /var/www/site
 SSLEngine on
 SSLCertificateFile /path/to/www_example_com.crt
 SSLCertificateKeyFile /path/to/www_example_com.key
 SSLCertificateChainFile /path/to/LetsEncrypt.ca
</VirtualHost>

<VirtualHost *:443>
 ServerName www.example.net
 ServerAlias example.net
 DocumentRoot /var/www/site2
 SSLEngine on
 SSLCertificateFile /path/to/www_example_net.crt
 SSLCertificateKeyFile /path/to/www_example_net.key
 SSLCertificateChainFile /path/to/LetsEncrypt.ca
</VirtualHost>

受信した証明書の種類とApacheのバージョンによっては、実際<VirtualHost 192.168.1.3:443>のIPアドレスを指定する必要があります。<VirtualHost *:443>

<VirtualHost *:80>SSL以外の着信トラフィックをサポートするには、ポート80仮想ホストをそのままにしてください。 SSLをサポートするには、最大2500の仮想ホストを作成する必要があります。コミットする前に1つまたは2つをテストしてください。

Apache SSLモジュールを有効にすることを忘れないでください

a2enmod ssl

答え2

2,500人の<VirtualHost>視線を維持しないでくださいhttps://github.com/varnish/hitch/blob/master/docs/vhosts.md

証明書を次の場所に配置してください/home/hotels/*/certs/

./hitch --backend=localhost:80 \
--frontend=[*]:443 \
/home/hotels/*/certs/*.pem

(検証されていません)。

関連情報