Webアプリケーションの開発・運用において、コンテナ技術は非常に便利です。特に、Docker や Kubernetes を利用した環境では、SSL証明書を適切に設定することで、セキュアな通信を実現できます。本記事では、初心者向けにコンテナ環境でのSSL証明書の設定方法を分かりやすく解説します。
SSL証明書とは?
SSL(Secure Sockets Layer)証明書は、インターネット上の通信を暗号化する電子証明書です。現在では、SSLの後継規格であるTLS(Transport Layer Security) が主流ですが、一般的には「SSL証明書」と呼ばれています。
SSL証明書を導入することで、WebサイトやAPIエンドポイントへのアクセスが「https://」となり、データの暗号化・改ざん防止・サーバー認証を実現します。
Docker 環境での SSL 設定方法
1. Nginx + Docker で SSL 証明書を設定する
必要なファイルの準備
- SSL証明書ファイル (
cert.pem) - 秘密鍵ファイル (
privkey.pem) - Nginx 設定ファイル (
nginx.conf) - Dockerfile
- docker-compose.yml (任意)
例: Nginx 設定ファイル (nginx.conf)
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
location / {
proxy_pass http://app:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Dockerfile の設定
FROM nginx:latest
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY cert.pem /etc/nginx/ssl/cert.pem
COPY privkey.pem /etc/nginx/ssl/privkey.pemコンテナの起動
docker build -t my-nginx .
docker run -d -p 443:443 my-nginx確認
ブラウザや curl コマンドを使って、https://example.com にアクセスし、SSL証明書が正しく設定されているか確認します。
Kubernetes 環境での SSL 設定方法
1. Ingress Controller を利用した SSL 設定
Kubernetes では、Ingress を利用することで、複数のサービスに対してSSL証明書を簡単に設定できます。
必要なツール
- Cert-Manager (Let’s Encrypt などの証明書自動発行・更新ツール)
- NGINX Ingress Controller
証明書の設定手順
- Cert-Manager のインストール
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.11.0/cert-manager.yaml- Issuer の設定 (Let’s Encrypt の例)
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: your-email@example.com
privateKeySecretRef:
name: letsencrypt-prod-secret
solvers:
- http01:
ingress:
class: nginx- Ingress の設定例
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- example.com
secretName: example-com-tls
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app
port:
number: 80- 証明書の確認
kubectl describe certificate example-com-tlsIngressを介してアクセスすることで、自動的にSSL証明書が適用され、HTTPS通信が可能になります。
SSL証明書設定時の注意点
- 秘密鍵の権限管理
- DockerコンテナやKubernetesのSecretに保存する際、アクセス権限を最小限に設定します。
- 証明書の有効期限に注意
- Cert-Managerを利用すると、自動更新が可能です。
- 手動で設定する場合は、更新タイミングを忘れないようにしましょう。
- HTTPSリダイレクト設定
- HTTPアクセスをHTTPSに強制リダイレクトすることで、より安全な通信を実現します。
まとめ
DockerやKubernetes環境でも、SSL証明書を適切に設定することで、安全な通信を実現できます。
- Docker 環境では、Nginxコンテナを活用することで手軽にSSL対応が可能です。
- Kubernetes 環境では、Ingress Controller と Cert-Manager を組み合わせることで、証明書の自動発行・更新も可能になります。
GetSSL.PRO では、コンテナ環境でも利用可能な高品質なSSL証明書を提供しています。セキュアなWebサービスの構築に、ぜひご活用ください!


















