ポート80にHTTP、ポート443にHTTPSを備えた既存のWebサイトがあります。これに2つ目のサイトを追加します。私の理解では、同じSSLポートで2つのサイトをホストすることはできません。
つまり、私の質問は、2番目のサイトのSSLポートとして使用するのに適切なポート番号の範囲はどれかということです。
コメント
- 間違っている可能性がありますが、有効なSSL証明書はポート443にある必要があると考えています。これが、共有ホスティングが専用のSSLを購入するときのIPアドレス。しかし….これは私の分野ではありません。他のオタクな人が確認できることを願っています。
回答
実際には、ポート443で複数のSSLサイトをホストできます。apache構成ファイルの次のコードでうまくいきます。
それ以外の場合は、任意のポートを使用できます。欠点は次のとおりです。ユーザーはURLにポート番号を含める必要があります(例: https://yourdomain.com:445/ )
## SSL (HTTPS) PORT 443 Listen 443 NameVirtualHost *:443 LoadModule ssl_module modules/mod_ssl.so SSLPassPhraseDialog builtin SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000) SSLSessionCacheTimeout 300 SSLMutex default SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin SSLCryptoDevice builtin <VirtualHost *:443> ServerName host1.com SSLEngine on SSLOptions +StrictRequire SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLCertificateFile /etc/httpd/ssl/host1.crt SSLCertificateKeyFile /etc/httpd/ssl/host1.key SSLVerifyClient none SSLProxyEngine off SetEnvIf User-Agent ".*MSIE.*" 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" DocumentRoot /var/www/host1/ <Directory "/var/www/host1/"> Options Indexes FollowSymLinks AllowOverride All Order Allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost *:443> ServerName host2.com SSLEngine on SSLOptions +StrictRequire SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLCertificateFile /etc/httpd/ssl/host2.crt SSLCertificateKeyFile /etc/httpd/ssl/host2.key SSLVerifyClient none SSLProxyEngine off SetEnvIf User-Agent ".*MSIE.*" 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" DocumentRoot /var/www/host2/ <Directory "/var/www/host2/"> Options Indexes FollowSymLinks AllowOverride All Order Allow,deny Allow from all </Directory> </VirtualHost>
コメント
- ありがとうございますが、これはIISサイトです。同じことをどのように進めるかについての手がかりはありますか?
回答
「2番目のサイト」と言うとき-2番目のドメイン名を意味しますか?のように、あなたは現在1つのクラスターで https://www.mycompany.com をホストしており、 https://www.yourcompany.com 同じクラスター上で?あなたが探しているのは「仮想ホスティング」だと思います: http://support.microsoft.com/kb/q190008
2つ目のSSL証明書を購入する必要がありますが、両方を同時にホストすることはできます。標準ポートでのIPアドレス(少なくとも、サイトに対するユーザーの信頼を高めます)。
コメント
- ホストを使用しましたヘッダー名。2つのサイトはfirst.mycompany.comとsecond.mycompany.comの形式です。問題は、"高度なWebサイトの識別"にHTTP用の3つの列(IPアドレス、TCPポート、ホストヘッダー値)があることです。ただし、HTTPS(IPアドレスとSSLポート)は2つしかないため、'実際には私が見る限りでは可能ではないようです。
回答
従来、SSLバインディングごとに1つのIPアドレスが必要です。バインディングの設定時にホストヘッダーを追加することはできません。これは、ホストヘッダーがブラウザによって送信されるHTTPヘッダーの一部であり、これらのヘッダーがSSLトラフィックの一部として暗号化されているためです。ホスト名ヘッダーを読み取るには、サーバーは最初にトラフィックを復号化する必要がありますが、そのためには、使用する証明書を知る必要があります。そのためには、悪循環に陥るためにホストヘッダーが必要になります。
解決策は、サーバーがインストールされているすべての証明書を試し、要求を復号化することです。これは、いくつかの証明書がインストールされていれば機能する可能性がありますが、SSL Webサイトが10分の1または数百のサーバーでは機能しません。サーバーは着信要求ごとにこれを実行する必要があるため、サーバーの速度が大幅に低下します。
これに対する解決策は、サーバー名表示(SNI)と呼ばれるSSLプロトコルの拡張です。これにより、サーバーがSSLプロトコルにホスト名を追加できるようになります。 SSLトラフィックを復号化する前に、ホストヘッダーを参照してください。この拡張機能は、IIS 8(Windows 2012)より前のバージョンのIISではサポートされていません。クライアント側では、SNIはOS X10.5.6およびWindowsVista以降でサポートされています。 。SNIはWindowsXPのSChannelでサポートされていないため、WindowsXPのInternetExplorerのどのバージョン(8.0でも)でもサポートされていません。
回答
IISには(他のWebサーバーと同様に)着信要求に対してサイトを識別する3つの主要な識別子があります。
- IPアドレス
- TCPポート
- ホストヘッダー
単一のウェブサーバーで複数のウェブサイトを実行している場合、これら3つのうち少なくとも1つはサイトごとに異なる必要があります。多くの環境では、サーバーには単一のIPアドレスしか与えられないため、変更可能なTCPポートとホストヘッダーが残ります。別のポートでhttpsWebサイトを実行することは可能ですが、URLでポートを指定するだけで、必ずしも望ましいとは限りません(これは、 https://www.foo.com:32000/index.html )。多くの場合、すべてのWebサイトをポート80(http)または443(https)で実行して、クリーンなURLを作成する必要があります。これにより、ホストヘッダーが変更する1つの項目として残ります。
IISでは、SSLとホストヘッダーを使用する同じIP /ポートの組み合わせに複数のサイトを含めることができます。重要なのは、ワイルドカード証明書または証明書自体に複数のホスト名を指定するSAN(サブジェクト代替名)証明書のいずれかを使用する必要があるということです。 IISマネージャーUIのSSLサイトでホストヘッダーのホストヘッダーバインディングを設定することはできません。コマンドラインから行うか、サーバー上のapplicationHost.configファイルを手動で編集する必要があります。
コマンドラインを介したこれの設定に関するTechnetからの情報は、ここにあります。
に投稿がありました。これと同様の問題があるIISフォーラムは、ここにあります。
コマンドを実行するか、構成ファイルを手動で編集した後、 applicationHost.configファイルは次のようになります。
<site name="first.mycompany.com"> ... <bindings> <binding protocol="http" bindingInformation="192.168.10.100:80:first.mycompany.com" /> <binding protocol="https" bindingInformation="192.168.10.100:443:first.mycompany.com" /> </bindings> ... </site> <site name="second.mycompany.com"> ... <bindings> <binding protocol="http" bindingInformation="192.168.10.100:80:second.mycompany.com" /> <binding protocol="https" bindingInformation="192.168.10.100:443:second.mycompany.com" /> </bindings> ... </site>
次に、IISマネージャーにバインディングが表示されます。お役に立てば幸いです。
* 編集 * 上記の情報はこれを前提としています問題はIIS7に関連していました。 IIS6の場合は、別の手順に従う必要があります。これに関する情報は、ここにあります。
回答
最後のコメントを検討し、専門家の回答を確認した後、2つの解決策をお勧めします。
最適な解決策は次のとおりです。
無制限のサブを保護できるワイルドカードSSL証明書を購入する同じIPでホストされている.domain.com(SSL証明書には専用IPが必要です)。
代替ソリューション:
Webサイトごとに1つずつ、2つの異なるSSL証明書を購入できます。同じIPでそれらをホストすることはできません。