ApacheおよびUbuntuでSSLサイトが正しいIPを使用していない


10

私はapache-ubuntu-phpウェブサーバーをセットアップしようとしています。私のWebサーバーは複数のSSLサイトをホストし、各SSLサイトには独自のIPアドレスがあります(これを行うためのより良い方法がない場合)。

したがって、最初のステップは、Apacheに少なくとも2つの異なるIPアドレスを認識させることだと思います。現在、私はhttp://mysite.comhttps://mysite.comの WebサイトのSSLバージョンと非SSLバージョンを持っています。現在、どちらもサーバーで実行していますが、両方で異なるIPアドレスを使用することはできません。現在、どちらもIP 1.1.1.1を使用しています。2つ目のIPアドレス2.2.2.2を購入しましたが、https: //mysite.comはそれを受け入れず、Firefoxはエラー「ssl_error_rx_record_too_long」で不平を言います。ここに私の2つのvhostファイルを見てみましょう

/ etc / apache2 / site-enabled / 000-default

#NameVirtualHost 1.1.1.1:80

#<VirtualHost 1.1.1.1:80>
<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

/etc/apache2/site-enabled/mysite.com

<VirtualHost 1.1.1.1:80>
     ServerAdmin john@mysite.com
     ServerName mysite.com
     ServerAlias www.mysite.com
     DocumentRoot /srv/www/mysite.com/public_html/
     ErrorLog /srv/www/mysite.com/logs/error.log
     CustomLog /srv/www/mysite.com/logs/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
#<VirtualHost 2.2.2.2:443>
<VirtualHost *:443>
     ServerAdmin john@mysite.com
     ServerName mysite.com
     ServerAlias www.mysite.com
     DocumentRoot /srv/www/mysite.com/public_html/
     ErrorLog /srv/www/mysite.com/logs/error.log
     CustomLog /srv/www/mysite.com/logs/access.log combined

        SSLEngine on

        SSLCertificateFile    /etc/ssl/localcerts/www.mysite.com.crt
        SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite.com.pem

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

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

</VirtualHost>
</IfModule>

mysite.comで、<VirtualHost *:443>を<VirtualHost 2.2.2.2:443>で置き換えると、Firefoxはエラー「ssl_error_rx_record_too_long」で不平を言います。

そのため、/ etc / apache2 / site-enabled / mysite2.comを作成して3番目のIPアドレスの別のSSL証明書で有効にしようとすると、Apacheは「重複」の問題について文句を言います。

別のドメインで複数のSSL Webサイトをホストできるようにサーバーを立ち上げる方法を誰かに教えてもらえますか?SSL証明書を、WinXP、Vista、Win7、OSXなどの一般的なOS上のIE 7 +、FF、およびSafariで機能させたい。

回答:


7

/etc/apache2/ports.confファイルを次のように調整して、サーバーでこれを設定しました。

<IfModule mod_ssl.c>
NameVirtualHost *:443
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    NameVirtualHost *:443
    Listen 443
</IfModule>

次に、/ etc / apache2 / sites-enabled / mysite.comを編集して使用できるようにする必要があります(一部のコードは、例を短縮するために省略されています)。

<VirtualHost *:443>
     ServerName mysite1.com
     SSLCertificateFile    /etc/ssl/localcerts/www.mysite1.com.crt
     SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite1.com.pem
</VirtualHost>

<VirtualHost *:443>
    ServerName mysite2.com
    SSLCertificateFile    /etc/ssl/localcerts/www.mysite2.com.crt
    SSLCertificateKeyFile /etc/ssl/localcerts/www.mysite2.com.pem
</VirtualHost>

好きなだけのvhostに対応。

編集:第二の意見が必要ですか?ここに移動:http : //forum.slicehost.com/comments.php?DiscussionID=3244


ああ、それはうまくいった...そして各ウェブサイトは同じ1.1.1.1 IPアドレスを使っている。これは、2.2.2.2 IPアドレスが必要なくなったことを意味しますか?SSLドメインごとに一意のIPは必要ありませんか?
ジョン

SSLドメインごとに一意のIPを使用する必要はありません。
Patrick R

ドメインごとに個別のIPが必要ない理由を説明してください。これは、SSLについて私が理解しているすべてに反します...
Josh

1つのIPを持つサーバーで複数のワイルドカード証明書を使用したことを除けば、何と言っていいかわかりません。CommonNameがServerNameと一致している限り、問題はありません。これで、共有ホスティング環境にいる場合、これにより他のユーザーがあなたの証明書を使用できるようになる可能性があります。それがjohnlai2004と私のために働いたなら...さて、問題は何ですか?
Patrick R

voretaq7は上の推論を説明しserverfault.com/questions/109800/... -これは、SSL TSLではありません。SSLでは、IPアドレスと証明書の間に1対1の関係が必要です。TLSはサポートしません。TLSがHTTPSに使用できることにまだ気付いていなかった(まだ)
Josh

0

現在確認できませんので、これは大まかな推測です。通常、ファイルはアルファベット順に読み込まれます。たとえば、000-defaultの名前を500-defaultに変更して400-myhostを使用するなど、逆の順序で読み取ると、より多くの運が得られる可能性があります。Apacheがデフォルトのホストを好む場所を思い出せません-最初か最後か。しかし、あなたが言うこと(重複)から、それは最後かもしれません


apachectl -t -D DUMP_VHOSTSで何が使用されるかを確認できます。順序は最初から最後までです。
Richard Salts 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.