|13分で読めます

SSL/TLSとは?HTTPS暗号化と証明書の仕組みを解説

SSL/TLSはHTTPSを支えるセキュリティ層です。ブラウザとWebサイト間の通信を暗号化し、サーバーの身元を確認し、password、cookie、form、payment情報などが途中で読まれたり改ざんされたりしないように守ります。

SSL/TLSとは?

SSLはSecure Sockets Layer、TLSはTransport Layer Securityの略です。現在実際に使われているのはTLSですが、慣習的にSSL certificateと呼ばれることが今でも多くあります。

サイトがTLSを使っている場合、URLはhttps://で始まります。ブラウザによってはpadlockやsecurity indicatorが表示されます。

TLSが保護するのは通信経路であり、Webサイトの内容そのものを保証するわけではありません。悪意あるサイトもHTTPSを使えます。padlockは「通信が暗号化され、certificateがdomainと一致している」ことを示すだけで、事業者の信頼性を自動的に保証するものではありません。

SSL/TLS provides:

1. Encryption
   Data is scrambled so eavesdroppers cannot read it.

2. Authentication
   The certificate helps prove the server is the real site.

3. Integrity
   The connection can detect tampering during transit.

Without HTTPS:
  Browser -> "password123" -> Wi-Fi -> ISP -> Website
  Anyone on the path may be able to read or alter traffic.

With HTTPS:
  Browser -> encrypted TLS data -> Wi-Fi -> ISP -> Website
  Interceptors see unreadable encrypted traffic.

SSLとTLSの違い

SSLとTLSは同じ意味のように使われることがありますが、技術的にはSSLは古い方式で、現代のブラウザとサーバーではTLSが使われます。

Protocol状態メモ
SSL 1.01994未公開重大な設計上の問題があった
SSL 2.01995廃止安全ではなく複数の攻撃に弱い
SSL 3.01996廃止POODLEなどの攻撃で破られた
TLS 1.01999廃止現代のsecurity基準では使うべきではない
TLS 1.12006廃止新しいTLS versionに置き換えられた
TLS 1.22008対応中安全に設定すれば現在も広く使われる
TLS 1.32018推奨handshakeが速く、安全なdefaultを持つ

HTTPSの仕組み

HTTPSは、TLSの中で動くHTTPです。ブラウザは通常のHTTP requestを送りますが、そのrequestは端末を出る前に暗号化されます。

TLS Handshakeを解説

暗号化されたWeb通信が始まる前に、ブラウザとサーバーはhandshakeを行います。handshakeではsecurity設定を合意し、certificateを検証し、共有の暗号鍵を作成します。

Simplified TLS handshake:

1. ClientHello
   Browser sends supported TLS versions, cipher suites, and random data.

2. ServerHello
   Server chooses TLS settings and sends its certificate.

3. Certificate validation
   Browser checks domain name, issuer, chain, signature, and expiration.

4. Key exchange
   Browser and server agree on shared session keys.

5. Finished messages
   Both sides confirm the handshake was not tampered with.

6. Encrypted HTTP
   Normal HTTP requests and responses now travel inside TLS.

SSL証明書の中身

SSL証明書は、domain nameとpublic keyを結び付け、証明書の発行者を示すdigital documentです。ブラウザはこれを使って、certificateを提示したサーバーがそのdomainを代表してよいか確認します。

A certificate usually contains:

Subject:        www.example.com
Issuer:         Example Certificate Authority
Valid from:     2026-01-01
Valid until:    2026-04-01
Public key:     RSA or ECDSA public key
SAN entries:    example.com, www.example.com
Signature:      CA signature over the certificate data
Serial number:  Unique identifier from the CA

証明書タイプ: DV、OV、EV

証明書タイプの違いは、主にcertificate authorityが発行前にどれだけ身元確認を行うかです。

Type検証内容主な用途
DVDomain Validation: domainを管理できることを証明するブログ、アプリ、API、個人サイト、多くのWebサイト
OVOrganization Validation: domainと組織情報を確認する証明書に組織情報を載せたい企業
EVExtended Validation: より厳格な組織確認を行う金融、enterprise、compliance重視の一部サイト
Wildcard*.example.comのように1階層のsubdomainをまとめて対象にする同一domain配下に多くのsubdomainがある場合
SAN / Multi-domain1つのcertificateに複数の名前を含める複数domainやhostnameを同じserviceで扱う場合

Certificate Chain of Trust

ブラウザはすべてのWebサイト証明書を個別に信頼しているわけではありません。root certificate authorityを信頼し、正しいcertificate chainによってwebsite certificateが信頼済みrootへつながるかを確認します。

Certificate chain:

Root CA
  -> Intermediate CA
    -> Website certificate

Your browser already trusts many root CAs.
The website sends its certificate and usually the intermediate certificate.
The browser builds a chain back to a trusted root.

SSL証明書を取得する方法

多くのサイトはhosting provider、CDN、managed platform、certificate authorityを通じてcertificateを取得します。Let’s Encryptのような自動化サービスにより、無料で取得・更新できる場合も多くあります。

  1. HTTPSが必要なdomain nameを決める。wwwあり/なしの両方も確認する。
  2. host、CDN、certificate authorityからcertificateを作成またはrequestする。
  3. DNS record、HTTP file、email approvalなどでdomain validationを完了する。
  4. serverまたはplatformへcertificateとprivate keyをinstallする。
  5. HTTPからHTTPSへのredirectを有効にし、期限切れ前にcertificateを更新する。

よくあるSSL/TLSエラー

SSL/TLS errorは、ブラウザがcertificateを安全に検証できない、またはsecure connectionを確立できないことを意味する場合が多いです。

Errorよくある原因修正方法
Certificate expiredcertificateの有効期限が切れている新しいcertificateへ更新してinstallする
Name mismatchcertificateにrequested hostnameが含まれていない正しいSAN nameを含むcertificateを発行する
Untrusted issuercertificate chainが信頼済みrootへつながらないintermediate certificateをinstallする、または信頼済みCAを使う
Mixed contentHTTPS pageがHTTP経由でimage、script、CSSを読み込んでいるresource URLをHTTPSへ変更する
Old TLS versionserverが古いprotocolしか対応していないTLS 1.2とTLS 1.3を有効にする
Clock wrongclient端末の日付や時刻が間違っているsystem clockを修正する

SSL/TLSのベストプラクティス

有効なcertificateはHTTPS securityの一部にすぎません。設定も同じくらい重要です。

実践重要な理由
TLS 1.2とTLS 1.3を使うSSLv2、SSLv3、TLS 1.0、TLS 1.1を無効化する
更新を自動化するcertificate期限切れによるoutageを防ぐ
HTTPをHTTPSへredirectするユーザーを暗号化されたページに保つ
HSTSを慎重に有効化するbrowserへ常にHTTPSを使うよう指示する
Mixed contentを避けるscript、style、font、image、APIをHTTPSで読み込む
private keyを保護するsource controlへcommitしたり、不用意に共有したりしない

SSL証明書を確認する方法

certificateを確認すると、有効期限、issuer、hostname coverage、chain validity、対応TLS versionを検証できます。

Check a certificate from the terminal:

openssl s_client -connect example.com:443 -servername example.com

Show certificate dates:

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -dates -issuer -subject

SSL証明書を確認

無料のSSL Checkerで、certificateの有効性、issuer、有効期限、hostname coverage、よくあるHTTPS設定問題を確認できます。

SSL Checkerを開く

参考資料

  • RFC 8446 - The Transport Layer Security (TLS) Protocol Version 1.3
  • RFC 5246 - The Transport Layer Security (TLS) Protocol Version 1.2
  • CA/Browser Forum Baseline Requirements
  • Mozilla Server Side TLS recommendations
  • Let’s Encrypt documentation