ZeroSSLで無料SSL証明書を取得してGCPに適用する
Let's Encryptの代替として注目されるZeroSSLを使った無料SSL証明書の取得方法を解説します。GCP Cloud Load BalancingへのSSL証明書適用手順も紹介します。
はじめに
ZeroSSLを使って無料のSSL証明書を発行し、GCP環境にHTTPSを導入する方法を解説します。
ZeroSSLとは
ZeroSSLは、Let's Encryptと同様に無料でSSL証明書を発行できるサービスです。
Let's Encryptとの違い
Scott Helme氏の記事では、以下のように述べられています:
Let's Encryptは、証明書を無料で大規模に提供することで、素晴らしい活動をしている素晴らしい組織です。しかし、問題は、長い間、そのような組織は彼らだけだったということです。他の選択肢を持つことは常に良いアイデアです。
参考記事: ZeroSSL を使ってみた
主な特徴
- 無料プランで90日間有効な証明書を発行可能
- Webブラウザベースで証明書を管理
- DNS(CNAME)、HTTP、メールの3つの認証方法に対応
- 複数ドメインの証明書を一元管理
前提条件
- GCPプロジェクトが作成済み
- ドメインを取得済み
- Cloud Load Balancingが設定済み
SSL証明書の発行手順
1. ZeroSSLにアカウント登録
ZeroSSL公式サイトにアクセスし、アカウントを作成します。
2. 証明書の新規作成
- ダッシュボードから「Create Free SSL Certificate」をクリック
- 証明書を発行したいドメイン名を入力(例:
example.com) - 「Next Step」をクリック
3. 証明書の有効期間を選択
- 無料プランの場合は「90-Day Certificate」を選択
- 「Next Step」をクリック
4. プランの選択
- 「Free」プランを選択
- 「Next Step」をクリック
5. ドメイン認証方法の選択
3つの認証方法から選択できます:
DNS認証(CNAME)- 推奨
最も確実な方法です。ZeroSSLが提供するCNAMEレコードをDNSに追加します。
手順:
- 「DNS (CNAME)」を選択
- 表示されたCNAMEレコードをメモ
- Cloud DNSまたは使用中のDNSサービスに以下を追加:
- 名前:
_acme-challenge.example.com - タイプ: CNAME
- 値: ZeroSSLが提供した値
- 名前:
- DNSの反映を待つ(数分〜最大48時間)
- 「Verify Domain」をクリック
HTTP認証
Webサーバーに検証ファイルを配置する方法です。
メール認証
ドメインの管理者メールアドレスに送信される認証リンクをクリックする方法です。
6. 証明書のダウンロード
認証が完了すると、以下のファイルをダウンロードできます:
certificate.crt- 証明書本体ca_bundle.crt- 中間証明書private.key- 秘密鍵
GCP Cloud Load Balancingへの適用
1. 証明書のアップロード
- GCPコンソールで「ネットワークサービス > Load Balancing」を開く
- 対象のロードバランサーを選択
- 「編集」をクリック
- 「フロントエンド構成」セクションで「証明書を追加」をクリック
- 以下を入力:
- 名前: 任意の証明書名
- 証明書:
certificate.crtとca_bundle.crtを結合した内容 - 秘密鍵:
private.keyの内容
証明書の結合方法:
cat certificate.crt ca_bundle.crt > fullchain.crt
- 「作成」をクリック
2. Cloud DNSの設定
- 「ネットワークサービス > Cloud DNS」を開く
- 対象のDNSゾーンを選択
- Aレコードを追加:
- 名前:
example.com - タイプ: A
- データ: Cloud Load BalancingのIPアドレス
- 名前:
3. 動作確認
ブラウザでhttps://example.comにアクセスし、SSL証明書が正しく適用されていることを確認します。
自動更新の設定
無料証明書は90日間で期限切れになるため、定期的な更新が必要です。
更新方法
- ZeroSSLダッシュボードで期限切れ前の証明書を確認
- 「Renew」ボタンをクリック
- 同じ手順で新しい証明書を発行
- Cloud Load Balancingの証明書を更新
更新の自動化
ZeroSSLはAPIを提供しているため、スクリプトで自動化することも可能です。
# 例:証明書の有効期限を確認するスクリプト
curl -X GET "https://api.zerossl.com/certificates?access_key=YOUR_API_KEY"
注意点とデメリット
証明書の有効期間
- 無料プランは90日間のみ
- 有料プランでは1年間の証明書を発行可能
- 更新を忘れると証明書が失効し、サイトにアクセスできなくなる
管理の手間
- 自動更新機能がないため、手動更新が必要
- 複数ドメインがある場合、個別に管理が必要
推奨される運用
- カレンダーに更新日をリマインダー設定
- 証明書の有効期限を監視するスクリプトを作成
- 本番環境では、証明書の自動更新に対応したサービスの検討も推奨
まとめ
ZeroSSLを使った無料SSL証明書の発行とGCPへの適用方法を解説しました。
メリット:
- 無料でSSL証明書を取得可能
- Webブラウザで簡単に管理
- Let's Encryptの代替選択肢
デメリット:
- 90日ごとの手動更新が必要
- 自動更新機能がない
小規模プロジェクトや検証環境には最適ですが、本番環境で長期運用する場合は、自動更新に対応したサービスやマネージドSSL証明書の利用も検討してください。