WebサーバーにSSLの証明書が正しくインストールされているか確認するTech TIPS

WebサーバでSSLを利用するには、適切なサーバ証明書をインストールする必要がある。しかしサーバ証明書の取得やインストールには複雑な手順と設定が必要なため、インストールに失敗する可能性は否定できない。サーバ証明書のエラーの原因を調べたり、あるいは正常なインストールがなされたことを確認したりするには、証明書の発行元が提供しているSSLチェック・ツールを利用するのが手軽で便利である。

» 2012年02月10日 05時00分 公開
[島田広道デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次



解説

 例えば個人情報の登録を必要とするWebサイトでは、盗聴やなりすましなどの攻撃を防ぐため、SSLによる通信路の暗号化が求められる。それにはWebサーバの出所を証明するデジタル証明書(以下、サーバ証明書)を証明機関(CA)から取得し、サーバにインストールする必要がある。

 ただ、この作業は設定項目も多ければ手順もそれなりに複雑なので、どこかで失敗する可能性は否定できない。もしサーバ証明書の取得やインストールに失敗すると、SSLを必要とするWebページをユーザーが閲覧した際にエラーが表示されてしまう。SSLを必要とするような、信頼を求められるサイトでこのようなエラーはあってはならないものだろう。

サーバ証明書のインストールに失敗しているサイトのエラー表示例 サーバ証明書のインストールに失敗しているサイトのエラー表示例
これは、わざと誤ったサーバ証明書をインストールしたWebサイトをInternet Explorer(IE)で開いたときの例。IE以外のWebブラウザでも、サーバ証明書に異常が見つかった場合は、このようにWebページを表示する前にその旨のメッセージを表示してユーザーに注意を促す。SSLを必要とするような、信頼を求められるサイトでこのようなエラーはあってはならないものだろう。

 SSLの証明書に絡むエラーが発覚したら、もちろんその原因を速やかに究明する必要がある。またサイトの立ち上げ時には、サーバ証明書が正しくインストールされているか確認する必要もある。

 そんなときには、証明書を発行している企業(以下、証明書ベンダ)が提供しているSSLインストレーション・チェック・ツール(以下、SSLチェック・ツール)を利用すると、手軽で便利だ。本稿では各社のツールを紹介し、その使い方を説明しよう。

●Webブラウザ自体でのサーバ証明書の検証は確実ではない

 Internet ExplorerなどのWebブラウザでも、サーバ証明書に関わるエラーの原因を探ることは可能だ。サーバ証明書に絡むエラーが発生したとき、たいていのWebブラウザはその原因と思われる事項を表示するし、取得したサーバ証明書の内容も確認できる。

Windows Server Insiderの関連記事 Security&Trustフォーラム 連載 PKI再入門「第2回 PKIにおける信頼とは?

 ただ、Webブラウザによっては、「中間証明書」がサーバにインストールされているかどうか確認できないことがある。中間証明書とは、対象サーバとルート証明機関との信頼の連鎖の途中に入る別の証明機関のための証明書である。中間証明機関が存在する場合、サーバ証明書を発行するのは中間証明機関の役割だ。そのためサーバ証明書と同じく、中間証明書もサーバに正しくインストールする必要があり、チェックすべき対象の1つである。

 そのほかにも確実にチェックできない可能性はある。例えば、サイトのテスト中に(コストのかかる)公的な証明書ではなく自己発行の証明書を利用している際には、自己発行の証明書そのものをクライアントPCにインポートしておくことで、Webブラウザのエラー表示を回避することがよくある。しかし本稼働時にうっかり自己発行の証明書を置き換えず、かつテストに利用したクライアントPCを検証テストに用いると、そのままテストにパスしてしまう恐れがある。

 こうしたことから、Webブラウザ自体の機能でサーバ証明書のインストールの正常性を判定するのは、あまりお勧めできない。証明書の発行元が提供するSSLチェック・ツールはWebアプリケーションなので、チェックに利用するWebブラウザやOSの仕様や設定の影響を受けにくい分、確実である。

操作方法

●各証明書ベンダが提供しているSSLチェック・ツール

 証明書ベンダによっては、サーバにSSL用のサーバ証明書が正しくインストールされているか、ユーザー・レベルで確認するためのチェック・ツールを提供している。それらはいずれもWebアプリケーションであり、Webブラウザとインターネット接続環境があれば簡単に実行できる(ツールによってはJavaランタイムも必要)。

書ベンダ チェック・ツールのURL 備考
Comodo http://comodo.jp/navi/sslchecker#checkbox 日本語表記。有効期限をチェックするツールであり、中間証明書は確認できない
DigiCert http://www.digicert.com/help/  
GeoTrust https://knowledge.geotrust.com/support/
knowledge-base/index?page=content&id=SO9557
実体はVeriSignと共通。Javaランタイムが必要
GlobalSign http://www.globalsign.com/support/healthcheck/
index.php?showcerts=yes
執筆時点では一時的にサービスを停止していた
Go Daddy http://support.godaddy.com/help/6015/
using-the-ssl-installation-tool
 (ヘルプのページ)
アカウント管理ツールへのログインが必要。
RapidSSL https://knowledge.rapidssl.com/support/
ssl-certificate-support/index?page=content&
id=SO9556
実体はVeriSignと共通。Javaランタイムが必要
Thawte https://search.thawte.com/support/
ssl-digital-certificates/index?page=content&
id=SO9555
実体はVeriSignと共通。Javaランタイムが必要
VeriSign https://knowledge.verisign.com/support/
ssl-certificates-support/index?page=content&
id=AR1130
Javaランタイムが必要
証明書ベンダが提供しているSSLチェック・ツールの例
いずれもWebブラウザから簡単に実行できる。ただし、Comodoのツール以外は英語表記である。

 GeoTrustとRapidSSL、Thawte、VeriSignが提供しているツール(いずれも実体はVeriSign製)は、これらのベンダ以外が発行した証明書はチェックできない(エラーが発生する)。これら以外のツールでは、試した限りでは発行元のベンダが異なる場合でもエラーなしで実行できたが、やはり対象の証明書を発行したベンダのツールの方が安心して使えるのはいうまでもないことだろう。

●SSLチェック・ツールの使い方

 本稿では、GeoTrustが発行した証明書と同社のツールを例にとりあげてみる。といっても、どのツールでも操作方法はほぼ共通で、チェック対象のサーバのドメイン名(FQDN)とSSL(WebサーバなのでHTTPS)のリッスン・ポート番号(デフォルトでは443)という2つのパラメータを指定するだけで済む。ただし、FQDNで指定するサーバはインターネットからアクセスできる必要がある。

 なお、GeoTrustとThawte、RapidSSL、VeriSignの各ツールを実行するには、Javaランタイムが必要だ。事前にJavaランタイムをインストールして、利用するWebブラウザでJava アプレットを実行できるようにしておくこと。

 GeoTrust製チェック・ツールのページをWebブラウザで開いたら、ページ真ん中付近に表示される「Enter your Web Server's domain name」にチェック対象のサーバのFQDNを指定する。またSSLのリッスン・ポートがデフォルトの443以外の場合は、「Enter your port (443 is default for SSL)」にそのポート番号を指定する。そして[Test this Web Server]ボタンをクリックして、その下に結果が表示されるのを待つ。

WebブラウザでSSLチェック・ツールを実行する WebブラウザでSSLチェック・ツールを実行する
これはGeoTrust製チェック・ツールのページをIE9で開いたところ。
  (1)チェック対象のサーバのFQDNを指定する。「https://<FQDN> /subdir/index.html」といったURLを指定してもチェックできたが、「http:」から始まる非SSLのURLでは失敗する(エラーが発生する)ので注意。
  (2)SSLのリッスン・ポート番号を指定する。デフォルトの「443」であれば、変更する必要はない。
  (3)これをクリックするとチェックが始まる。数秒〜十数秒ほど待つ。
  (4)チェックの結果、問題がなければここに「Successful」と表示される。不具合が見つかった場合は、別のステータスが表示される(後述)。
  (5)エラーや警告の詳細や、取得された証明書の情報などが表示される。

 サーバ証明書が正しくインストールされていた場合は、[Status]欄に「Successful」と表示される。そのときの詳細結果の出力例を以下に記す。

taiyoseikatsu.com is successfully secured by an SSL certificate.
The following certificates are correctly installed:

------Certificate 1------ ……(1)
--Issued To--
Organization: taiyoseikatsu.com
Organizational Unit: Domain Control Validated - QuickSSL(R) Premium
Organizational Unit 2: See www.geotrust.com/resources/cps (c)12
Organizational Unit 3: **********
Common Name: taiyoseikatsu.com
Country: JP

--Issued By-- ……(2)
Organization: GeoTrust Inc.
Organizational Unit: Domain Validated SSL
Common Name: GeoTrust DV SSL CA
Country: US

Valid from Tue Jan 03 06:54:25 JST 2012 to
        Sun Feb 03 21:41:35 JST 2013 ……(3)
Serial Number (hex): *****
-------------------------

------Certificate 2------ ……(4)
--Issued To--
Organization: GeoTrust Inc.
Organizational Unit: Domain Validated SSL
Common Name: GeoTrust DV SSL CA
Country: US

--Issued By-- ……(5)
Organization: GeoTrust Inc.
Common Name: GeoTrust Global CA
Country: US

Valid from Sat Feb 27 06:32:31 JST 2010 to
        Wed Feb 26 06:32:31 JST 2020
Serial Number (hex): *****

SSLチェック・ツールの詳細結果の出力例
これはサーバ証明書が正しくインストールされていたと判定された場合の結果。ルート証明書→中間証明書→対象サーバの証明書という3階層の証明書を取りあげている。
  (1)検出された対象のサーバ自身の証明書。
  (2)(1)の証明書を発行した証明機関。
  (3)(1)の証明書の有効期限。いつ期限が切れるか確認しておこう。
  (4)(2)の証明機関の証明書。この例では、中間証明書に当たる。
  (5)(4)の証明書を発行した証明機関。この例ではルート証明機関に当たる。

 他のSSLチェック・ツールでリッスン・ポートの指定欄がなく、かつサーバが443番以外でリッスンしている場合は、サーバのFQDNを指定する欄に「<FQDN>:<ポート番号>」という形式で指定してみよう。

●サーバ証明書のインストールに失敗していた場合の結果は?

 サーバ証明書のインストールに失敗していた場合に、SSLチェック・ツールがどのようなエラーを発するか、GeoTrust製ツールで調べてみた(RapidSSL/Thawte/VeriSignの各ツールと共通)。いずれの場合でも[Status]欄には「Successful」ではなく警告やエラーの概要が表示される(背景色は、警告だと黄色で、エラーでは赤色)。

■サーバに接続できなかった場合

サーバに接続できなかった場合のエラ サーバに接続できなかった場合のエラー
対象のサーバが応答せず、接続に失敗した場合、「Connection has timed out.」すなわちタイムアウトのエラーが表示される。

■指定したFQDNと証明書のCommon Nameが一致しなかった場合

指定したFQDNと証明書のCommon Nameが一致しなかった場合のエラー 指定したFQDNと証明書のCommon Nameが一致しなかった場合のエラー
SSLでは、クライアント(ここではチェック・ツールに相当)から指定したサーバのFQDNと、そのサーバ証明書のCommon Nameが一致している必要がある。もし一致していないと、「〜but could not determine which is the primary certificate for the Web server.〜」すなわち、どの証明書が対象のサーバのものなのか判定できない、というエラーが表示される。

■サーバ証明書の有効期限が切れていた場合

証明書の有効期限が切れていた場合のエラー 証明書の有効期限が切れていた場合のエラー
サーバ証明書の有効期間がすでに終わっていた場合、このような警告が表示される。
  (1)サーバ証明書の有効期限と、チェック・ツールを実行したPCの日時設定をそれぞれ確認するように促されている。
  (2)サーバ証明書の有効期限。この例では2012年1月9日で切れていることが分かる。

■中間証明書が見つからなかった場合

中間証明書が見つからなかった場合のエラー 中間証明書が見つからなかった場合のエラー
対象のサーバに適切な中間証明書(The intermediate CA certificate)がインストールされていないと、サーバ証明書とルート証明書との信頼の連鎖が切れてしまう。この場合、「The intermediate CA certificate cannot be found for the following certificate chain.」すなわち証明書の連鎖にて中間証明書が見つからない、というエラーが表示される。

■自己発行の証明書がインストールされていた場合

自己発行の証明書がインストールされていた場合のエラー 自己発行の証明書がインストールされていた場合のエラー
自己発行の証明書とは、その名の通り発行元が自分自身であり、公的に証明されていないものだ。一方、このGeoTrustのチェック・ツールは他の証明機関から発行された証明書をサポートしていない。そのため、「The following root issuer is not supported by the certificate installation checker.」すなわち、このツールではサポートされていない発行元がこの証明書を発行している、というエラーが表示される。

 もし詳細結果にサーバ証明書の[発行者](Issuer)という欄があれば、チェックした証明書が自己発行かどうかを簡単に判定できる。発行者がCommon Nameと一致する場合、それは自己発行の証明書である。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。