本文へスキップ
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
ポート 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などのWebサーバーとのCertbotの統合を使用している場合は、Certbotコマンドの前にsudoを付ける必要がある場合があります(例:`sudo certbot`ではなく`certbot`)。(`certbot-auto`スクリプトは、必要に応じて、指定していなくても自動的にsudoを実行します。)

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

sudo
sudo

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


できる権限があります。 ワイルドカード証明書
wildcard cert
閉じるボタン

ワイルドカード証明書は、*.で始まる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つ以上の名前を含む証明書です。ブラウザは…

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

ワイルドカード証明書は、*.で始まる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検証を自動的に実行させるのは問題ありません。

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

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

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

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

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

  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パッケージの削除

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