本文へスキップ
Electronic Frontier Foundation のプロジェクト

Certbot の使用方法

HTTP ウェブサイトは何で稼働していますか?

私の HTTP ウェブサイトは稼働しています

Linux (pip) 上の Nginx

デフォルト
ワイルドカード

Certbot を使用するには、以下が必要です。

A laptop
使い慣れた
コマンドライン
Close button

コマンドラインは、テキストベースのコマンドを入力してテキストベースの返信を受け取ることでコンピュータと対話する方法です。Certbot は、通常は Unix 系サーバー上でコマンドラインインターフェースから実行されます。Certbot をほとんどの目的で使用するには、ウェブサーバーのコマンドラインでインストールして実行できる必要があります。これは通常、SSH を介してアクセスされます。

コマンドラインは、テキストベースのコマンドを入力して…

コマンドライン
コマンドライン

コマンドラインは、テキストベースのコマンドを入力してテキストベースの返信を受け取ることでコンピュータと対話する方法です。Certbot は、通常は Unix 系サーバー上でコマンドラインインターフェースから実行されます。Certbot をほとんどの目的で使用するには、ウェブサーバーのコマンドラインでインストールして実行できる必要があります。これは通常、SSH を介してアクセスされます。

Web browser showing an HTTP site
そして
HTTP ウェブサイト
Close button

HTTP(Hypertext Transfer Protocol)は、ウェブブラウザがウェブサーバーからウェブページやその他のオンラインリソースのコンテンツを要求するための従来の方法ですが、安全ではありません。これはインターネット標準であり、通常は TCP ポート 80 で使用されます。世界中のほぼすべてのウェブサイトが HTTP をサポートしていますが、Certbot またはその他の HTTPS 設定方法で設定されたウェブサイトでは、サイトの HTTP バージョンから HTTPS バージョンにユーザーを自動的にリダイレクトする場合があります。

HTTP(Hypertext Transfer Protocol)は、ウェブブラウザが…

HTTP ウェブサイト
HTTP

HTTP(Hypertext Transfer Protocol)は、ウェブブラウザがウェブサーバーからウェブページやその他のオンラインリソースのコンテンツを要求するための従来の方法ですが、安全ではありません。これはインターネット標準であり、通常は TCP ポート 80 で使用されます。世界中のほぼすべてのウェブサイトが HTTP をサポートしていますが、Certbot またはその他の HTTPS 設定方法で設定されたウェブサイトでは、サイトの HTTP バージョンから HTTPS バージョンにユーザーを自動的にリダイレクトする場合があります。


既に
オンラインの
Close button

Certbot は通常、既存の HTTP サイトを HTTPS で動作するように切り替えるため(そしてその後、必要に応じてサイトの HTTPS 証明書を更新し続けるため)に使用されます。一部の Certbot のドキュメントでは、ポート 80 で HTTP を使用して既にアクセスできる動作中のウェブサイトがあることを前提としていたり、推奨していたりします。つまり、たとえば、ウェブブラウザを使用して http:// でドメインにアクセスすると、ウェブサーバーが応答し、何らかのコンテンツが表示されるということです(最終版のサイトではなく、デフォルトのウェルカムページだけのこともあります)。Certbot を使用するいくつかの方法ではこれが前提条件となっているため、既に HTTP で設定されたサイトがある場合は、よりスムーズなエクスペリエンスが得られます。(ポリシーの都合上、サイトにこのようにアクセスできない場合は、Certbot で証明書を取得するために DNS 検証を使用する必要があるでしょう。)

Certbot は通常、既存の HTTP サイトを HTTPS で動作するように切り替えるため…

オンラインの
既にオンラインのウェブサイト

Certbot は通常、既存の HTTP サイトを HTTPS で動作するように切り替えるため(そしてその後、必要に応じてサイトの HTTPS 証明書を更新し続けるため)に使用されます。一部の Certbot のドキュメントでは、ポート 80 で HTTP を使用して既にアクセスできる動作中のウェブサイトがあることを前提としていたり、推奨していたりします。つまり、たとえば、ウェブブラウザを使用して http:// でドメインにアクセスすると、ウェブサーバーが応答し、何らかのコンテンツが表示されるということです(最終版のサイトではなく、デフォルトのウェルカムページだけのこともあります)。Certbot を使用するいくつかの方法ではこれが前提条件となっているため、既に HTTP で設定されたサイトがある場合は、よりスムーズなエクスペリエンスが得られます。(ポリシーの都合上、サイトにこのようにアクセスできない場合は、Certbot で証明書を取得するために DNS 検証を使用する必要があるでしょう。)


ポート 80 が
開いている
Close button

異なるインターネットサービスは、異なる TCP ポート番号を使用して区別されます。暗号化されていない HTTP は通常 TCP ポート 80 を使用し、暗号化された HTTPS は通常 TCP ポート 443 を使用します。certbot --webroot、certbot --apache、または certbot --nginx を使用するには、Certbot を使用するサーバーで既にオンラインになっている既存の HTTP ウェブサイトが必要です。このサイトは、ポート 80 でインターネットの他の部分からアクセスできる必要があります。certbot --standalone を使用する場合、既存のサイトは必要ありませんが、ファイアウォール(インターネットサービスプロバイダーまたはウェブホスティングプロバイダーが実行しているファイアウォールを含む)によってサーバー上のポート 80 への接続がブロックされていないことを確認する必要があります。不明な場合は、ISP またはホスティングプロバイダーに確認してください。(DNS 検証を使用する場合、Let's Encrypt がサーバーへの着信接続を行う必要がないため、この方法では特に、既存の HTTP ウェブサイトやポート 80 で接続を受け取る機能は必要ありません。)

異なるインターネットサービスは、異なる TCP ポート番号を使用して区別されます。暗号化されていない HTTP…

開いている
ポート 80

異なるインターネットサービスは、異なる TCP ポート番号を使用して区別されます。暗号化されていない HTTP は通常 TCP ポート 80 を使用し、暗号化された HTTPS は通常 TCP ポート 443 を使用します。certbot --webroot、certbot --apache、または certbot --nginx を使用するには、Certbot を使用するサーバーで既にオンラインになっている既存の HTTP ウェブサイトが必要です。このサイトは、ポート 80 でインターネットの他の部分からアクセスできる必要があります。certbot --standalone を使用する場合、既存のサイトは必要ありませんが、ファイアウォール(インターネットサービスプロバイダーまたはウェブホスティングプロバイダーが実行しているファイアウォールを含む)によってサーバー上のポート 80 への接続がブロックされていないことを確認する必要があります。不明な場合は、ISP またはホスティングプロバイダーに確認してください。(DNS 検証を使用する場合、Let's Encrypt がサーバーへの着信接続を行う必要がないため、この方法では特に、既存の HTTP ウェブサイトやポート 80 で接続を受け取る機能は必要ありません。)

A server
...これは
サーバー
閉じるボタン

サーバーは、ウェブサイトやメールサービスなどのサービスを提供するインターネット上のコンピュータです。ほとんどのウェブサイト所有者は、データセンターに配置され、インターネット経由で管理されるサーバーの使用に対してホスティングプロバイダーに料金を支払います。これは、物理的な専用サーバー、仮想プライベートサーバー(VPS)、または共有サーバーの場合があります。他のサーバーは、DNSサーバーなど、インターネットインフラストラクチャの他の部分を担っています。

サーバーは、ウェブサイトやメールサービスなどのサービスを提供するインターネット上のコンピュータです…

サーバー
サーバー

サーバーは、ウェブサイトやメールサービスなどのサービスを提供するインターネット上のコンピュータです。ほとんどのウェブサイト所有者は、データセンターに配置され、インターネット経由で管理されるサーバーの使用に対してホスティングプロバイダーに料金を支払います。これは、物理的な専用サーバー、仮想プライベートサーバー(VPS)、または共有サーバーの場合があります。他のサーバーは、DNSサーバーなど、インターネットインフラストラクチャの他の部分を担っています。


にホストされており、
ssh
閉じるボタン
SSH

SSH(「secure shell」の略)は、リモートサーバーに接続し、そのサーバーのコマンドラインにアクセスする技術で、多くの場合、サーバーの管理に使用されます。サーバーの管理者は、他のユーザーにSSHアクセスを許可したり、SSHアクセスを直接使用してサーバーをリモートで管理することもできます。SSHは通常、Unix系オペレーティングシステムを実行しているサーバーへのアクセスに使用されますが、SSHを使用するために、自分のコンピュータがUnixを実行している必要はありません。通常、LinuxまたはmacOSを実行しているコンピュータの場合は、端末で`ssh username@example.com`などのコマンドを入力して、コンピュータのコマンドラインからSSHを使用します。ログイン後、サーバーのコマンドラインにアクセスできます。Windowsコンピュータを使用している場合は、PuTTYなどの専用のSSHアプリケーションを使用することもできます。ほとんどのCertbotユーザーは、SSH経由でリモートサーバーのコマンドプロンプトからCertbotを実行しています。

SSH(「secure shell」の略)は、リモートサーバーに接続し、…

ssh
SSH

SSH(「secure shell」の略)は、リモートサーバーに接続し、そのサーバーのコマンドラインにアクセスする技術で、多くの場合、サーバーの管理に使用されます。サーバーの管理者は、他のユーザーにSSHアクセスを許可したり、SSHアクセスを直接使用してサーバーをリモートで管理することもできます。SSHは通常、Unix系オペレーティングシステムを実行しているサーバーへのアクセスに使用されますが、SSHを使用するために、自分のコンピュータがUnixを実行している必要はありません。通常、LinuxまたはmacOSを実行しているコンピュータの場合は、端末で`ssh username@example.com`などのコマンドを入力して、コンピュータのコマンドラインからSSHを使用します。ログイン後、サーバーのコマンドラインにアクセスできます。Windowsコンピュータを使用している場合は、PuTTYなどの専用のSSHアプリケーションを使用することもできます。ほとんどのCertbotユーザーは、SSH経由でリモートサーバーのコマンドプロンプトからCertbotを実行しています。


を介してアクセスでき、
sudo
閉じるボタン

sudoは、Unix系オペレーティングシステムで、特定のコマンドをroot(システム管理者)として実行するための最も一般的なコマンドです。root以外のユーザーとしてサーバーにログインしている場合は、Certbotコマンドの前にsudoを付ける必要がある可能性があります(例:`sudo certbot`ではなく`certbot`)。特に、ApacheやNginxなどのWebサーバーとCertbotを統合して使用する場合です。(`certbot-auto`スクリプトは、必要に応じて、指定されていない場合でも自動的にsudoを実行します。)

sudoは、Unix系オペレーティングシステムで、特定のコマンドをroot(システム管理者)として実行するための…

sudo
sudo

sudoは、Unix系オペレーティングシステムで、特定のコマンドをroot(システム管理者)として実行するための最も一般的なコマンドです。root以外のユーザーとしてサーバーにログインしている場合は、Certbotコマンドの前にsudoを付ける必要がある可能性があります(例:`sudo certbot`ではなく`certbot`)。特に、ApacheやNginxなどのWebサーバーとCertbotを統合して使用する場合です。(`certbot-auto`スクリプトは、必要に応じて、指定されていない場合でも自動的にsudoを実行します。)


の機能を使用できます。
ワイルドカード証明書
閉じるボタン

ワイルドカード証明書は、*.で始まる1つ以上の名前を含む証明書です。ブラウザは、アスタリスク(*)の代わりに任意のラベルを受け入れます。たとえば、*.example.comの証明書は、www.example.commail.example.comhello.example.com、およびgoodbye.example.comで有効です。

ただし、のみ*.example.comという名前を含むワイルドカード証明書は、example.comでは無効です。置換ラベルは空にすることができません。証明書をexample.comで有効にするには、example.com(つまり、*.部分がないもの)も証明書に含める必要があります。

さらに、アスタリスクは1つのラベルでのみ置換でき、複数のラベルでは置換できません。たとえば、hello.goodbye.example.comという名前は、*.example.comという名前のみを含む証明書では網羅されません。ただし、*.goodbye.example.comでは網羅されます。ワイルドカード名は複数のアスタリスクを含むことはできません。たとえば、*.*.example.comは無効です。

ワイルドカード証明書は、*.で始まる1つ以上の名前を含む証明書です。ブラウザは…

ワイルドカード証明書
ワイルドカード証明書

ワイルドカード証明書は、*.で始まる1つ以上の名前を含む証明書です。ブラウザは、アスタリスク(*)の代わりに任意のラベルを受け入れます。たとえば、*.example.comの証明書は、www.example.commail.example.comhello.example.com、およびgoodbye.example.comで有効です。

ただし、のみ*.example.comという名前を含むワイルドカード証明書は、example.comでは無効です。置換ラベルは空にすることができません。証明書をexample.comで有効にするには、example.com(つまり、*.部分がないもの)も証明書に含める必要があります。

さらに、アスタリスクは1つのラベルでのみ置換でき、複数のラベルでは置換できません。たとえば、hello.goodbye.example.comという名前は、*.example.comという名前のみを含む証明書では網羅されません。ただし、*.goodbye.example.comでは網羅されます。ワイルドカード名は複数のアスタリスクを含むことはできません。たとえば、*.*.example.comは無効です。

を希望する場合:
DNS認証情報
閉じるボタン

DNS認証情報は、DNSレコードの内容を変更するためにDNSプロバイダーが使用できるようにするパスワードまたはその他の秘密情報(APIキーなど)です。通常、ドメインレジストラ(または、DNSプロバイダーがレジストラと同じではない場合は、別のDNSプロバイダー)によって発行されます。DNS認証情報は、サイト全体を乗っ取るために使用できるため、機密性の高い秘密情報です。これらの認証情報を公開したり、権限のないユーザーと共有したりしないでください。ローカルマシンで実行されるため、Certbotが自動的にDNS検証を実行できるように、それらのコピーをCertbotに提供しても問題ありません。

DNS認証情報は、DNSレコードの内容を変更するためにDNSプロバイダーが使用できるようにする…

DNS認証情報
DNS認証情報

DNS認証情報は、DNSレコードの内容を変更するためにDNSプロバイダーが使用できるようにするパスワードまたはその他の秘密情報(APIキーなど)です。通常、ドメインレジストラ(または、DNSプロバイダーがレジストラと同じではない場合は、別のDNSプロバイダー)によって発行されます。DNS認証情報は、サイト全体を乗っ取るために使用できるため、機密性の高い秘密情報です。これらの認証情報を公開したり、権限のないユーザーと共有したりしないでください。ローカルマシンで実行されるため、Certbotが自動的にDNS検証を実行できるように、それらのコピーをCertbotに提供しても問題ありません。

これらの要件を満たしていませんか?

心配しないでください!一部のホスティングプロバイダーはHTTPSプロセスを自動化しています。ホスティングプロバイダーの完全なリストをご覧ください、またはシステムの設定方法の詳細をご覧ください

  1. サーバーへのSSH接続

    sudo権限を持つユーザーとして、HTTPウェブサイトを実行しているサーバーにSSHで接続します。

  2. システム依存関係のインストール

    システム依存関係には、venvモジュールを含むPython 3.6+と、Apacheプラグイン用のAugeasが含まれる場合があります。

    暗号化のインストールに問題がある場合は、追加の依存関係をインストールする必要がある場合があります。詳細については、暗号化プロジェクトのサイトをご覧ください。

    システム依存関係をインストールするためのコマンドは、次のようになります。マシン上のコマンドラインで実行します。

    APTベースのディストリビューション(例:Debian、Ubuntu…)の場合

    1. sudo apt update
    2. sudo apt install python3 python3-venv libaugeas0

    RPMベースのディストリビューション(例:Fedora、CentOS…)の場合

    sudo dnf install python3 augeas-libs

    古いディストリビューションではyumではなくdnfが使用され、RHELベースのディストリビューションではpython3ではなくpython3Xが使用されます(例:python36<)。

    これらのパッケージの名前は、他のディストリビューションではわずかに異なる場合があります。「augeas on」などの検索を行うと、役立つ結果が得られる可能性があります。

  3. certbot-autoおよびCertbot OSパッケージの削除

    aptdnf、またはyumなどのOSパッケージマネージャーを使用してCertbotパッケージをインストールしている場合は、Certbotスナップをインストールする前にそれらを取り除く必要があります。これにより、certbotコマンドを実行した際に、OSパッケージマネージャーからのインストールではなく、スナップが使用されるようになります。これを行うための正確なコマンドはOSによって異なりますが、一般的な例としては、sudo apt-get remove certbotsudo dnf remove certbot、またはsudo yum remove certbotがあります。

  4. Python仮想環境のセットアップ

    仮想環境を設定するには、マシン上でコマンドラインで次の手順を実行します。

    1. sudo python3 -m venv /opt/certbot/
    2. sudo /opt/certbot/bin/pip install --upgrade pip
  5. Certbotのインストール

    Certbotをインストールするには、マシン上でコマンドラインで次のコマンドを実行します。

    sudo /opt/certbot/bin/pip install certbot certbot-nginx
  6. Certbotコマンドの準備

    certbotコマンドを実行できるようにするには、マシン上でコマンドラインで次の手順を実行します。

    sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
  7. Certbotの実行方法の選択

    証明書を取得してインストールするか…

    このコマンドを実行すると、証明書を取得し、Certbotがnginxの設定を自動的に編集して証明書を提供し、HTTPSアクセスを1ステップで有効にします。

    sudo certbot --nginx

    または、証明書のみを取得する

    より慎重にnginxの設定を手動で変更したい場合は、このコマンドを実行します。

    sudo certbot certonly --nginx
  8. 自動更新の設定

    デフォルトのcrontabにcronジョブを追加する次の行を実行することをお勧めします。

    echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
  9. Certbotが機能したことを確認する

    サイトが正しく設定されていることを確認するには、ブラウザーでhttps://yourwebsite.com/にアクセスし、URLバーのロックアイコンを確認します。

  10. [毎月] Certbotのアップグレード

    Certbotを最新の状態に保つために、定期的に更新することが重要です。これを行うには、マシン上でコマンドラインで次のコマンドを実行します。

    sudo /opt/certbot/bin/pip install --upgrade certbot certbot-nginx

    この手順でエラーが発生した場合は、sudo rm -rf /opt/certbotを実行し、すべてのインストール手順を繰り返してください。

  1. DNSプロバイダーがサポートされているか確認する

    当社のドキュメントにあるこのリストを確認して、DNSプロバイダーがCertbotでサポートされているかどうかを確認してください。

    サポートされていませんか?

    DNSプロバイダーがサポートされていない場合は、ここで一時停止します。ドキュメントの手順に従って、手動プラグインを使用してCertbotを実行してください。

    サポートされていますか?

    DNSプロバイダーがサポートされている場合は、以下の手順を続行してください。

  2. サーバーへのSSH接続

    sudo権限を持つユーザーとして、HTTPウェブサイトを実行しているサーバーにSSHで接続します。

  3. システム依存関係のインストール

    システム依存関係には、venvモジュールを含むPython 3.6+と、Apacheプラグイン用のAugeasが含まれる場合があります。

    暗号化のインストールに問題がある場合は、追加の依存関係をインストールする必要がある場合があります。詳細については、暗号化プロジェクトのサイトをご覧ください。

    システム依存関係をインストールするためのコマンドは、次のようになります。マシン上のコマンドラインで実行します。

    APTベースのディストリビューション(例:Debian、Ubuntu…)の場合

    1. sudo apt update
    2. sudo apt install python3 python3-venv libaugeas0

    RPMベースのディストリビューション(例:Fedora、CentOS…)の場合

    sudo dnf install python3 augeas-libs

    古いディストリビューションではyumではなくdnfが使用され、RHELベースのディストリビューションではpython3ではなくpython3Xが使用されます(例:python36<)。

    これらのパッケージの名前は、他のディストリビューションではわずかに異なる場合があります。「augeas on」などの検索を行うと、役立つ結果が得られる可能性があります。

  4. certbot-autoおよびCertbot OSパッケージの削除

    aptdnf、またはyumなどのOSパッケージマネージャーを使用してCertbotパッケージをインストールしている場合は、Certbotスナップをインストールする前にそれらを取り除く必要があります。これにより、certbotコマンドを実行した際に、OSパッケージマネージャーからのインストールではなく、スナップが使用されるようになります。これを行うための正確なコマンドはOSによって異なりますが、一般的な例としては、sudo apt-get remove certbotsudo dnf remove certbot、またはsudo yum remove certbotがあります。

  5. Python仮想環境のセットアップ

    仮想環境を設定するには、マシン上でコマンドラインで次の手順を実行します。

    1. sudo python3 -m venv /opt/certbot/
    2. sudo /opt/certbot/bin/pip install --upgrade pip
  6. Certbotのインストール

    Certbotをインストールするには、マシン上でコマンドラインで次のコマンドを実行します。

    sudo /opt/certbot/bin/pip install certbot certbot-nginx
  7. Certbotコマンドの準備

    certbotコマンドを実行できるようにするには、マシン上でコマンドラインで次の手順を実行します。

    sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
  8. 正しいDNSプラグインのインストール

    次のコマンドを実行し、<PLUGIN>をDNSプロバイダーの名前に置き換えます。

    sudo /opt/certbot/bin/pip install certbot-dns-<PLUGIN>

    たとえば、DNSプロバイダーがCloudflareの場合は、次のコマンドを実行します。

    sudo /opt/certbot/bin/pip install certbot-dns-cloudflare
  9. Certbotの実行方法の選択

    証明書を取得してインストールするか…

    DNSプロバイダーの手順の「例」セクションにあるコマンドのいずれかと、フラグ-i nginxを一緒に実行します。

    または、証明書のみを取得する

    DNSプロバイダーの手順の「例」セクションにあるコマンドのいずれかを実行します。

  10. 自動更新の設定

    デフォルトのcrontabにcronジョブを追加する次の行を実行することをお勧めします。

    echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
  11. Certbotが機能したことを確認する

    サイトが正しく設定されていることを確認するには、ブラウザーでhttps://yourwebsite.com/にアクセスし、URLバーのロックアイコンを確認します。

  12. [毎月] Certbotのアップグレード

    Certbotを最新の状態に保つために、定期的に更新することが重要です。これを行うには、マシン上でコマンドラインで次のコマンドを実行します。

    sudo /opt/certbot/bin/pip install --upgrade certbot certbot-nginx certbot-dns-<PLUGIN>

    上記のように、<PLUGIN>をDNSプロバイダーの名前に置き換えます。

    この手順でエラーが発生した場合は、sudo rm -rf /opt/certbotを実行し、すべてのインストール手順を繰り返してください。