6

今日、Apache を構成して、それぞれ独自の SSL 証明書を持つ 2 つのドメインを実行しようとしています。私が読んだところによると、Apache が最新バージョンの OpenSSL で構成されている限り、これは SNI によってサポートされています。次のことを確認しました。

[notice] Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.7 with Suhosin-Patch mod_ssl/2.2.22 OpenSSL/1.0.1 configured -- resuming normal operations

2 番目のドメインと証明書を正常にセットアップしたと思っていましたが、chrome で 2 番目のドメインにアクセスしようとすると、次のエラーが表示されます。

You attempted to reach example2.com, but instead you actually reached a server identifying itself as example1.com.

この投稿は私の問題に最も近いようです:

Apache で複数の SSL 証明書をホストする

しかし、サーバーがすでに正しく構成されていることがわかります (明らかにそうではありません!)。

example2.com の conf ファイルに次のディレクティブがあります。

ServerName  example2.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/example2.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/example2.com.key

それは私には正しく見えます。example2 にアクセスすると、apache が example1 の証明書を提供するのはなぜですか?

4

3 に答える 3

3

これをports.confに追加します(Apache/2.2.22)

NameVirtualHost *:443

この投稿で詳細を読むことができます

于 2014-01-22T07:29:11.807 に答える
3

ドメイン1が次のように構成されていることが判明しました

<VirtualHost *:443>

私は webmin を使用しています。これは、ディレクティブを直接表示した場合にのみその詳細を明らかにします。

* の変更は解決策の一部でしたが、他の問題がいくつか発生しました。パントして IP ベースの SSL を実行すると思います。

于 2013-08-01T20:13:47.827 に答える
-7

同じ IP アドレスで複数の SSL ドメインを持つことはできません。

環境

クライアントが https Web サイトに接続すると、すべての通信はサイトの公開鍵 (ssl 証明書) で暗号化されます。公開鍵に関連付けられた秘密鍵のみが http 要求を復号化できます。基本的にそれがhttpsの仕組みです。
そのため、仮想ホストで、SSL Web サイトごとに証明書とキーを定義します。

SSLCertificateFile /etc/apache2/ssl/example2.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/example2.com.key

VirtualHost Name ベースと SSL

VirtualHost name baseを使用すると、Apache がクライアント リクエストを受信すると、サーバーはリクエストを読み取り、どのドメイン名がリクエストされているかを調べます。ドメイン名が識別されると、apache はvirtuahost命令を読み取り、適切な Web サイトを返します。

Apache が SSL リクエストを受信すると、システムはメッセージを復号化できません。これは、Apache が Virtualhost で定義された SSLCertificateKeyFile を使用する必要があるためです、どの仮想ホストを使用するかを知るには、メッセージを復号化できる必要があるためです ....リクエストの処理方法がわからない場合、システムは最初に処理された仮想ホストを返します。

そのため、例で使用されているVirtualHost ip baseを使用する必要があります
。Apache で複数の SSL 証明書をホストする 2 つの ip 1.1.1.1 と 2.2.2.2 があります。

NameVirtualHost 1.1.1.1:443
NameVirtualHost 2.2.2.2:443
<VirtualHost 1.1.1.1:443>
  ServerName www.domain1.com
  ...
  ...
</VirtualHost>
<VirtualHost 2.2.2.2:443>
  ServerName www.domain2.com
  ...
  ...
</VirtualHost>

VirtualHost 名ベースと SSL ワイルドカード証明書

秘密鍵と公開鍵 (ssl 証明書) がすべてのドメインで同じである場合、Apache は通信を復号化できます。この状況は、ドメインにワイルドカード証明書を使用する場合にのみ追加されます。たとえば、*.domain.com にワイルドカードを使用している場合、VirtualHost の名前ベースを次のように定義できます。

NameVirtualHost 1.1.1.1:443

<VirtualHost 1.1.1.1:443>
   ServerName  foo.domain.com
   SSLEngine on
   SSLCertificateFile /etc/apache2/ssl/wildcard.domain.com.crt
   SSLCertificateKeyFile /etc/apache2/ssl/wildcard.domain.com.key
   ... 
   ...
</VirtualHost>

<VirtualHost 1.1.1.1:443>
   ServerName  bar.domain.com
   SSLEngine on
   SSLCertificateFile /etc/apache2/ssl/wildcard.domain.com.crt
   SSLCertificateKeyFile /etc/apache2/ssl/wildcard.domain.com.key
   ... 
   ...
</VirtualHost>

ドメインに関係なく、apache は同じ秘密鍵を使用して通信を復号化し、システムが適切な VirtualHost 設定を選択できるようにするため、この構成は機能します。

良い1日を。

于 2013-08-01T12:59:44.853 に答える