私たちのサーバーは昨日アップグレードされたので、Ubuntu、Apache 2.4.10、PHPなど)がさらにアップデートされました。
サーバーは、さまざまな顧客の動的コンテンツにワイルドカードを使用し、これらの顧客のさまざまなサービスに3つのワイルドカード証明書を含むサイトをホストします。
ワイルドカードを含む構成の一部は次のようになります。
<VirtualHost *:80>
ServerName *.dashboard.example.com
ServerAlias *.dashboard.example.com
RewriteEngine On
RewriteCond %{HTTP_Host} ^(.+)\.dashboard.example\.com$
RewriteRule ^/(.*)$ https://%1.dashboard.example.com/$1 [R=302,L]
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName *.dashboard.example.com
ServerAlias *.dashboard.example.com
DocumentRoot /var/www/dashboard.example.com/web
<Directory />
AllowOverride All
Options -Indexes +MultiViews +FollowSymLinks
Order Deny,Allow
Allow from all
</Directory>
ErrorLog /var/log/Apache2/dashboard.example.com-error.log
CustomLog /var/log/Apache2/dashboard.example.com-access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/bundle_wc_dashboard_example_com.crt
SSLCertificateKeyFile /etc/ssl/certs/wildcard_dashboard_example_com.key
</VirtualHost>
証明書ファイルとしてバンドルを使用していることに注意してください。中間ファイルとルートファイルに別々のファイルを使用すると、SSLチェックを使用したときにさらに悪い結果になります。その場合、GeoTrust証明書は認識されません。私のSSL証明書サプライヤーはApache 2.4の時点で説明していますが、証明書はバンドルである必要があります。
だからこれは私にはうまくいきません:
SSLCertificateFile /etc/ssl/certs/wildcard_dashboard_example_com.crt
SSLCertificateKeyFile /etc/ssl/certs/wildcard_dashboard_example_com.key
SSLCertificateChainFile /etc/ssl/certs/GeoTrust_Global_CA.crt
SSLCertificateChainFile /etc/ssl/certs/RapidSSL_SHA256_CA_G3.crt
ただし、上記はApache 2.2では動作しました。
Apacheを起動しようとすると、ServerName
値について文句を言います。
[FAIL] Reloading web server: Apache2 failed!
[warn] The Apache2 configtest failed. Not doing anything. ... (warning).
Output of config test was:
AH00526: Syntax error on line 42 of /etc/Apache2/sites-enabled/3-production.conf:
Invalid ServerName "*.dashboard.example.com" use ServerAlias to set multiple server names.
Action 'configtest' failed.
The Apache error log may have more information.
したがって、アスタリスクは使用できないようです。アスタリスクを削除するとApacheが起動しますが、ドメインのエラーログにエラーが表示されます。
Fri Mar 11 10:32:13.821304 2016] [ssl:warn] [pid 18019] AH01909:dashboard.example.com:443:0サーバー証明書にサーバー名と一致するIDが含まれていない
他のソースから、ServerNameとして使用するCommonNameを決定するために使用する必要がある次のコマンドを見つけました。
openssl x509 -in wildcard_dashboard_example_com.crt -noout -subject
どちらが戻ります:
subject = /CN=*.dashboard.example.com
私のブラウザーは緑色のロックを表示しますが、SSLチェックは中間/チェーン証明書ファイルがないことを報告します(スクリーンショットを参照)。同じサーバーで、他の2つのワイルドカードドメインと、ワイルドカードではない1つの通常のサブドメインで同じ問題が発生します。 Apacheの主張もserver certificate does NOT include an ID which matches the server name
。このサイトでは、さまざまな顧客の動的コンテンツにワイルドカードを使用しており、これらの顧客のさまざまなサービスに3つのワイルドカード証明書が含まれています。
これを修正するにはどうすればよいですか?何が問題かを確認するために他にできることはありますか?
2016年5月18日更新
4月の初めに修正しました。 SSL証明書を提供した会社から古いルート証明書が提供されたようです。彼らは私に、バンドルされた証明書と個別の証明書ファイルの両方を含むZipを郵送しました。これらを複数回インストールしてみました。次に、すべてのファイルの内容を、機能した他のサイトと手動で比較しました。違いに気づき、証明書をサイトから手動で再ダウンロードしました。
GeoTrust証明書が異なっていました。インストール後、すべてが魅力のように機能しました。私の上司はこれについて彼らに連絡すると私に言ったが、残念ながらこれは決して起こらなかった。とにかくそれが今うまく機能していることを嬉しく思います。
証明書が*.dashboard.example.com
に対してのみ有効である場合、dashboard.example.com
に対しては無効です(後者はワイルドカードと一致しません)。
ServerName
は、サイトの正規名(単一の名前)を指定するために使用されます。
追加の名前とワイルドカードは ServerAlias
にのみ入ります。
たとえばServerName foo.dashboard.example.com
を設定すると機能します(お持ちのServerAlias
と組み合わせて)。
証明書チェーンに関する前述の問題に関して、これらは実際の質問に関連しているようには見えません。
必要なすべての中間証明書が正しくバンドルされていることを確認することをお勧めします。
SSLCertificateChainFile
は廃止されているので、使用する必要はありません。すべての証明書を SSLCertificateFile
に入れるだけです。
Qualy's SSL Labs テストを使用して、中間証明書が不足していないかどうか、または他の問題があるかどうかを確認できます。