メインコンテンツへスキップ
エレクトロニック・フロンティア財団のプロジェクト

Certbot の手順

あなたの HTTP ウェブサイトは何で実行されていますか?

私の HTTP ウェブサイトは実行されています

Linux (pip) のその他

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

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

SSH(「セキュアシェル」の略)は、リモートサーバーに接続し、アクセスするためのテクノロジーです...

ssh
SSH

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


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

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

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

sudo
sudo

sudoは、Unix系オペレーティングシステムで、特定のコマンドをroot(システム管理者)として実行するための最も一般的なコマンドです。root以外のユーザーとしてサーバーにログインしている場合、特にApacheやNginxなどのウェブサーバーとのCertbotの統合を使用している場合は、Certbotコマンドの前にsudoを付ける必要があります。これにより、Certbotコマンドがrootとして実行されます(たとえば、単にcertbotの代わりにsudo 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にDNS検証を自動的に実行させるためにコピーを提供してもかまいません。Certbotはローカルマシン上で実行されるためです。

DNS認証情報とは、DNSプロバイダーがDNSレコードの内容を変更するために使用できるパスワードまたはその他の種類の秘密(APIキーなど)です...

DNS認証情報
DNS認証情報

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

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

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

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

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

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

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

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

    DNSプロバイダーがサポートされている場合は、以下の残りの手順に進んでください。

  2. サーバーにSSH接続する

    sudo権限を持つユーザーとして、HTTPウェブサイトを稼働させているサーバーにSSHでログインします。

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

    システム依存関係には、venvモジュールを含むPython 3.6+と、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 snapをインストールする前にそれらを削除する必要があります。これにより、コマンドcertbotを実行したときに、OSパッケージマネージャーからのインストールではなく、snapが使用されるようにします。正確なコマンドは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
  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. 証明書をインストールします

    新しい証明書をウェブサーバーの設定ファイルにインストールする必要があります。

  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を実行して、すべてのインストール手順を繰り返してください。