web-dev-qa-db-ja.com

サーバー証明書にサーバー名と一致するIDが含まれていません

私たちのサーバーは昨日アップグレードされたので、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つのワイルドカード証明書が含まれています。

これを修正するにはどうすればよいですか?何が問題かを確認するために他にできることはありますか?

Failed SSL check

2016年5月18日更新

4月の初めに修正しました。 SSL証明書を提供した会社から古いルート証明書が提供されたようです。彼らは私に、バンドルされた証明書と個別の証明書ファイルの両方を含むZipを郵送しました。これらを複数回インストールしてみました。次に、すべてのファイルの内容を、機能した他のサイトと手動で比較しました。違いに気づき、証明書をサイトから手動で再ダウンロードしました。

GeoTrust証明書が異なっていました。インストール後、すべてが魅力のように機能しました。私の上司はこれについて彼らに連絡すると私に言ったが、残念ながらこれは決して起こらなかった。とにかくそれが今うまく機能していることを嬉しく思います。

4
ar34z

証明書が*.dashboard.example.comに対してのみ有効である場合、dashboard.example.comに対しては無効です(後者はワイルドカードと一致しません)。

ServerName は、サイトの正規名(単一の名前)を指定するために使用されます。
追加の名前とワイルドカードは ServerAlias にのみ入ります。

たとえばServerName foo.dashboard.example.comを設定すると機能します(お持ちのServerAliasと組み合わせて)。


証明書チェーンに関する前述の問題に関して、これらは実際の質問に関連しているようには見えません。
必要なすべての中間証明書が正しくバンドルされていることを確認することをお勧めします。

SSLCertificateChainFile は廃止されているので、使用する必要はありません。すべての証明書を SSLCertificateFile に入れるだけです。

Qualy's SSL Labs テストを使用して、中間証明書が不足していないかどうか、または他の問題があるかどうかを確認できます。

4