web-dev-qa-db-ja.com

Apache 2.4 SSL_default_オーバーライド仮想ホスト

新しいクライアントサイトでhttpsをテストするための自己署名証明書を作成したApache2.4サーバーがあります。私が遭遇している問題は、別のvhosts.confファイルで設定した定義済みの仮想ホストに移動しようとすると、ssl.confファイルが常に自分のサイトに読み込まれることです。

誰かが、目的の仮想ホストがロードされず、デフォルトのみがなぜロードされないのかを理解するのを手伝ってくれませんか?

私のssl.confの内容

Listen 443 https

SSL Global Context
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog

SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300

SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin

SSLCryptoDevice builtin

<VirtualHost _default_:443>
  DocumentRoot "/var/www/html"
  ServerName localhost:443

  ErrorLog logs/default_ssl_error_log
  TransferLog logs/default_ssl_access_log
  LogLevel warn

  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

  SSLCertificateFile /etc/pki/tls/certs/localhost.crt
  SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

  <Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
  </Files>
  <Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
  </Directory>

  BrowserMatch "MSIE [2-5]" \
     nokeepalive ssl-unclean-shutdown \
     downgrade-1.0 force-response-1.0

  CustomLog logs/ssl_request_log \
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

私の仮想ホストファイルの内容

<VirtualHost demo.ffh.com:443>
  ServerAdmin   [email protected]
  ServerName    demo.ffh.com
  DocumentRoot  "/var/www/vhosts/ffh/public"

  RewriteEngine On
  # And THIS doesn't seem to be working at all!
  LogLevel debug rewrite:trace8

  <Directory "/var/www/vhosts/ffh/public/">
    AllowOverride all
    SSLOptions +StdEnvVars
    #Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    SSLRequireSSL On
  </Directory>

  SSLEngine on

  SSLCertificateKeyFile /etc/httpd/ssl/ssl.key/demo_ffh.key
  SSLCertificateFile    /etc/httpd/ssl/ssl.crt/demo_ffh.crt

  <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
  </FilesMatch>

  BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

  CustomLog logs/ssl_ffh-access.log combined
  ErrorLog logs/ssl_ffh-error.log
</VirtualHost>

デフォルトを優先してvhosts.confサイトが無視されている理由を誰かが知っていますか?そして、どうすればこれを修正できますか?これで一日中壁に頭をぶつけてきました。

注:「ドメインの代わりにvhost.confでIPアドレスと*:443を試したが、まだ愛情がないことを声に出してみる価値はあるだろう」

2
Skittles

私はこの問題を抱えており、4つの解決策は

  1. /etc/httpd/conf.d/ssl.conf内の証明書とキー(およびその他の中間証明書)を直接指すようにパスを変更する

マシン全体にSSL証明書が1つしかない場合は、これで問題ありません。

  1. ssl.confからデフォルトのvirtualhostエントリ全体を削除します。

これにより、SSL.confの構成が提供され、複数のSSL証明書の独自のVirtualHostエントリを決定できます(必要な場合)

  1. 「vhosts.conf」という名前の希望するconfファイルの後にssl.confを(アルファベット順で)配置します(これをテストするためにssl.confを「vv.conf」に変更しました)

これは、vhosts.confファイル内の複数のSSL証明書でも同様に機能しますが、名前を変更しているため、汚い気分になります。 010-vhosts.conf 020-ssl.confのconf.modules.d-meets-sitesenabled構文を使用すると、少し汚れが少なくなると思います。

  1. 自分の証明書とキーを/etc/pki/tls/certs/localhost.crtと/etc/pki/tls/private/localhost.keyに配置します

ええと...多分何人かの人々のために..私はそれが好きではありませんでした。

1
Alien Life Form

わかりました...私はそれを修正したと思います。 O.o

この作品を作ったのは正確にはわかりませんが、最後に行ったことがいくつかありました。

  1. 新しい自己署名証明書を作成し、それとそれぞれのキーを使用するようにvhost構成を設定しました。
  2. 次に、仮想ホストの構成を*:443に変更しました。
  3. Apacheサーバーを再起動しました。そしてVIOLA!何を与える?

まあ...多分ここで学んだ教訓は?

0
Skittles