メインコンテンツへスキップ
見出し画像

サーバ証明書とFQDNとは?本物のサーバを確認する仕組み

    HTTPSでは通信が暗号化されます。しかし、相手を確認せずに暗号化するだけでは、攻撃者が用意した偽サーバと安全に会話してしまう可能性があります。

    そこで登場するのが「サーバ証明書」と「FQDN」です。

    最初に結論

    サーバ証明書は、接続先サーバの身元確認に使う電子的な証明書です。FQDNは、インターネット上のサーバを表す省略していないホスト名です。

    ブラウザは、おおまかに次の確認を行います。

    URLのFQDNと、サーバ証明書に登録されたDNS名が一致するか確認する。

    この確認によって、正しいURLを入力したのに偽サーバへ誘導された場合でも、証明書の不一致を検出できます。

    FQDNとは

    FQDNは「Fully Qualified Domain Name」の略です。日本語では「完全修飾ドメイン名」と呼ばれます。

    例えば、次のURLを見てみましょう。

    https://shop.example.com/products?id=10

    各部分を分けると次のようになります。

    部分内容https通信方法を表すスキームshop.example.com接続先のFQDN/productsサーバ内のパスid=10クエリパラメータ

    この場合、証明書と照合する名前はshop.example.comです。URL全体やhttps、/productsまで証明書に登録するわけではありません。

    画像

    支店を指定した予約に例えると

    同じ会社に複数のホテルがあれば、「東京駅前店」のように支店まで指定します。FQDNも同じように、example.comの中のshop、mail、apiなどのサーバを区別します。サーバ証明書の確認は、訪ねた支店名と入口の確認書類に記載された支店名を照合するイメージです。

    サーバ証明書には何が入っているのか

    サーバ証明書には、発行した認証局、有効期間、公開鍵、利用できるDNS名、シリアル番号、認証局のディジタル署名などが入っています。認証局の署名を検証することで、証明書の改ざんや信頼関係を確認します。

    ブラウザがサーバを確認する流れ

    https://shop.example.comへアクセスする場合を考えます。

    1. ブラウザがURLからshop.example.comを取り出す。

    2. DNSで対応するIPアドレスを調べ、TLS接続を始める。

    3. サーバがサーバ証明書を提示する。

    4. ブラウザが認証局の署名と有効期間を確認する。

    5. FQDNと証明書のDNS名を照合する。

    6. TLSの処理を通じ、サーバが対応する秘密鍵を持つことを確認する。

    確認に失敗した場合、ブラウザは証明書エラーを表示して利用者へ警告します。

    画像

    DNSをだまされても証明書確認が役立つ理由

    攻撃者がDNSの回答を書き換えると、ブラウザは偽サーバへ接続する可能性があります。しかし、攻撃者は通常、shop.example.com用の正当な証明書と秘密鍵を持っていません。FQDNと証明書を照合すれば不一致を検出できます。

    よくある勘違い

    「FQDNとIPアドレスは同じもの」

    FQDNは人が扱いやすい名前で、IPアドレスは通信先を示す数値です。DNSがFQDNをIPアドレスへ変換します。一つのFQDNに複数のIPアドレスが対応する場合もあります。

    「証明書が有効なら安全なサイト」

    有効な証明書は、指定された名前との対応や鍵の所有を確認する材料です。掲載内容、商品、運営者の良心まで保証するものではありません。

    「証明書が通信データをすべて暗号化する」

    証明書には公開鍵などが入っていますが、実際の通信保護はTLS全体の処理によって行われます。証明書はTLSの中で、主に相手確認と鍵の正当性確認に使われます。

    試験での覚え方

    次の対応を覚えましょう。

    FQDNは訪問先の名前、サーバ証明書は訪問先を確かめる資料。

    試験問題では、次の四点を分けて考えると整理しやすくなります。

    • DNS:FQDNからIPアドレスを調べる

    • FQDN:自分が接続したいサーバ名

    • サーバ証明書:サーバ名や公開鍵を確認する資料

    • TLS:証明書を使い、安全な通信経路を作る仕組み

    まとめ

    • FQDNはサーバを表す完全なホスト名

    • ブラウザはURLからFQDNを取り出す

    • サーバ証明書にはDNS名、公開鍵、有効期間などが入っている

    • ブラウザはFQDNと証明書のDNS名を照合する

    • 証明書はサイトの内容や運営者の善良さまでは保証しない

    次回は、証明書の中に出てくるsubjectAltName、dNSName、commonNameの違いを整理します。

    関連記事

    httpsのことを確認したい方はこちらをご確認ください。


    参考資料

     
     
    情報処理試験、セキュリティ・Webアプリ開発を学ぶ現役SE。初心者目線で、つまずいたIT用語や仕組みを整理しています。心理・セルフケア、本から学んだことも発信。Amazonのアソシエイトとして、Yotsuhaは適格販売により収入を得ています。

    あなたへのおすすめ