〜X.509 / TLS / 暗号化FS / DNSSECまで一気に整理〜
331.1 X.509証明書と公開鍵基盤(PKI)
X.509証明書とは
X.509証明書は、以下を CA(認証局)が署名して保証する仕組み です。
- 公開鍵
- 所有者情報(CN, SANなど)
- 有効期限
- 用途(サーバ認証・クライアント認証 など)
X.509証明書のライフサイクル
- 秘密鍵・公開鍵の生成
- CSR(証明書署名要求)の作成
- CA による署名
- 証明書の発行・配布
- 運用
- 失効(CRL / OCSP)
- 期限切れ・更新
証明書の主要フィールド・拡張
- Subject / Issuer
- Validity(Not Before / Not After)
- Subject Alternative Name(SAN)
- Key Usage
- Extended Key Usage
- Basic Constraints(CA:TRUE / FALSE)
信頼の連鎖(Trust Chain)と Certificate Transparency
- ルートCA → 中間CA → サーバ証明書
- クライアントは ルートCAを信頼 して検証
- CT(Certificate Transparency)
- 不正証明書を検出するための公開ログ
- 近年の証明書発行ではほぼ必須
CAの作成・管理(OpenSSL)
- 自己署名CAの作成
- 厳重な秘密鍵管理(オフライン推奨)
- CRL の発行
- 証明書失効管理
openssl genrsa -out ca.key 4096
openssl req -x509 -new -key ca.key -out ca.crt
証明書関連フォーマット
| フォーマット | 内容 |
|---|---|
| PEM | Base64(人が読める) |
| DER | バイナリ |
| PKCS#12 | 証明書 + 秘密鍵 |
Let’s Encrypt / ACME / certbot
- 無料・自動更新
- ACME プロトコルで証明書発行
- certbot で簡単に取得・更新
本番運用では事実上の標準
CFSSL
- Cloudflare 製の PKI ツール
- JSON ベース設定
- Kubernetes 環境などでよく利用
331.2 TLS・署名・認証(Apache HTTPD)
SSL / TLS の理解
- SSL は廃止、現在は TLS
- TLS 1.2 / 1.3 が主流
- 暗号スイート(cipher suite)を理解
Apache HTTPD + mod_ssl
HTTPS 有効化
- Apache 2.4 以上
- mod_ssl 使用
- SNI(複数ドメイン)
- HSTS(HTTPS 強制)
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/server.crt
SSLCertificateKeyFile /path/server.key
</VirtualHost>
証明書チェーンの提供
- 中間証明書を正しく設定しないと警告が出る
-
SSLCertificateChainFileまたは fullchain.pem
クライアント証明書認証
- 証明書を使ったユーザ認証
- VPN・管理画面などで利用
SSLVerifyClient require
SSLVerifyDepth 2
OCSP
- 証明書の失効確認を高速化
- CRL よりリアルタイム
- Apache で Stapling 設定可能
OpenSSLでのテスト
openssl s_client -connect example.com:443
331.3 暗号化ファイルシステム
ブロック暗号化 vs ファイル暗号化
| 種類 | 例 |
|---|---|
| ブロック | dm-crypt + LUKS |
| ファイル | eCryptfs |
dm-crypt + LUKS
- ディスク全体を暗号化
- 起動時にパスフレーズ入力
- LUKS1 / LUKS2
cryptsetup luksFormat /dev/sdb
cryptsetup open /dev/sdb cryptdata
LUKS2 の特徴
- メタデータ冗長化
- 鍵管理の柔軟性向上
- 将来拡張向け
Clevis / Tang / TPM2
- 自動アンロック
- NBDE(Network Bound Disk Encryption)
- サーバ再起動時の手動入力不要
eCryptfs
- ファイル単位暗号化
- ホームディレクトリ暗号化
- PAM 統合
mount.ecryptfs
331.4 DNS と暗号化(DNSSEC)
DNS の基礎
- ゾーン
- 権威サーバ / 再帰サーバ
- RR(A, AAAA, MX, NS など)
DNSSEC の仕組み
- 改ざん検知
- データの正当性保証
主なレコード:
- DNSKEY
- RRSIG
- DS
- NSEC / NSEC3
KSK / ZSK
- KSK:親ゾーンと信頼を結ぶ
- ZSK:ゾーン署名用
BIND での DNSSEC 運用
- 鍵生成
- ゾーン署名
- ロールオーバー
dnssec-keygen
dnssec-signzone
再帰サーバでの検証(Validation)
- クライアントとして DNSSEC を検証
-
delvでテスト
CAA / DANE / TLSA
- CAA:証明書を発行して良い CA を制限
- DANE / TLSA:DNS に証明書情報を格納
CA と DNS の連携
TSIG
- DNS サーバ間の認証
- ゾーン転送の保護
DNS over TLS / DNS over HTTPS
- 通信経路の暗号化
- プライバシー向上
mDNS
- ローカルネットワークでの名前解決
-
.localドメイン