初心者必見!sslとlet’s encryptで簡単にssl証明書を設定する方法

目次

はじめに

目的

本ドキュメントは、Let’s Encryptを利用して無料のSSL証明書を取得し、サーバーに導入してHTTPS化するまでの手順をわかりやすく解説します。特にApache環境での設定例を中心に説明します。

対象読者

  • 自分でWebサイトを運用している方
  • サーバーへの基本操作(SSHやコマンド実行)ができる方
  • 初めてSSLを設定する方にも配慮して丁寧に説明します

本書で扱う内容

  • Let’s Encryptの概要と仕組みの簡単な説明
  • 証明書の取得手順(手動と自動更新)
  • DNS認証を使ったワイルドカード証明書の取得方法
  • 取得後の証明書ファイルの確認方法
  • ApacheでのHTTPS化設定例

前提条件

  • 独自ドメインを持っていること
  • サーバーに管理者権限(rootまたはsudo)があること
  • DNSの編集ができる環境であること(ワイルドカード発行時に必要)

注意事項

  • 本手順は一般的な例を示します。環境やセキュリティポリシーによっては調整が必要です。
  • 作業前に重要なファイルのバックアップを取ってください。

Let’s Encryptとは

概要

Let’s Encryptは、無料でSSL/TLS証明書を発行する認証局です。費用をかけずにウェブサイトをHTTPS化でき、発行元は証明書内に「Let’s Encrypt」と表示されます。初心者から運用担当者まで広く使われています。

主な特徴

  • 無料で利用できます。
  • 自動化に対応しており、証明書の取得・更新をツール(例: Certbot)で自動化できます。
  • 証明書の有効期限は90日で、短期間に定期更新する仕組みです。
  • ワイルドカード証明書(*.example.com)はDNS認証で発行可能です。

利用のメリット

  • コストがかからず導入障壁が低いです。
  • 自動更新を設定すれば手間が減り、安全性を保てます。
  • 主要ブラウザで信頼されるため、表示上の警告が出にくいです。

注意点

  • EV(組織実在性)証明書は発行しません。企業の厳格な証明が必要な場合は別途有償証明書が必要です。
  • 発行数の制限(レートリミット)があります。短期間に大量のリクエストを送ると弾かれます。
  • 自動化設定がないと、90日ごとの更新忘れで期限切れになる恐れがあります。

上記を理解すると、Let’s Encryptは手軽で安全なHTTPS導入の良い選択肢です。

SSL証明書取得の前準備

概要

SSL証明書を取得する前に、必要なソフトウェアとサーバーの基本設定を整えます。ここでは具体的な名前と簡単な役割、導入の流れを分かりやすく説明します。

必要なもの(概要)

  • ドメイン名:証明書はドメイン単位で発行されます。DNSがサーバーを指していることを確認してください。
  • Webサーバー(例:Apache):Webサイトを配信するソフトです。
  • mod_ssl:ApacheでSSLを扱うためのモジュールです。
  • Certbot:Let’s Encryptから証明書を取得・更新するためのツールです。

インストール例(代表的なコマンド)

  • Ubuntu/Debian系の例:
  • sudo apt update
  • sudo apt install apache2 certbot python3-certbot-apache
  • CentOS/RHEL系の例:
  • sudo dnf install httpd mod_ssl
  • sudo dnf install certbot python3-certbot-apache
    (環境によりパッケージ名が異なる場合があります。)

Apacheの自動起動と起動

インストール後は自動起動を有効にし、サービスを起動します。例:
– sudo systemctl enable –now apache2 (Debian系)
– sudo systemctl enable –now httpd (RHEL系)

確認と注意点

  • サーバーの80番ポートが外部から接続できることを確認してください(ファイアウォール設定)。
  • サーバー上でroot権限またはsudo権限が必要です。
  • ドメインのDNS反映には時間がかかる場合があります。取得前にAレコードが正しいか確認してください。

以上が、SSL証明書を取る前に整えておく基本の準備です。

SSL証明書の取得方法

概要

標準的にはWebroot認証を使い、Certbotでウェブルートとドメインを指定して証明書を取得します。複数ドメインの指定や連絡用メールの入力が必要です。ワイルドカード証明書はDNS認証でTXTレコードを追加して取得します。

Webroot認証での取得手順(代表例)

  1. ウェブルートを確認します(例: /var/www/html)。
  2. Certbotコマンドを実行します。

例:
certbot certonly –webroot -w /var/www/html -d example.com -d www.example.com –email you@example.com –agree-tos

  1. 成功すれば /etc/letsencrypt/live/example.com/ に鍵・証明書が作成されます。

ポイント: 更新時も同じウェブルート指定が必要です。

ワイルドカード証明書(DNS認証)

  1. DNSのTXTレコードを追加します。Certbotの手順に従い表示される値をTXTに登録します。
    例(手動):
    certbot certonly –manual -d “*.example.com” -d example.com –preferred-challenges dns –email you@example.com –agree-tos

  2. TXTが反映されたらEnterして検証を完了します。自動化する場合はDNSプロバイダ用プラグイン(例: –dns-cloudflare)を使いAPIキーで自動更新します。

自動更新と注意点

  • 手動で取得したワイルドカードは自動更新できないことがあります。DNSプラグインでAPIを使えば自動更新できます。
  • 取得後はCertbotのrenewコマンドで更新確認します(certbot renew)。

以上が基本的な取得方法です。必要に応じて使い分けてください。

SSL証明書ファイルの確認

概要

証明書を取得したら、設定で使うファイルパスを控えます。代表的なファイルはprivkey.pem、chain.pem、fullchain.pemです。

重要なファイルと用途

  • privkey.pem:秘密鍵。絶対に公開しないでください。サーバーがTLS通信の秘密情報として使います。
  • chain.pem:中間証明書の束。ブラウザの信頼チェーンを補完します。
  • fullchain.pem:サーバー証明書+中間証明書を連結したファイル。多くのサーバーで推奨されます。

ファイルの場所と確認方法

一般的な場所:/etc/letsencrypt/live/your-domain/
確認コマンド例:
ls -l /etc/letsencrypt/live/example.com/
openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem -noout -dates

パーミッションと所有者

秘密鍵(privkey.pem)は読み取りを制限します。例:chmod 600、所有者root:rootまたはwebサーバー専用ユーザーにします。

サーバー設定での使い方(例)

  • nginx:ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  • Apache:SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

よくある問題と対処

  • ファイルが見つからない:/etc/letsencrypt/live/配下のドメイン名を確認し、シンボリックリンク切れならcertbot renewや再発行を試します。
  • パーミッションエラー:privkey.pemの権限を見直し、必要に応じて所有者を変更します。

以上を控えておけば、HTTPS化の設定時に迷わず指定できます。

サーバーのHTTPS化設定

以下はApacheでHTTPS化する手順です。具体的なファイルやコマンド例も示します。

1. ssl.conf(または仮想ホスト)を編集

例: /etc/httpd/conf.d/ssl.conf または /etc/apache2/sites-available/default-ssl.conf に以下を設定します。

<VirtualHost *:443>
  DocumentRoot "/var/www/html"
  ServerName example.com
  SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
  • DocumentRoot: 公開するファイルの場所です(例: /var/www/html)。
  • ServerName: サイトのドメイン名(例: example.com)。
  • SSLCertificateFile/SSLCertificateKeyFile: Let’s Encryptが発行した証明書と秘密鍵のパスです。

2. 設定の検証

設定に誤りがないか確認します。

sudo apachectl configtest

エラーが出なければ次へ進みます。

3. Apacheを再起動して反映

sudo systemctl restart httpd # CentOS系
sudo systemctl restart apache2 # Debian系

4. ブラウザで確認

ブラウザでサイトを開き、鍵アイコンをクリックして証明書の発行者が「Let’s Encrypt」になっていれば正常です。エラーが出る場合はログ(/var/log/httpd/ または /var/log/apache2/)を確認してください。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次