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 では、「ハンドシェイク」と呼ばれる過程で安全な接続を確立します:
- クライアントがサーバーに接続を要求
- サーバーが証明書を送信
- クライアントが証明書を検証
- 共通の暗号化方式を決定
- セッション鍵を確立
警告メッセージ
警告: 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 サイトの信頼性を高めることができます。
ご相談・お問い合わせはこちら