メインコンテンツにスキップ
電子フロンティア財団のプロジェクト

Certbot の手順

ご利用の HTTP ウェブサイトはどのような環境で稼働していますか?

私の HTTP ウェブサイトは以下で稼働しています オン

Linux (pip) 上の HAProxy

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

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

A laptop
に対する知識
コマンドライン
Close button

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

コマンドラインは、テキストベースのコマンドを入力してコンピュータと対話し、テキストベースの応答を受け取る方法です...

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

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

Web browser showing an HTTP site
...と
HTTP ウェブサイト
Close button

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

HTTP(Hypertext Transfer Protocol)は、Web ブラウザが Web サーバーから Web ページやその他のオンラインリソースのコンテンツをリクエストするための従来の、しかし安全ではない方法です...

HTTP ウェブサイト
HTTP

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


それは
すでにオンラインになっている
Close button

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

Certbot は通常、既存の HTTP サイトを HTTPS で動作するように切り替えるために使用されます(その後、必要に応じてサイトの HTTPS 証明書の更新を続けます)...

すでにオンラインになっている
すでにオンラインになっているウェブサイト

Certbot は通常、既存の HTTP サイトを HTTPS で動作するように切り替えるために使用されます(その後、必要に応じてサイトの HTTPS 証明書の更新を続けます)。 Certbot のドキュメントの中には、ポート 80 で HTTP を使用してすでにアクセスできる動作中の Web サイトがあることを前提としているか、推奨しているものがあります。つまり、たとえば、Web ブラウザを使用して http:// を使用してドメインにアクセスすると、Web サーバーが応答し、何らかのコンテンツが表示されます(サイトの最終バージョンではなく、デフォルトのウェルカムページであっても)。 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 への接続がファイアウォール(インターネットサービスプロバイダまたは Web ホスティングプロバイダが実行しているファイアウォールを含む)によってブロックされていないことを確認する必要があります。不明な場合は、ISP またはホスティングプロバイダにお問い合わせください。(DNS 検証では、Let's Encrypt がサーバーへのインバウンド接続を確立する必要がないため、特にこの方法では、既存の HTTP ウェブサイトやポート 80 で接続を受信する機能は必要ありません。)

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

ポート 80
ポート 80

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

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

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

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

サーバー
サーバー

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


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

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

SSH(「セキュアシェル」の略)は、リモートサーバーに接続してアクセスするための技術です…

ssh
SSH

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


経由でアクセスできます。
sudo
閉じるボタン

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

sudoは、Unix系オペレーティングシステムで特定のコマンドをrootとして実行するための最も一般的なコマンドです…

sudo
sudo

sudoは、Unix系オペレーティングシステムで特定のコマンドをroot(システム管理者)として実行するための最も一般的なコマンドです。root以外のユーザーとしてサーバーにログインしている場合は、Certbotコマンドの前にsudoを付ける必要があるでしょう(たとえば、certbotではなくsudo 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(つまり、*.部分のないもの)も含める必要があります。

さらに、アスタリスクは、複数のラベルではなく、単一のラベルのみに置き換えることができます。たとえば、名前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(つまり、*.部分のないもの)も含める必要があります。

さらに、アスタリスクは、複数のラベルではなく、単一のラベルのみに置き換えることができます。たとえば、名前hello.goodbye.example.comは、名前*.example.comのみを含む証明書ではカバーされません。ただし、*.goodbye.example.comではカバーされます。ワイルドカード名に複数のアスタリスクを含めることはできないことに注意してください。たとえば、*.*.example.comは無効です。

が必要な場合はオプションです:
DNS認証情報
閉じるボタン

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

DNS認証情報とは、DNSプロバイダーが使用できるパスワードまたはその他の種類のシークレット(APIキーなど)です…

DNS認証情報
DNS認証情報

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

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

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

  1. サーバーに SSH 接続します

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

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

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

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

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

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

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

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

    sudo dnf install python3 augeas-libs

    古いディストリビューションでは、dnf の代わりに yum を使用し、RHEL ベースのディストリビューションでは、python3 の代わりに python3X(例:python36)を使用することに注意してください。

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

  3. certbot-auto と Certbot OS パッケージを削除します

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

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

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

    Web サイトを一時的に停止してもよろしいですか?

    はい、Web サーバーは現在このマシンで実行されていません。

    Web サーバーを停止してから、このコマンドを実行して証明書を取得します。Certbot は、マシン上に一時的に Web サーバーを起動します。

    sudo certbot certonly --standalone

    いいえ、Web サーバーを実行し続ける必要があります。

    ポート 80 を既に使用している Web サーバーがあり、Certbot の実行中に停止したくない場合は、このコマンドを実行し、ターミナルの指示に従ってください。

    sudo certbot certonly --webroot
  8. 証明書をインストールします

    新しい証明書を Web サーバーの構成ファイルにインストールする必要があります。

  9. 自動更新を設定します

    デフォルトの 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
  10. Certbot が機能したことを確認します

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

  11. [毎月] certbot をアップグレードします

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

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

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

  12. HAProxy 固有の情報が必要ですか?

    HAProxy での証明書のインストールは複雑です。これらのガイドで詳細な情報を見つけることができます

    または、Greenhost の実験的なサードパーティ HAProxy プラグインを使用することに興味があるかもしれません。

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

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

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

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

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

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

  2. サーバーに SSH 接続します

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

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

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

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

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

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

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

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

    sudo dnf install python3 augeas-libs

    古いディストリビューションでは、dnf の代わりに yum を使用し、RHEL ベースのディストリビューションでは、python3 の代わりに python3X(例:python36)を使用することに注意してください。

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

  4. certbot-auto と Certbot OS パッケージを削除します

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

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

  10. 証明書をインストールします

    新しい証明書を Web サーバーの構成ファイルにインストールする必要があります。

  11. 自動更新を設定します

    デフォルトの 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
  12. Certbot が機能したことを確認します

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

  13. [毎月] certbot をアップグレードします

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

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

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

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

  14. HAProxy 固有の情報が必要ですか?

    HAProxy での証明書のインストールは複雑です。これらのガイドで詳細な情報を見つけることができます

    または、Greenhost の実験的なサードパーティ HAProxy プラグインを使用することに興味があるかもしれません。