SSL証明書の必要性
SSL証明書はSSL(Secure Sockets Layer)を利用した通信時に使用できる暗号鍵・発行者の情報が記載されたブラウザとウェブサーバ間の通信データの暗号化を目的とした電子証明書です。
第三者機関に当たる認証局(Certificate Authority)が発行します。
SSL証明書は安全を担保された状態でインターネット上の情報のやり取りをする為に必要です。
みなさんが自宅の鍵を落とした際に慌ててしまうように、WEB上で暗号化されていないパケット(情報の子包み)は道端に放置された鍵と似ています。
*専門用語で、平文(cleartext:暗号化されていない状態のデータ)で送信すると言う
Web上のデータはTLS暗号化より前はメッセージを受信すれば誰もが見れる仕様でした。それではユーザーのプライバシーが安全ではなくなるためにSSL(Secure Sockets Layer)の仕組みが開発されました。
開発背景はデータが行き交う過程で暗号化されていないパケット(情報の小包)を外部から盗み見られる、もしくは途中で入手されることを防御する為の技術が必要だったためです。
家族が同じ鍵を持って自宅を開けられるように、一定の関係性の中で鍵を持ち合うことで危険から回避するイメージをするとわかりやすいでしょう。この考え方は公開鍵暗号方式に近いイメージです。
SSL証明書の仕組み
一般的にSSL証明書は公開鍵暗号方式で共通鍵を受け渡し、受け取った共通鍵を用いて、共通鍵暗号方式でやり取りし合うことで通信時のデータ安全性を担保しています。
技術的なお話をすると公開鍵・秘密鍵・共通鍵を共有した両者がハンドシェイク(握手)という鍵の交換の過程を通じて、通信をし合い、両者が適切な相手かどうかを判断し合っています。
公開鍵暗号方式だけを用いた暗号化の場合は、公開鍵と秘密鍵を用いて情報の暗号化、安全性を高めます。SSL証明書の取得時に公開鍵と秘密鍵のペアを作成し、所有者情報と共に認証機関(CA)へ提出します。
認証機関が第三者機関の役割を担い、認証機関が発行するSSL証明書に含まれた公開鍵を複合化するための秘密鍵を持つ人たちだけがSSL証明書による暗号化通信が可能になり、情報の秘匿性、安全性を得ます。
*複合化:暗号化した文章を平文に戻す作業
他にも公開鍵暗号方式に暗号化された情報を、元に戻すための鍵が同じ共通鍵暗号方式を組み合わせる場合もあります。
公開鍵暗号と共通鍵暗号の違い
公開鍵暗号方式と共通鍵暗号方式の違いは、公開鍵と秘密鍵を用いる公開鍵暗号方式は別々の鍵を用いる点に対して、暗号化するための鍵と複合するための鍵に同じものを使用する方式になる点です。
2つの鍵を用いる公開鍵暗号と1つの鍵を用いる共通鍵暗号と考えましょう。公開鍵暗号は1つの鍵が外部に公開される前提ですが、共通鍵暗号は信頼関係のある両者間にしか鍵を共有しない点での安全性向上が期待されます。
公開鍵暗号・秘密鍵暗号・共通鍵暗号
公開鍵暗号は「公開鍵と秘密鍵」の2つの鍵を1組として扱い、公開鍵は誰でも公開、配布が可能です。
反面、秘密鍵は、所有者以外は閲覧できず公開鍵で暗号化された情報は秘密鍵だけで複合化できます。
そして、暗号化通信を実現するために通信をする両者だけが共有する暗号化・複合化のために同じ鍵を扱うのが共通鍵です。
SSL証明書の種類
SSL証明書は主に3つあります。
ドメイン認証SSL証明書
ドメイン認証SSL証明書(クイック認証SSL)は、Webサイトなどのドメイン管理者が証明書発行をしているかを認証局へ確認した後に、証明書を発行します。
この段階では人間は確認作業を行わずに機械が自動的に判別します。
ドメインとはインターネット上の住所を意味します。Webサイトがインターネット上にどこにあるかを判別、特定するための情報です。
お家、会社の住所とインターネット上に存在するドメインも似た存在です。どこにあるのかを分かりやすく理解するためにあります。
ドメイン所有者の同意を確認する反面、ドメイン所有者が誰かは検証されないので潜在的な脆弱性がある点が危惧されています。
企業認証SSL証明書
企業認証SSL証明書は証明書発行までに人間による確認作業が必要になるため、ドメイン認証SSL証明書よりも安全性が担保されます。
フィッシング詐欺を防止するためにドメインが正しく運用されるための労力を支払うのが企業認証SSL証明書の大きなメリットです。
EV SSL証明書
EV SSL証明書は証明書に記載される組織が法的、かつ物理的に存在した上でドメイン所有者だと認証する技術です。
厳格な審査、認証ガイドラインを経て認証されるので、安全性の強度を考えれば最も安全な手段です。
3つの証明書の違い
ドメイン認証SSL証明書・企業認証SSL証明書・EV SSL証明書は、機械・人・認証ガイドラインの順番で証明書の認証、発行が行われると考えると分かりやすいです。
企業運営ドメインの場合は、安全性を得るために最低でもドメイン認証SSL証明書以上の認証、発行手続きを選択した方が良いでしょう。
自己署名証明書(オレオレ証明書)とは
自己証明書(オレオレ証明書)は第三者となる認証機関を使わずにユーザー自身が公開鍵を自分の持つ秘密鍵で署名、作成したものを意味します。
証明書それ自体の安全性を誰も担保できない状態に危険性があります。日本でも有名なオレオレ詐欺になぞらえてオレオレ証明書などと呼ぶ場合もあります。
証明書は自分、相手、認証機関の三角関係の間で安全を保持するための対策になるため、暗号化しても自分で作った鍵を利用することは推奨されていません。
署名の正当性を担保するのが、送り手となるどこかの誰かにしかならない点も安全かどうか判断できないので危険です。
Let’s Encryptとは
米国のISRG(Internet Security Research Group)が運営する有名な無料SSL証明書認証局がLet’s Encrypt(レッツ・エンクリプト)です。
StartSSL・WoSingなど他にも無料のSSL証明書認証局は存在しますが、証明書の不正発行、安全性の向上に関する問題などを抱える事例が発生したため利用する選択肢にしないのが安全です。
Let’s Encryptは自動更新を前提にした構成で事業者側がユーザー側の作業を求めない気軽さが大きなメリットです。スクリプト(プログラム)を設定すれば自動更新するため、更新時の手間が存在せず安全に保守性を担保できるので安心です。
*スクリプト:コンピュータ(機械)へ人間の指示したい内容を伝える指示書
SSL証明書が必要なことは理解した上で、どうして良いのか対処できないならLet’s Encryptを選んでおけば問題ありません。
例えば、メールサーバー、メールアーカイブサーバー等、複数のソフトウェア製品には標準パッケージとしてLet’s Encryptの証明書発行用スクリプトを用意されています。
Let’s Encryptの使用に関する注意点
Let’s Encryptの証明書発行作業を代行してもらう時に、依頼者側が知っておくべき最低限の注意点を挙げます。
Let’s Encryptの有効期限
Let’s Encryptの証明書有効期限は90日間(3ヶ月/1回頻度)のため、1年間で4回の自動更新設定が必要になります。依頼者となるあなたの考える点はLet’s Encryptの有効期限に対して自動更新を作業者側が行ってくれるのかを契約、相談時点で確認することです。
Let’s Encryptの信頼性
Let’s Encryptが提供するSSL証明書が安心して利用できる認証局かどうかという点は、利用者側の大きな疑問点でしょう。率直な意見を言えば認証局が行う「通信情報の暗号化」は極めて堅牢性が高く危険を排除するための技術です。
Let’s Encryptの認証局:ISRG
Let’s Encryptを運営するISRG(Internet Security Research Group)の技術顧問は認証局(CA)や公開鍵基盤(PKI)などの独立した専門家集団で構成されます。
Let’s EncryptはCisco Systems(シスコ)・AWS(Amazon)・Google(Alphabet)など誰もが知る大手企業・団体がスポンサードしている非営利団体になるため一定以上の信頼を得た運営が行われていると考えて良いでしょう。
Let’s Encryptと従来の有償SSL証明書の違い
両者の違いはLet’s Encryptは無料という点です。無料と有料との間にある暗号化強度(暗号の強さを測る指標)は一般的な使用事例ではそこまで深刻にならなくても安全性に問題はありません。
有料SSL証明書は利用者となるあなたがスクリプトの設定ができない場合は、第三者の手を用いて手動更新を行う必要があります。誰かの手を借りる必要があるため有料作業を依頼しなければなりません。
急な更新や更新忘れで期限が切れるなど保守性の部分で危険性が生じるため自社に技術者、外部の作業者がいない場合は選択肢として排除したほうが安全です。
ユーザー側の視点で考えてみると、システム側が自動更新作業をしてくれればストレスなく利用できる点から大きな安心感を得られるでしょう。