純粋にシェル (Unix シェル) 言語で書かれた ACME プロトコル クライアント。
完全な ACME プロトコルの実装。
ECDSA 証明書のサポート
SAN およびワイルドカード証明書をサポート
シンプルで強力、そして非常に使いやすい。習得するのに必要な時間はわずか 3 分です。
Bash、dash、sh と互換性があります。
Python に依存せずに純粋にシェルで書かれています。
証明書を自動的に発行、更新、インストールするスクリプトを 1 つだけ実行します。
root/sudoer
アクセスは必要ありません。
ドッカーの準備完了
IPv6対応
更新やエラーなどの cron ジョブ通知
これはおそらく、無料の証明書を自動的に発行および更新するeasiest & smartest
シェル スクリプトです。
Wiki: https://github.com/acmesh-official/acme.sh/wiki
Docker ファン向け: acme.sh ?ドッカー
Twitter: @neilpangxa
FreeBSD.org
ルビーチャイナ.org
プロクスモックス
パフセンス
ロードバランサー.org
談話.org
セントミンモッド
スリンクス
opnsense.org
CentOS Web パネル
lnmp.org
もっと...
いいえ | 状態 | プラットフォーム |
---|---|---|
1 | マックOSX | |
2 | Windows (curl、openssl、crontab を含む cygwin) | |
3 | FreeBSD | |
4 | ソラリス | |
5 | Ubuntu | |
6 | NA | パフセンス |
7 | OpenBSD | |
8 | NetBSD | |
9 | ドラゴンフライBSD | |
10 | オムニオス | |
11 | デビアン | |
12 | CentOS | |
13 | openSUSE | |
14 | Alpine Linux (curl 付き) | |
15 | アーチリナックス | |
16 | フェドーラ帽 | |
17 | カリ・リナックス | |
18 | オラクル・リナックス | |
19 | マゲイア | |
10 | Gentoo Linux | |
11 | ClearLinux | |
22 | ----- | クラウド Linux #111 |
23 | ----- | OpenWRT: テスト済みで動作しています。ウィキページを参照 |
24 | Proxmox: Proxmox VE Wiki を参照してください。バージョン 4.x、5.0、5.1、バージョン 5.2 以降 |
テスト プロジェクトを確認してください。
https://github.com/acmesh-official/acmetest
ZeroSSL.com CA(デフォルト)
Letsencrypt.org CA
BuyPass.com CA
SSL.com CA
Google.com パブリック CA
Pebble 厳密モード
その他の RFC8555 準拠の CA
ウェブルートモード
スタンドアロンモード
スタンドアロン tls-alpn モード
アパッチモード
Nginxモード
DNSモード
DNSエイリアスモード
ステートレスモード
このプロジェクトを確認してください: https://github.com/acmesh-official/get.acme.sh
カール https://get.acme.sh | sh -s [email protected]
または:
wget -O - https://get.acme.sh | sh -s [email protected]
このプロジェクトのクローンを作成し、インストールを開始します。
git clone https://github.com/acmesh-official/acme.sh.gitcd ./acme.sh ./acme.sh --install -m [email protected]
root になることit is recommended
が、 don't have to be root
。
高度なインストール: https://github.com/acmesh-official/acme.sh/wiki/How-to-install
インストーラーは 3 つのアクションを実行します。
acme.sh
を作成し、ホーム ディレクトリ ( $HOME
): ~/.acme.sh/
にコピーします。すべての証明書もこのフォルダーに配置されます。
acme.sh=~/.acme.sh/acme.sh
のエイリアスを作成します。
毎日の cron ジョブを作成して、必要に応じて証明書を確認および更新します。
cron エントリの例:
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
インストール後、現在のターミナルを閉じて再度開き、エイリアスを有効にする必要があります。
これで、証明書を発行する準備ができました。
ヘルプメッセージを表示:
root@v1:~# acme.sh -h
例 1:単一ドメイン。
acme.sh --issue -d example.com -w /home/wwwroot/example.com
または:
acme.sh --issue -d example.com -w /home/username/public_html
または:
acme.sh --issue -d example.com -w /var/www/html
例 2:同じ証明書内の複数のドメイン。
acme.sh --issue -d example.com -d www.example.com -d cp.example.com -w /home/wwwroot/example.com
パラメータ/home/wwwroot/example.com
または/home/username/public_html
または/var/www/html
は、Web サイト ファイルをホストする Web ルート フォルダーです。このフォルダーへのwrite access
が必要です。
2 番目の引数「example.com」は、証明書を発行するメイン ドメインです。そこには少なくとも 1 つのドメインが必要です。
すべてのドメインを同じ Webroot ディレクトリ/home/wwwroot/example.com
に指定してバインドする必要があります。
証明書は~/.acme.sh/example.com/
に配置されます。
証明書は60日ごとに自動的に更新されます。
その他の例: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
証明書が生成されたら、Apache/Nginx またはその他のサーバーに証明書をインストールまたはコピーする必要があると思われます。証明書をターゲット ファイルにコピーするには、このコマンドを使用する必要があります。 ~/.acme.sh/フォルダー内の証明書ファイルは使用しないでください。これらは内部使用のみを目的としており、フォルダー構造は将来変更される可能性があります。
アパッチの例:
acme.sh --install-cert -d example.com --cert-file /path/to/certfile/in/apache/cert.pem --key-file /path/to/keyfile/in/apache/key.pem --fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem --reloadcmd "サービス Apache2 強制リロード"
Nginx の例:
acme.sh --install-cert -d example.com --key-file /path/to/keyfile/in/nginx/key.pem --fullchain-file /path/to/fullchain/nginx/cert.pem --reloadcmd "サービス nginx 強制リロード"
ドメインのみが必須で、他のパラメータはすべてオプションです。
既存のファイルの所有権と権限情報は保持されます。ファイルを事前に作成して、所有権と権限を定義できます。
証明書/キーを運用環境の Apache または Nginx パスにインストール/コピーします。
証明書はデフォルトで60日ごとに更新されます (構成可能)。証明書が更新されると、Apache/Nginx サービスは次のコマンドによって自動的に再ロードされます: service apache2 force-reload
またはservice nginx force-reload
。
注意してください: reloadcmd は非常に重要です。証明書は自動的に更新できますが、正しい 'reloadcmd' がないと証明書がサーバー (nginx や Apache など) にフラッシュされない可能性があり、Web サイトは 60 日以内に更新された証明書を表示できなくなります。
(root/sudoer であるか、ポート 80 (TCP) でリッスンする権限を持っている必要があります)
ポート80
(TCP) はリッスンできるように解放されている必要があります。そうでない場合は、解放して再試行するように求められます。
acme.sh --issue --standalone -d example.com -d www.example.com -d cp.example.com
その他の例: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(root/sudoer であるか、ポート 443 (TCP) でリッスンする権限を持っている必要があります)
ポート443
(TCP) はリッスンできるように解放されている必要があります。そうでない場合は、解放して再試行するように求められます。
acme.sh --issue --alpn -d example.com -d www.example.com -d cp.example.com
その他の例: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(Apache サーバーと対話する必要があるため、root/sudoer である必要があります)
Web サーバーを実行している場合は、 Webroot mode
を使用することをお勧めします。
特に、Apache サーバーを実行している場合は、代わりに Apache モードを使用できます。このモードでは、Web ルート フォルダーにファイルは書き込まれません。
2 番目の引数として文字列「apache」を設定するだけで、Apache プラグインの使用が自動的に強制されます。
acme.sh --issue --apache -d example.com -d www.example.com -d cp.example.com
この Apache モードは証明書を発行するだけであり、Apache 構成ファイルは変更されません。証明書を使用するには、Web サイトの構成ファイルを自分で設定する必要があります。 Apache サーバーを台無しにするつもりはありません。心配しないでください。
その他の例: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
(Nginxサーバーと対話する必要があるため、root/sudoerである必要があります)
Web サーバーを実行している場合は、 Webroot mode
を使用することをお勧めします。
特に、nginx サーバーを実行している場合は、代わりに nginx モードを使用できます。このモードでは、Web ルート フォルダーにファイルは書き込まれません。
2番目の引数として文字列「nginx」を設定するだけです。
nginx サーバーを自動的に構成してドメインを検証し、nginx 構成を元のバージョンに復元します。
したがって、構成は変更されません。
acme.sh --issue --nginx -d example.com -d www.example.com -d cp.example.com
この nginx モードは証明書を発行するだけであり、nginx 構成ファイルは変更されません。証明書を使用するには、Web サイトの構成ファイルを自分で設定する必要があります。 nginx サーバーを台無しにするつもりはありません。心配しないでください。
その他の例: https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
DNS プロバイダーが API アクセスをサポートしている場合、その API を使用して証明書を自動的に発行できます。
手動で何もする必要はありません。
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
まずは https://github.com/acmesh-official/acme.sh/wiki/dns-manual-mode を参照してください。
DNS プロバイダーが API アクセスをサポートしていない場合は、txt レコードを手動で追加できます。
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com
以下のような出力が得られるはずです。
次の txt レコードを追加します。 ドメイン:_acme-challenge.example.com テキスト値:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c 次の txt レコードを追加します。 ドメイン:_acme-challenge.www.example.com テキスト値:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx これらの txt レコードをドメインに追加してください。 DNS が有効になるのを待っています。
次に、 renew
引数を指定して再実行します。
acme.sh --renew -d example.com
よし、終わった。
これは DNS 手動モードなので、自動的に更新できないことに注意してください。証明書を更新するときは、手動で新しい txt レコードをドメインに追加する必要があります。
代わりに DNS API モードを使用してください。
keylength
パラメータに接頭辞ec-
設定するだけです。
例えば:
acme.sh --issue -w /home/wwwroot/example.com -d example.com --keylength ec-256
acme.sh --issue -w /home/wwwroot/example.com -d example.com -d www.example.com --keylength ec-256
上記のkeylength
パラメータを見てください。
有効な値は次のとおりです。
ec-256 (prime256v1、「ECDSA P-256」、デフォルトのキー タイプ)
ec-384 (secp384r1、「ECDSA P-384」)
ec-521 (secp521r1、「ECDSA P-521」、Let's Encrypt ではまだサポートされていません。)
2048 (RSA2048)
3072 (RSA3072)
4096 (RSA4096)
やり方は簡単で、 -d
パラメータとしてワイルドカード ドメインを指定するだけです。
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
いいえ、証明書を手動で更新する必要はありません。すべての証明書は60日ごとに自動的に更新されます。
ただし、証明書を強制的に更新することもできます。
acme.sh --renew -d example.com --force
または、ECC 証明書の場合:
acme.sh --renew -d example.com --force --ecc
証明書の更新を停止するには、次のコマンドを実行して更新リストから証明書を削除します。
acme.sh --remove -d example.com [--ecc]
証明書/キー ファイルはディスクから削除されません。
それぞれのディレクトリ (例: ~/.acme.sh/example.com
) は自分で削除できます。
acme.sh
アップグレードする方法acme.sh は継続的に開発されているため、最新のコードを使用することを強くお勧めします。
acme.sh を最新のコードに更新できます。
acme.sh --upgrade
自動アップグレードを有効にすることもできます。
acme.sh --upgrade --auto-upgrade
その後、 acme.sh は自動的に最新の状態に保たれます。
自動アップグレードを無効にします。
acme.sh --upgrade --auto-upgrade 0
https://github.com/acmesh-official/acme.sh/wiki/Issue-a-cert-from-existing-CSR
https://github.com/acmesh-official/acme.sh/wiki/notify
シェルを使用して ACME 言語を「Let's Encrypt」に直接話します。
TODO:
Acme-tiny: https://github.com/diafygi/acme-tiny
ACME プロトコル: https://github.com/ietf-wg-acme/acme
このプロジェクトは、貢献してくださったすべての人々のおかげで存在します。
財政的に貢献して、コミュニティの維持にご協力ください。 [貢献する]
あなたの組織でこのプロジェクトをサポートしてください。あなたのロゴが Web サイトへのリンクとともにここに表示されます。 [貢献する]
ライセンスはGPLv3です
スターとフォークをお願いします。
問題やプルリクエストは大歓迎です。
あなたの寄付によりacme.shがより良くなります:
PayPal/Alipay(支付宝)/Wechat(微信): https://donate.acme.sh/
寄付リスト