設定:
このアプローチを使用するのが間違っている理由があるかもしれませんが、今のところは機能します。
vhostsのセットアップ:
# secure domain 1
<VirtualHost IP:443>
SSL stuff specifying certificate etc.
ServerName domain1.org
</VirtualHost>
# secure domain 2
<VirtualHost IP:81>
SSL stuff for domain2.org
ServerName domain2.org
</VirtualHost>
GOAL: domain2.orgdocroot内の一部のフォルダーは安全である必要があります。 .htaccessファイルを使用して、ポート81でURLをhttpsに書き換えました。
RewriteEngine On
RewriteCond %{SERVER_PORT} !^81$
RewriteRule (.*) https://%{HTTP_Host}:81%{REQUEST_URI} [R]
.htaccessをフォルダ 'secfolder'に置いたとします。http://domain2.org/secfolder
にアクセスすると、これは正常にhttps://domain2.org:81/secfolderに書き換えられます。
ISSUE:https://domain2.org/secfolder
(ポート81なし)にアクセスすると、最初の仮想ホスト(domain1.org)からの証明書が使用され、証明書が無効であるためにサイトが安全でないとブラウザが文句を言いますdomain2.orgの場合。
RewriteCond %{SERVER_PORT} !^81$
もhttps://domain2.org
をhttps://domain2.org:81
に書き換えると思いましたしかしそうではありません。この場合、.htaccessファイルはまったく使用されていないようです。
現時点ではわかりませんRewriteRuleを適用する方法をhttps://domain2.org
に。 domain1.org用の仮想ホストの前にポート443でdomain2用の追加の仮想ホストを作成しようとしましたが、Apacheはそれを窒息させているようです。あなたの誰かがこれにアプローチする方法を知っていることを願っています。 TIA。
編集:削除された回答がありましたが、それは言った:
「最初に証明書を確認せずにサーバーに接続することはできません。また、証明書が間違ったドメイン用であるため、リダイレクトできません。」証明書の不一致は本当に行の終わりですか?その後、強制的なリダイレクト/ URLの書き換えはできませんか?
https://domain2.org (実際には https://domain2.org:44 )へのHTTPS接続を行う場合、順序を覚えておいてください。大まかに
つまり、Apacheが送信する証明書を決定するとき、mod_rewriteがリダイレクトを実行するために使用する情報をまだ受信していません。
これを回避するには、両方のドメインで有効な単一の証明書が必要です。これは、ワイルドカード証明書(状況がdomain1.example.comおよびdomain2.example.comの場合、*。example.comの証明書を取得する)のいずれかである可能性があります。 「domain1.org」のSubjectを使用して、SSL証明書を取得しようとしますが、Subject代替名「domain2.org」の。
いずれの場合も、メインのApache構成ファイルでリダイレクトを行う必要があります-domain2.orgのDocumentRootの.htaccessファイルにある場合、domain1.orgのVirtualHostを使用するリクエストは別のDocumentRootディレクトリに移動します。ファイルを見ることはありません。
ある種のワイルドカード証明書を持っていますか、それとも同じIP上で異なるSSL証明書を使用して異なるドメインをホストしようとしていますか?
ワイルドカードでない場合は、どのポートにあるかに関係なく、IPアドレスごとに1つのSSL証明書しか使用できないため、それを行うことはできません。