Webサイトの安全な通信を実現するのに欠かせないSSLサーバー証明書。しかし、サイバー攻撃の高度化に伴い、証明書の有無だけで安全性を判断することが難しくなっている。この記事ではSSLサーバー証明書の仕組み・種類を紹介した上で、Webサイトを安全に運用するために必要なことについて解説する。
SSL証明書とは
SSL(Secure Sockets Layer)は暗号化通信を行う際のプロトコルの1つとして知られている。代表的な使用例として、Webサイトを閲覧する際の通信が挙げられる。近年、多くのWebサイトのURLが「https://」で始まるようになっている。これは、安全性を高めるための暗号化通信が行われていることを示している。HTTPSは、http(Hypertext Transfer Protocol)にSecureのSを付けて略されたものだ。
Webサイトを利用していると、ユーザー認証をしたり、個人情報・決済情報を送受信したりするケースは多いだろう。そのようなケースで、第三者による盗聴や改ざん、あるいは、なりすましを防ぐことを目的に、WebサイトへSSL通信が導入されてきた。
HTTPSに対応していないWebサイトを訪問した際にはWebブラウザーが警告を出す場合があるため、一般ユーザーにも安全な通信に対する認知が広がっている。そして、このHTTPS通信を実現するのに欠かせないのがSSLサーバー証明書だ。このSSLサーバー証明書には主に2つの役割がある。
1)通信データの暗号化
SSLサーバー証明書に含まれる暗号鍵(公開鍵、共通鍵)を用いて、通信データを暗号化する仕組みだ。まず、Webサーバーは暗号化通信に必要な公開鍵と秘密鍵のペアを生成する。そして、Webブラウザーがアクセスを要求してきた際に、秘密鍵でデジタル署名したSSLサーバー証明書と公開鍵が配布される。
Webブラウザーでは公開鍵を使ってデジタル署名と証明書が改ざんされていない点を検証する。有効な証明書であれば、公開鍵で暗号化した共通鍵を送付し、以降の通信で共通鍵を介した暗号化通信が始められるようになる。
2)実在証明
Webサイトの所有者が存在することを第三者が証明する。正規のWebサイトに偽装したフィッシングサイトを経由して個人情報を詐取する事例が後を絶たない中、実在証明により、正規の運営者によって管理されているかどうかを確認できるようになる。
Webサイトを訪問した時に、Webブラウザーのアドレスバーにある鍵マークをクリックすると、以下のように証明書を確認できる。
SSLサーバー証明書の種類
SSLサーバー証明書には異なる認証レベルが存在し、その目的に応じて選択できる。Webサイト運営者がSSLサーバー証明書を導入する際には、その認証レベルの違いを理解しておくと良いだろう。
1)ドメイン認証(DV:Domain Validation)
ドメインの所有者とSSL申請者が一致していることを証明する。最も安価な認証タイプであり、中には無料のものも提供されている。認証を取得するまでの手続きが容易なのもメリットと言える。
暗号化の仕組み自体は、ほかの認証レベルと同様であるものの、後述するタイプのものと異なり、所有者の実在が証明されるわけではない。そのため、偽装されたWebサイトであるかどうかを確認できない点には注意が必要だ。
2)企業実在認証(OV:Organization Validation)
第三者機関により、ドメインの所有者、およびWebサイトの運営者となる企業が実在するかどうか検証される。コーポレートサイトをはじめ、情報提供を目的としたWebサイトで導入されるケースが多い。
3)EV認証(EV:Extended Validation)
上記の認証レベルよりも、さらに厳格に、認証ガイドラインに基づいた審査を経て発効される証明書となる。
DV認証、OV認証と比較すると、発行に一定の日数を要し、費用も高額になる場合が多い。発行に日数を要するのは、登記情報データベースだけでなく、認証局側にて電話などを用いて物理的な実在も確認するなど、OV認証よりも厳格な実在証明を行うためだ。そうしたプロセスを経ることから信頼性も高く、個人情報や決済情報などの入力が必要となるWebサイトやECサイトで導入される傾向にある。
また、認証レベルに加えて、サーバー証明書には対象となるドメインによる違いもある。
1)シングルドメイン
1つのドメインのみを認証の対象とする。サブドメインは対象外となる点に注意が必要だ。
2)ワイルドカード
サブドメインすべてを含め、1つの証明書で対応できる。例えば「*.example.com」というように、ワイルドカードで複数のサブドメインを指定できるのが特長だ。
3)マルチドメイン
複数のドメインをまとめて認証する。つまり、「www.example.jp」、「www.example.net」といったトップドメインが異なる場合にも対応できる。この場合、サービスによってはサブドメインが対象外となることもあるため、サービス導入を検討する場合には注意するようにしたい。
ワイルドカード、マルチドメインを利用することで、SSL証明書を各ドメインに導入する必要がなくなることからコスト削減につながる。また、証明書のインストールや管理の手間も個別に行う必要がないというメリットもある。しかしながら、ワイルドカード、マルチドメインを利用している場合、秘密鍵が流出してしまった際に、サーバー証明書を導入しているすべてのドメインがリスクを抱えることになる。導入時にはそうした特性も踏まえて検討すると良いだろう。
無料SSLサーバー証明書のメリットとデメリット
先述のとおり、SSLサーバー証明書の中には無料で利用できるものがある。米国の非営利団体が2016年に開始したLet's Encryptはその代表例として知られている。
Let's Encryptは、証明書の更新手続きが自動化されているという特長がある。証明書の有効期間が90日と定められているが、更新作業をスクリプトで自動化すれば、管理者の手間はほとんどかからない。有料の証明書と同じレベルの暗号強度で、管理コストと工数を削減できるのがメリットだ。
一方、デメリットとしては、十分なサポートが受けられない点が挙げられる。また、有料の証明書を発行する事業者が、オプションのセキュリティ機能を提供しているのに比べると、そのサポートに物足りなさを感じるケースもあるかもしれない。
加えて、無料SSLサーバー証明書の発行・管理が容易であることを背景に、フィッシングサイトもSSL証明書を導入し、HTTPS通信を行うようになってきた。
国内向けに作成されたフィッシングサイトの大多数が「HTTPS化」されているという報告もある。以前はURLがHTTPSで始まり、鍵マークが表示されていれば安全なWebサイトだと考えられていた時期もあった。
しかし、現状を踏まえると、HTTPS通信の有無だけでWebサイトの安全性を判断するのはむしろ危険だと言える状況となっている。精巧に偽装されたフィッシングサイトや、見間違いを誘うようなドメインを攻撃者は用いるため、ユーザーが真偽を見抜くのは極めて困難だと言わざるを得ない。
Webサイトを安全に運営するために
サイバー攻撃の巧妙化を背景に、Webサイト運営者の責任はより重大になっている。十分な対策を講じなければ、ユーザーは不安を抱き、自社のサービスを利用しなくなることも想定される。また、攻撃者が自社に偽装することで、間接的ながらユーザーに被害を与えてしまう恐れもある。
このような事態を防ぐために、SSLサーバー証明書は一定の効果を発揮する。しかし、攻撃手法の巧妙化・悪質化に伴い、その効果が限定的となりつつあるのも事実だ。Webサイトの運営者としてはSSLを導入しさえすれば安全だとは考えず、Webサイトの安全性を確保するために包括的な対策を講じなければならない。
近年、Webサイトの改ざんをきっかけとしたインシデントも頻繁に見受けられる。標的型攻撃やソーシャルエンジニアリングによる管理者アカウントの情報漏えい、あるいは総当たり攻撃などによるアカウントへの不正侵入の結果、Webサイトを改ざんされてしまうのだ。
また、Webサイトの脆弱性を突いた攻撃も数多く存在する。代表的な攻撃手法として、SQLインジェクション、クロスサイトスクリプティング(XSS)、クロスサイトリクエストフォージェリ(CSRF)などが挙げられる。ほかにも、ゼロデイ脆弱性を狙う攻撃が増加傾向にあるため、脆弱性を放置することは、かつてないほど大きなリスクとなっている。
では、どのような対策を講じればよいのだろうか。まず、Webサイトに関わるインフラにおける脆弱性を放置してはならない。そして、WAF(Webアプリケーションファイアウォール)のような仕組みを利用し、攻撃の兆候が見られる通信を遮断するべきだ。
また、エンドポイントセキュリティの強化も欠かせない。端末へのセキュリティソフトの導入、OSやソフトウェアの適切なアップデート、従業員へのセキュリティ教育なども含まれる。セキュリティポリシーを策定して、適切に運用していく取り組みも重要だ。
詳しくは、IPA発行の「安全なウェブサイトの作り方」のようなガイドラインを参照すると良いだろう。
Webサイトは、企業が情報を発信したり、商品・サービスの販売を促進させたりするのに必要不可欠なものであり、ビジネスの成長に大きな影響力を持つようになっている。事業を円滑に運営するためにも、Webサイトのセキュリティ対策は、企業にとって重要な課題だと認識する必要がある。