SSL証明書の仕組みを徹底解説


 

WEBサイトをHTTPS化する際に必要となるSSL証明書。本記事では、一般的なDV証明書(Domain Validation)に焦点を当て、その仕組みと導入手順をわかりやすく解説します。

SSL証明書とは

SSL証明書は、インターネット上でデータを安全にやり取りするための暗号化技術を実現するデジタル証明書です。この証明書があることで:

  • 通信内容が暗号化される
  • サイトが本物であることが証明される
  • ブラウザのアドレスバーに鍵マークが表示される

登場するアイテムとその役割

SSL証明書の仕組みを理解するには、まず登場する各アイテムの役割を知る必要があります。

1. 秘密鍵(private.key)

何か:暗号化・復号化のための「鍵」

目的:通信を暗号化するために使う。誰にも見せてはいけない機密情報

たとえ:家の鍵。これを持っている人だけが「解錠」できる

保管場所:あなたのサーバーの中だけ。絶対に外部に出してはいけない

2. 公開鍵

何か:秘密鍵とペアになる鍵

目的:訪問者が暗号化通信をするために使う。誰に見られても問題ない

関係性:秘密鍵で作った暗号は、公開鍵でしか解けない(逆も同様)

たとえ:南京錠。誰でもかけられるけど、開けられるのは秘密鍵を持っている人だけ

どこにあるか:CSRの中に含まれる

3. CSR(Certificate Signing Request / 証明書署名要求)

何か:「私はこのドメインの所有者です。証明書を発行してください」という申請書

目的:認証局に証明書発行を依頼するため

中身

  • あなたのドメイン名(sample-abc.jp)
  • 公開鍵(秘密鍵とペアになるもの)
  • 会社名などの情報

たとえ:免許証の申請書

誰に渡すか:認証局(GlobalSignなど)に提出

4. サーバー証明書(server.crt)

何か:認証局が発行する「このサイトは本物です」という証明書

目的:訪問者のブラウザに「このサイトは信頼できる」と証明する

中身

  • あなたのドメイン名
  • 公開鍵
  • 有効期限
  • 認証局の署名(改ざん防止)

たとえ:認証局が発行した「免許証」

誰に見せるか:サイト訪問者全員(自動的に送信される)

5. 中間証明書(intermediate.crt)

何か:認証局自身の証明書

目的:「サーバー証明書を発行したのは信頼できる認証局です」と証明する

たとえ:免許証を発行した「警察署の印鑑証明書」

なぜ必要か:ブラウザは直接あなたを信頼するのではなく、認証局を信頼している

6. ルート証明書(root.crt)

何か:最上位の認証局の証明書

目的:信頼の起点

どこにあるか:最初からブラウザに内蔵されている

たとえ:「国が認めた機関のリスト」がブラウザに入っている

各アイテムの関係性


ポイント:秘密鍵はサーバー内にのみ保管し、CSRには公開鍵だけを含めて認証局に提出します。

SSL証明書取得の流れ

ステップ1:鍵のペアを作る(サーバー内)

まず、サーバー内で秘密鍵と公開鍵のペアを生成します。

bash

# 秘密鍵の生成
openssl genrsa -out private.key 2048

# CSRの生成
openssl req -new -key private.key -out server.csr

目的:暗号通信の準備

重要:秘密鍵は絶対に外部に出さないこと

ステップ2:申請書(CSR)を作る(サーバー内)

CSRには以下の情報を含めます:

  • ドメイン名:sample-abc.jp
  • 公開鍵:(ステップ1で作ったもの)
  • 国コード:JP
  • 都道府県:Tokyo
  • 市区町村:Shibuya-ku
  • 組織名:Your Company Name

目的:「このドメインの証明書を発行してください」と依頼するため

重要:秘密鍵は含まれません。公開鍵だけを渡します

ステップ3:認証局に申請

生成したCSRを認証局(GlobalSignなど)に提出します。

認証局は「本当にこのドメインの所有者か?」を確認します。

DV証明書の確認方法

方法A:メール認証

認証局から admin@sample-abc.jp などにメールが送信されます。メール内のリンクをクリックすることで、「このメールアドレスが使える = ドメイン所有者」と判断されます。

方法B:DNS認証

認証局が指定したTXTレコードをDNSに追加します。認証局が確認できれば、「DNSを操作できる = ドメイン所有者」と判断されます。

方法C:ファイル認証

認証局が指定したファイルをサーバーの特定パスに配置します。認証局がアクセスして確認できれば、「サーバーを操作できる = ドメイン所有者」と判断されます。

ステップ4:証明書の発行

認証局が確認完了すると、以下の処理が行われます:

  1. あなたのCSR(公開鍵入り)を受け取る
  2. 認証局の秘密鍵で「署名」をつける
  3. サーバー証明書として発行

サーバー証明書の中身

  • あなたのドメイン名
  • あなたの公開鍵
  • 有効期限
  • 認証局の署名(改ざん防止)

署名の意味:「この証明書は私(GlobalSign)が発行した本物です」という印鑑のようなもの

ステップ5:サーバーに設置

認証局からダウンロードできるファイル:

  • サーバー証明書(server.crt)
  • 中間証明書(intermediate.crt)

これらをサーバーに設置します。

Apacheの設定例

apache

<VirtualHost *:443>
    ServerName sample-abc.jp
    
    SSLEngine on
    SSLCertificateFile /path/to/server.crt
    SSLCertificateKeyFile /path/to/private.key
    SSLCertificateChainFile /path/to/intermediate.crt
    
    # その他の設定...
</VirtualHost>

Nginxの設定例

nginx

server {
    listen 443 ssl;
    server_name sample-abc.jp;
    
    ssl_certificate /path/to/server.crt;
    ssl_certificate_key /path/to/private.key;
    
    # その他の設定...
}

なぜ3つのファイルが必要か

  • 秘密鍵:実際に暗号化通信をするため
  • サーバー証明書:訪問者に「信頼できるサイト」と証明するため
  • 中間証明書:「この証明書は信頼できる認証局が発行した」と証明するため

ステップ6:HTTPからHTTPSへのリダイレクト設定

HTTP(ポート80)でアクセスしたユーザーをHTTPS(ポート443)に転送します。

Apacheの場合

apache

<VirtualHost *:80>
    ServerName sample-abc.jp
    Redirect permanent / https://sample-abc.jp/
</VirtualHost>

Nginxの場合

nginx

server {
    listen 80;
    server_name sample-abc.jp;
    return 301 https://$host$request_uri;
}

ポイント:DV証明書の場合、審査は通常数分〜数時間で完了します。作業自体は慣れれば1〜2時間程度で完了できます。

訪問者がアクセスした時の流れ

訪問者があなたのサイトに来ると以下が自動的に行われます。

1. 証明書の送信

サーバーから訪問者のブラウザに以下が自動送信されます:

  • サーバー証明書
  • 中間証明書

2. ブラウザの検証

ブラウザは受け取った証明書を検証します:

  1. サーバー証明書の署名を中間証明書で検証 → 「GlobalSignが発行した本物だ」
  2. 中間証明書の署名をルート証明書(内蔵)で検証 → 「GlobalSignは信頼できる認証局だ」
  3. ドメイン名が一致しているか確認 → 「証明書のドメインとアクセス先が同じだ」
  4. 有効期限内か確認 → 「期限切れじゃない」

3. 鍵マークの表示

すべての検証がOKなら、ブラウザのアドレスバーに🔒鍵マークが表示されます。

各アイテムの目的まとめ

アイテム誰が作る/持つ目的公開してOK?
秘密鍵あなた暗号通信の復号化❌ 絶対ダメ
公開鍵あなた(秘密鍵から生成)暗号通信の暗号化⭕ OK
CSRあなた証明書発行の申請⭕ 認証局にだけ
サーバー証明書認証局「本物のサイト」の証明⭕ 全訪問者に
中間証明書認証局「信頼できる認証局」の証明⭕ 全訪問者に
ルート証明書認証局信頼の起点⭕ ブラウザ内蔵

信頼の連鎖(チェーン)

SSL証明書の最も重要な概念は「信頼の連鎖」です:

ルート証明書(ブラウザが信頼)
    ↓「私が保証します」
中間証明書(GlobalSign)
    ↓「私が発行しました」
サーバー証明書(sample-abc.jp)
    ↓「このサイトは本物です」
訪問者が安心してアクセス

ブラウザは直接あなたを信頼するのではなく、信頼できる認証局が「この人は本物です」と保証しているから信頼するという仕組みです。

なぜこの仕組みが必要なのか

証明書がない場合

偽サイトを作った人「私がsample-abc.jpです!」
訪問者「本当かな...?」
→ 確認する方法がない

個人情報やクレジットカード情報を入力してしまうと、詐欺被害に遭う可能性があります。

証明書がある場合

偽サイト「私がsample-abc.jpです!」
訪問者「証明書を見せて」
偽サイト「えっと...」
→ 認証局の署名がないので偽物だとバレる

つまり、なりすましを防ぐために、この複雑な仕組みが必要なのです。

証明書の更新管理

SSL証明書には有効期限があります(通常1年、最大13ヶ月)。

更新のタイミング

  • 有効期限の1ヶ月前に更新作業を開始
  • 更新時も同じ手順(CSR生成から)を繰り返す

更新を忘れると

  • ブラウザに「証明書が期限切れです」という警告が表示される
  • 訪問者がアクセスできなくなる
  • 信頼性が低下する

そのため、証明書の有効期限は必ず管理しましょう。

SSL証明書の更新方法

別記事で説明します。

まとめ

DV証明書(Domain Validation)の導入は以下の流れで進めます:

  1. 鍵ペアの生成:秘密鍵と公開鍵を作成
  2. CSRの生成:証明書発行の申請書を作成
  3. 認証局への申請:ドメイン所有確認を受ける
  4. 証明書の取得:サーバー証明書と中間証明書をダウンロード
  5. サーバーへの設置:証明書と秘密鍵を設定
  6. リダイレクト設定:HTTPからHTTPSへ転送

この仕組みにより、訪問者は安心してあなたのサイトを利用できるようになります。

SSL証明書は、現代のWEBサイト運営において必須のセキュリティ対策です。適切に設定・管理することで、訪問者の信頼を獲得し、安全な通信環境を提供できます。

WEBプログム、WEBデザインなどの制作については、以下を御覧ください。

WEBプログム、WEBデザインなどの制作