SSL証明書 · 2 min read · Feb 04, 2026

acme.sh Let's Encrypt SSL クライアントの始め方

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

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

  • Webrootモード
  • スタンドアロンモード
  • スタンドアロンTLS-ALPNモード
  • Apacheモード
  • Nginxモード
  • DNSモード
  • DNSエイリアスモード
  • ステートレスモード

Let’s Encryptとは

Let’s Encrypt(LE)は、無料で自動化された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."

すべてのオプションを設定する必要はなく、気に入ったものだけを設定してください。

オプションの説明:

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

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

acme.sh --version  
# v2.8.1

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

acme.sh --help

SSL証明書の発行

すでにウェブサーバーが稼働している場合は、webrootモードを使用する必要があります。ウェブルートフォルダへの書き込みアクセスが必要です。以下は、webrootモードを介して証明書を取得するために使用できるいくつかのコマンドの例です:

単一ドメイン + Webrootモード:

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

同じ証明書内の複数のドメイン + Webrootモード:

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

単一ドメインECC/ECDSA証明書 + Webrootモード:

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

同じECC/ECDSA証明書内の複数のドメイン + Webrootモード:

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です。

ウェブサーバーがない場合、SMTPまたはFTPサーバーにいるかもしれませんが、80ポートが空いている場合は、standaloneモードを使用できます。このモードを使用する場合は、最初に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ポートが空いている場合は、スタンドアロンTLS ALPNモードを使用できます。Acme.shには、証明書を発行するために443ポートでリッスンできる組み込みのスタンドアロンTLSウェブサーバーがあります。

単一ドメイン + スタンドアロンTLS ALPNモード:

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

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

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

自動DNS API統合

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

単一ドメイン + CloudFlare DNS APIモード:

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

ワイルドカード証明書 + CloudFlare DNS 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  

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

次のtxtレコードを追加してください:
ドメイン:_acme-challenge.example.com
Txt値:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c

次のtxtレコードを追加してください:
ドメイン:_acme-challenge.www.example.com
Txt値:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

これらのtxtレコードをドメインに追加してください。DNSが効果を発揮するのを待っています。

その後、renew引数を付けて再実行してください:

acme.sh --renew -d example.com

これはDNS手動モードであり、証明書を自動更新することはできません。証明書を更新する時が来たら、自分の手で新しいTXTレコードをドメインに追加する必要があります。したがって、代わりにDNS APIモードを使用してください。自動化できます。

Let’s Encrypt SSL証明書のインストール

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

Apacheの例:

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’s Encrypt SSL証明書の更新

証明書を手動で更新する必要はありません。すべての証明書は自動的に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は自動的に最新の状態に保たれます。

それだけです。何かに行き詰まった場合は、https://github.com/Neilpang/acme.sh/wikiのacme.shウィキページを訪れてください。

リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。