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つのアクションを実行します:
-
acme.sh
を作成してコピーします ホームディレクトリ($ HOME
):〜/ .acme.sh /
。すべての証明書もこのフォルダに配置されます。 - 次のエイリアスを作成します:
acme.sh =〜/ .acme.sh / acme.sh
。 - 毎日の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
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モードを使用してください。
証明書が生成されたら、発行された証明書をディスク上の正しい場所にインストール/コピーすることをお勧めします。証明書をターゲットファイルにコピーするには、このコマンドを使用する必要があります。〜/.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 --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/