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

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以外のユーザーとしてサーバーにログインしている場合は、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.comgoodbye.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.comgoodbye.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検証を実行させるのは問題ありません。

DNSクレデンシャルとは、DNSプロバイダーがDNSレコードの内容を変更するために使用できるようにするパスワードまたはその他の秘密情報…

DNSクレデンシャル
DNSクレデンシャル

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

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

ご心配なく!一部のホスティングプロバイダーは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

    古いディストリビューションではyumdnfの代わりに使用され、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 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の実行方法を選択します

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

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

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

    sudo certbot certonly --standalone

    いいえ、ウェブサーバーを稼働させたままにしておく必要があります。

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

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

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

  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プロバイダーがサポートされていない場合は、ここで一時停止します。 ドキュメントの手順を使用して、manualプラグインで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

    古いディストリビューションではyumdnfの代わりに使用され、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 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を実行し、すべてのインストール手順を繰り返してください。