個人開発でWebサービスを公開するとき、避けて通れないのがSSL証明書の設定です。ChromeがHTTPサイトに「保護されていない通信」と表示するようになってから久しいですが、2026年現在ではSEOへの影響も無視できません。Googleは2024年のアルゴリズム更新でHTTPSをさらに重要なランキングシグナルに格上げしています。
幸い、今は無料でSSL証明書を取得できるサービスが複数あります。ただ、「どれを使えばいいのか」「設定でハマるポイントはどこか」は意外と情報が散らばっていて、初めての人にはわかりにくいのが現状。
この記事では、個人開発者がよく使う3つの無料SSL証明書サービスを実際に使ってみた経験をもとに、取得方法からトラブルシューティングまで一通りまとめます。
そもそもSSL証明書とは?30秒でおさらい
SSL(正確にはTLS)証明書は、Webサイトとブラウザ間の通信を暗号化するために必要な電子証明書です。URLが https:// で始まるサイトはSSL証明書を持っています。
無料と有料の違いを端的に言うと、暗号化の強度に差はありません。違いは主に以下の点です:
- DV(ドメイン認証):ドメインの所有者であることを確認。無料証明書はほぼこれ
- OV(組織認証):企業の実在確認が入る。年間数万円〜
- EV(拡張認証):最も厳格な審査。年間10万円超
個人開発やスタートアップ段階では、DV証明書(=無料)で十分です。銀行やECサイトでもない限り、OV/EVは不要と言い切って問題ありません。
無料SSL証明書の3大サービス比較
Let's Encrypt — 業界標準の信頼性
概要:2015年に始まった非営利プロジェクトで、2026年現在、世界のSSL証明書の約60%をカバーしています。インターネット全体のHTTPS化に最も貢献したサービスと言っても過言ではありません。
特徴:
- 有効期間90日(自動更新が前提の設計)
- ワイルドカード証明書(*.example.com)にも対応
- ACMEプロトコルによる完全自動化が可能
- レートリミット:1ドメインにつき週50枚まで(通常の用途なら問題なし)
取得手順(Ubuntu + Nginx の場合):
1. Certbotをインストール
sudo apt update
sudo apt install certbot python3-certbot-nginx
2. 証明書を取得してNginxに自動設定
sudo certbot --nginx -d example.com -d www.example.com
3. 自動更新の確認
sudo certbot renew --dry-run
これだけです。CertbotがNginxの設定ファイルを自動で書き換えてくれるので、手動でSSL設定を書く必要はほとんどありません。自動更新のcronも certbot パッケージが自動で登録してくれます。
ハマりポイント:
- ポート80がファイアウォールで閉じていると認証に失敗する。HTTP-01チャレンジはポート80必須
- ワイルドカード証明書を取得するにはDNS-01チャレンジが必要。DNSプロバイダのAPI対応が前提
- 更新時にNginxのリロードが必要。
--deploy-hook "systemctl reload nginx"を付けておくと安心
Cloudflare — CDNと一緒に「勝手に」SSL化
概要:CloudflareのDNSを使えば、無料プランでもSSL証明書が自動的に発行・適用されます。自分でCertbotを動かす必要がなく、最も手軽な方法です。
特徴:
- Cloudflare経由のプロキシをONにするだけでSSL化
- 証明書の更新は完全自動(気にする必要なし)
- CDN・DDoS防御・WAFも無料プランに含まれる
- Universal SSL(共有証明書)は15分程度で有効化
設定手順:
1. Cloudflareにアカウント登録し、ドメインを追加
2. ドメインレジストラのネームサーバーをCloudflare指定のものに変更
3. DNSレコードでAレコードを追加し、プロキシ(オレンジ色の雲アイコン)をON
4. SSL/TLS設定で暗号化モードを選択
注意すべき暗号化モード:
- Flexible:Cloudflare↔ブラウザ間のみ暗号化。オリジンサーバーへはHTTP。本番運用では非推奨
- Full:オリジンサーバーにも証明書が必要だが、自己署名証明書でもOK
- Full (Strict):オリジンに正規の証明書が必要。Cloudflare Origin CAを使えば無料で対応可能
個人開発であっても、必ずFull以上を選んでください。Flexibleモードだと、Cloudflare↔サーバー間が平文通信になり、カフェのWi-Fiなどで中間者攻撃のリスクがあります。これは実際にセキュリティインシデントの原因になった事例が報告されています。
Cloudflare Workersでサービスを構築する場合は、Workers自体がCloudflareのエッジで動くため、SSL設定はほぼ不要。カスタムドメインを設定するだけで自動的にSSL化されます。
ZeroSSL — 管理画面が使いやすい第三の選択肢
概要:apilayer社が提供するSSL証明書サービス。Let's Encryptと同じACMEプロトコルに対応しつつ、Webベースの管理画面も用意されています。
特徴:
- 無料プランで90日証明書を3枚まで発行可能
- Webダッシュボードから証明書のステータスを確認できる
- REST APIによる発行・更新が可能
- 有料プランで1年証明書も取得可能($10/月〜)
取得手順(ACME経由):
ZeroSSLはCertbotからも利用できますが、acme.shを使うのが公式推奨です。
# acme.shのインストール
curl https://get.acme.sh | sh
# ZeroSSLの登録(初回のみ)
acme.sh --register-account -m your@email.com --server zerossl
# 証明書の取得
acme.sh --issue -d example.com -w /var/www/html
# Nginxへのインストール
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/key.pem \
--fullchain-file /etc/nginx/ssl/cert.pem \
--reloadcmd "systemctl reload nginx"
ハマりポイント:
- 無料プランは証明書3枚の上限がある。複数ドメインを持つ個人開発者には足りないことも
- EAB(External Account Binding)の設定が必要で、Let's Encryptより初期設定が一手間多い
- APIレートリミットがLet's Encryptより厳しい場合がある