メインコンテンツへスキップ
Electronic Frontier Foundation のプロジェクト

Certbot の手順

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

私の HTTP ウェブサイトは 上で

Linux (pip) 上のその他

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

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

A laptop
に慣れていること
コマンドライン
Close button

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

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

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

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

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ページやその他のオンラインリソースを要求するための従来の方法ですが、安全ではありません...

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 で動作するように切り替え(その後、必要に応じて...

すでにオンラインであること
すでにオンラインのウェブサイト

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 への接続がファイアウォール(インターネットサービスプロバイダーやウェブホスティングプロバイダーによって実行されている可能性があるファイアウォールを含む)によってブロックされていないことを確認する必要があります。不明な場合は、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 は、特定のコマンドを root (システム管理者) として実行するための、Unix ライクなオペレーティングシステムで最も一般的なコマンドです。root 以外のユーザーとしてサーバーにログインしている場合は、特に Apache や Nginx のようなウェブサーバーとの Certbot の統合を使用している場合は、Certbot コマンドの前に sudo を付けて、root として実行する必要があるでしょう (たとえば、単に certbot の代わりに sudo certbot)。(certbot-auto スクリプトは、必要に応じて sudo を自動的に実行します。指定しなかった場合も同様です。)

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

sudo
sudo

Sudo は、特定のコマンドを root (システム管理者) として実行するための、Unix ライクなオペレーティングシステムで最も一般的なコマンドです。root 以外のユーザーとしてサーバーにログインしている場合は、特に Apache や Nginx のようなウェブサーバーとの Certbot の統合を使用している場合は、Certbot コマンドの前に sudo を付けて、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つ以上の名前を含む証明書です。ブラウザは、w...

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

ワイルドカード証明書とは、*. で始まる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. サーバーにSSH接続します

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

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

    システムの依存関係には、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」のような検索をすると、役立つ結果が得られるでしょう。

  3. 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などがあります。

  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サーバーを停止してから、このコマンドを実行して証明書を取得します。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を実行して、すべてのインストール手順を繰り返してください。

  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. 証明書をインストールします

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