2011-10-26 11 views
0

httpでアクセスするとうまくいくPHPスクリプトを開発しています。しかし、httpsプレフィックスサーバー経由でアクセスしようとすると、404エラーが返されます。私はここで間違っていますか?404 PHPスクリプトでhttpsを使用中にエラーが発生しました

+0

あなたがURLにブラウザを開くことはできますか? – powtac

+4

HTTPSサーバーと同じWebルートを使用するようにHTTPSサーバーを構成します。 – hakre

+0

私たちがあなたを助けるために、より多くの詳細を提供しなければならないでしょう –

答えて

1

ウェブサーバによっては、error_log(nginx/apache/apache2)ディレクティブとどこにエラーが記録されているかによって、問題の発生場所を理解するのに役立ちます。 404は、ファイルが存在しないか、Webサーバーがそのファイルを提供するためのアクセス許可が適切に設定されていないことを示します。 HTTPSでしか起こりませんが、hakreが提案されています.HTTPSサーバーがHTTPと同じドキュメントルートを使用していない可能性があります。 、どちらかといえば、エラーログに示してどのようなWebサーバの種類についての情報を投稿

、stackoverflow.comで、誰もがより良いあなたの問題を理解し、適切な答えを提案します。

名前ベースの仮想ホスティングは、HTTPSでは正しく機能しません。同じIPアドレスとポート上で複数のSSL仮想ホストをホストすることは不可能である、原則としてhttp://wiki.apache.org/httpd/NameBasedSSLVHosts

:あなたはHTTPSで1つのIPアドレスの1台の仮想ホストを持つことができます。これは、暗号化レイヤーを設定するために正しい証明書を選択するために、Apacheがホストの名前を知る必要があるためです。しかし、要求されたホストの名前は、暗号化されたコンテンツの一部であるHTTP要求ヘッダーにのみ含まれています。したがって、暗号化がすでにネゴシエートされた後でなければ使用できません。つまり、正しい証明書を選択することができず、クライアントは証明書の不一致の警告を受け取り、中間者の攻撃に脆弱になります。

実際には、Apacheは名前ベースのSSL仮想ホストを設定することができますが、暗号化レイヤーを設定するために、最初にリストされた仮想ホスト(選択したIPアドレスとポート上)の設定を常に使用します。特定の特定の状況では、複数の仮想ホストに対して単一のSSL構成を使用することは許容されます。特に、SSL証明書がすべての仮想ホストに適用される場合、これは機能します。

+0

私の答えに述べたように、異なる証明書で名前ベースのSSLホストを設定することはできません。 Apache2はこれを可能にするNIをサポートしています...あなたがIE <7、FF1などの古いブラウザをサポートしていないのであれば。 –

+0

私は私のホストプロバイダに連絡し、ここにスレッドに記載されている問題について尋ねました。彼はサーバーにhttps接続をサポートするための構成がないという情報を私に提供しました。これは修正されました。ご協力ありがとうございます –

1

サーバー構成、特にDocumentRootsを確認して、もう一度確認してください。

SNI(Server Name Indication - 新しいTLS拡張機能)を使用してNameBasedVirtualHostingにSSLを使用することは可能です。

SNIはほとんどのメジャーサーバーとほぼすべてのクライアントでサポートされています。

Apache2はバージョン2.2.12以降、バックポートパッチを持つApache、nginx、lighthttpd、cherokeeをサポートしています。

参照:いくつかの詳細については、http://de.wikipedia.org/wiki/Server_Name_Indication

関連する問題