メインコンテンツへスキップ
ブログ一覧に戻る
web

SSLとTLSの基礎知識: Webセキュリティの要

2023年11月15日
2分で読めます
SSLとTLSの基礎知識: Webセキュリティの要

この記事の結論

SSLとTLSプロトコルの基礎から実装まで、Webセキュリティを支える暗号化技術について解説します。

SSL と TLS の基礎知識

インターネット上でのセキュアな通信を実現する SSL(Secure Sockets Layer)とその後継である TLS(Transport Layer Security)について解説します。

SSL と TLS とは

SSL と TLS は、インターネット上でデータを暗号化して送受信するためのプロトコルです。これにより、第三者による通信の盗聴や改ざんを防ぐことができます。

  • SSL: Netscape 社が開発し、現在は非推奨
  • TLS: SSL の後継として標準化されたプロトコル

// 簡単なHTTPS接続のコード例
const https = require("https");
const options = {
  hostname: "example.com",
  port: 443,
  path: "/",
  method: "GET",
};

const req = https.request(options, (res) => {
  console.log("statusCode:", res.statusCode);
});

req.end();

重要なポイント

SSL と TLS を理解する上で重要なポイントをいくつか紹介します。

証明書の役割

TLS/SSL 証明書は、Web サイトの身元を証明し、暗号化のための公開鍵を提供します。

重要: 証明書は必ず信頼できる認証局(CA)から取得してください。自己署名証明書はテスト環境のみで使用すべきです。

暗号化の仕組み

TLS では、「ハンドシェイク」と呼ばれる過程で安全な接続を確立します:

  1. クライアントがサーバーに接続を要求
  2. サーバーが証明書を送信
  3. クライアントが証明書を検証
  4. 共通の暗号化方式を決定
  5. セッション鍵を確立

警告メッセージ

警告: TLS 1.0 と 1.1 は脆弱性が発見されているため、現在は TLS 1.2 または 1.3 の使用が推奨されています。

実装方法

Web サーバーへの実装例をいくつか紹介します。

Nginx での設定例

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;
    ssl_protocols TLSv1.2 TLSv1.3;
}

Node.js での実装例

const https = require("https");
const fs = require("fs");

const options = {
  key: fs.readFileSync("private-key.pem"),
  cert: fs.readFileSync("certificate.pem"),
};

https
  .createServer(options, (req, res) => {
    res.writeHead(200);
    res.end("Hello Secure World\n");
  })
  .listen(443);

SSL/TLSの要点(Webセキュリティの基盤)

SSL と TLS は、現代の Web セキュリティにおいて不可欠なプロトコルです。適切に実装することで、ユーザーデータを保護し、Web サイトの信頼性を高めることができます。


ご相談・お問い合わせはこちら

次の一手

状況に合わせて、選んでください。