GNU/Linux >> Linux の 問題 >  >> Linux

acme.sh入門SSLクライアントを暗号化しましょう

Acme.shは、bash、dash、shシェルと互換性のある、純粋にシェル(Unixシェル)言語で記述された、シンプルで強力、そして使いやすいACMEプロトコルクライアントです。 SSL証明書のインストール、更新、失効を管理するのに役立ちます。 ACMEバージョン1およびACMEバージョン2プロトコル、およびACMEv2ワイルドカード証明書をサポートします。依存関係がゼロのACMEクライアントであるため、さらに優れています。インターネットを実行するために、インターネット全体をダウンロードしてインストールする必要はありません。このツールはrootまたはsudoアクセスを必要としませんが、rootを使用することをお勧めします。

Acme.shは、ドメインの所有権を確認するために使用できる次の検証方法をサポートしています。

  • ウェブルートモード
  • スタンドアロンモード
  • スタンドアロンのtls-alpnモード
  • Apacheモード
  • Nginxモード
  • DNSモード
  • DNSエイリアスモード
  • ステートレスモード

Let'sEncryptとは

Let’s Encrypt(LE)は、Web全体を暗号化することを目的として、無料の自動化されたSSL / TLS証明書を提供する認証局(CA)です。ドメイン名を所有していて、サーバーへのシェルアクセスがある場合は、Let's Encryptを利用して、信頼できる証明書を無料で取得できます。 Let's Encryptは、最大100のホスト名に対してSAN証明書を発行できます およびワイルドカード証明書。すべての証明書は90日間有効です。

Acme.shの使用法と基本的なコマンド

このセクションでは、最も一般的なacme.shコマンドとオプションのいくつかを紹介します。

Acme.shのインストール

acme.shをインストールするためのいくつかのオプションがあります。

curlを介してウェブからインストールする またはwget

curl https://get.acme.sh | sh
source ~/.bashrc

または

wget -O - https://get.acme.sh | sh
source ~/.bashrc

GitHubからインストール

curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

または

wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

Gitのクローンを作成してインストールします:

git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
source ~/.bashrc

インストーラーは3つのアクションを実行します:

  1. acme.shを作成してコピーします ホームディレクトリ( $ HOME ):〜/ .acme.sh / 。すべての証明書もこのフォルダに配置されます。
  2. 次のエイリアスを作成します: acme.sh =〜/ .acme.sh / acme.sh
  3. 毎日のcronジョブを作成して、必要に応じて証明書を確認および更新します。

高度なインストール:

git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install \
--home ~/myacme \
--config-home ~/myacme/data \
--cert-home ~/mycerts \
--accountemail "[email protected]" \
--accountkey ~/myaccount.key \
--accountconf ~/myaccount.conf \
--useragent "this is my client."

すべてのオプションを設定する必要はありません。気になるオプションを設定するだけです。

オプションの説明:

  • -ホーム acme.shをインストールするためにカスタマイズされたディレクトリです デフォルトでは、〜/.acme.sh。にインストールされます。
  • -config-home は書き込み可能なフォルダであり、acme.shはそこにすべてのファイル(cert / keys、configsを含む)を書き込みます。デフォルトでは、-homeにあります。
  • -cert-home 発行する証明書を保存するためにカスタマイズされたディレクトリです。デフォルトでは、-config-homeに保存されます 。
  • -accountemail Let's Encryptにアカウントを登録するために使用される電子メールです。ここで、更新通知の電子メールを受け取ります。デフォルトは空です。
  • -accountkey アカウントの秘密鍵を保存するファイルです。デフォルトでは、-config-homeに保存されます 。
  • -useragent Let'sEncryptに送信するために使用されるユーザーエージェントヘッダー値です。

インストールが完了したら、 acme.shを確認して確認できます。 バージョン:

acme.sh --version
# v2.8.1

プログラムには、使用できるコマンドとパラメータがたくさんあります。ヘルプを取得するには、実行できます:

acme.sh --help

SSL証明書を発行します

すでにウェブサーバーを実行している場合は、ウェブルートモードを使用する必要があります 。ウェブルートフォルダへの書き込みアクセス権が必要になります。 Webルートモードで証明書を取得するために使用できるコマンドの例を次に示します。

シングルドメイン+ウェブルートモード:

acme.sh --issue -d example.com --webroot /var/www/example.com

同じ証明書+ウェブルートモードの複数のドメイン:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com

シングルドメインECC/ECCSA証明書+Webルートモード:

acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256

同じECC/ECCSA証明書+ウェブルートモードの複数のドメイン:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com --keylength ec-256

-keylengthの有効な値 2048(デフォルト)、3072、4096、8192またはec-256、ec-384。

Webサーバーがない場合、おそらくSMTPサーバーまたはFTPサーバーを使用していて、80ポートが空いている場合は、スタンドアロンモードを使用できます。 このモードを使用する場合は、最初にsocatツールをインストールする必要があります。

シングルドメイン+スタンドアロンモード:

acme.sh --issue -d example.com --standalone

同じ証明書の複数のドメイン+スタンドアロンモード:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone

ウェブサーバーがない場合、おそらくSMTPサーバーまたはFTPサーバーを使用している場合は、443ポートは無料です。スタンドアロンのTLSALPNモードを使用できます。 Acme.shにはスタンドアロンのTLSウェブサーバーが組み込まれており、443ポートでリッスンして証明書を発行できます。

シングルドメイン+スタンドアロンTLSALPNモード:

acme.sh --issue -d example.com --alpn

同じ証明書内の複数のドメイン+スタンドアロンTLSALPNモード:

acme.sh --issue -d example.com -d www.example.com --alpn
自動DNSAPI統合

DNSプロバイダーにAPIがある場合、acme.shはそのAPIを使用して、DNSTXTレコードを自動的に追加できます。証明書は自動的に発行され、更新されます。手作業は必要ありません。証明書をリクエストする前に、APIキーとメールアドレスを設定してください。現在、acme.shは約60のDNSプロバイダーとネイティブに自動DNS統合されており、ネイティブでサポートされていないプロバイダーにはLexiconツールを利用できます。

シングルドメイン+CloudFlareDNS APIモード:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"
acme.sh --issue -d example.com --dns dns_cf

ワイルドカード証明書+CloudFlareDNS APIモード:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf

DNSプロバイダーがAPIアクセスをサポートしていない場合は、TXTレコードを手動で追加できます。

acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com

次のような出力が得られるはずです:

Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c

Add the following txt record:
Domain:_acme-challenge.www.example.com
Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Please add those txt records to the domains. Waiting for the dns to take effect.

次に、 updateで再実行します 引数:

acme.sh --renew -d example.com

これはDNS手動モードであり、証明書を自動更新できないことに注意してください。証明書を更新するときは、手作業で新しいTXTレコードをドメインに追加する必要があります。自動化できるため、代わりにDNSAPIモードを使用してください。

インストールSSL証明書を暗号化しましょう

証明書が生成されたら、発行された証明書をディスク上の正しい場所にインストール/コピーすることをお勧めします。証明書をターゲットファイルにコピーするには、このコマンドを使用する必要があります。〜/.acme.sh/の証明書ファイルは使用しないでください。 フォルダ、それらは内部使用のみであり、フォルダ構造は将来変更される可能性があります。インストールする前に、証明書を保存するための適切なディレクトリを作成します。それは/etc /letsencryptである可能性があります 、 / etc / nginx / ssl または/etc / apache2 / ssl たとえば、WebサーバーソフトウェアとSSL関連のものを保存するための独自の設定によって異なります。

アパッチ 例:

acme.sh --install-cert \
--domain example.com \
--cert-file /path/to/cert/cert.pem \
--key-file /path/to/keyfile/key.pem \
--fullchain-file /path/to/fullchain/fullchain.pem \
--reloadcmd "sudo systemctl reload apache2.service"

Nginx 例:

acme.sh --install-cert \
--domain example.com \
--cert-file /path/to/cert/cert.pem \
--key-file /path/to/keyfile/key.pem \
--fullchain-file /path/to/fullchain/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"

パラメータは.acme.sh構成ファイルに保存されるため、cronジョブが更新を実行するときにこのファイルが読み取られるため、システムに合わせてパラメータを正しく取得する必要があります。 「reloadcmd」は、オペレーティングシステムとinitシステムによって異なります。

Let'sEncryptSSL証明書を更新する

証明書を手動で更新する必要はありません。すべての証明書は60ごとに自動的に更新されます 日。

ただし、証明書を強制的に更新することもできます:

acme.sh --renew -d example.com --force

または、ECC証明書の場合:

acme.sh --renew -d example.com --force --ecc
acme.shをアップグレードする方法

次のコマンドでacme.shを最新のコードに更新できます:

acme.sh --upgrade

自動アップグレードを有効にすることもできます:

acme.sh --upgrade --auto-upgrade

その後、acme.shは自動的に最新の状態に保たれます。

それでおしまい。何かに行き詰まった場合は、acme.sh wikiページ(https://github.com/Neilpang/acme.sh/wiki)にアクセスしてください。

リンク
  • https://github.com/Neilpang/acme.sh
  • https://letsencrypt.org/

Linux
  1. Zshの使用を開始する

  2. UbuntuでLetsEncryptSSL証明書を使い始める

  3. Lets Encrypt SSL/TLS証明書をcertbotで管理する方法

  1. 無料でISPConfig3.1を保護することでSSL証明書を暗号化できます

  2. lsの使用を開始する

  3. LinuxでPostgreSQLを使い始める

  1. GnuCashの使用を開始する

  2. Etcher.ioを使い始める

  3. 正規表現を使い始める