優れたソフトウェアと実用的なチュートリアル
acme.sh スクリプトを使用して、Linux サーバーで無料の TSL / SSL ドメイン名証明書を申請します。
acme.sh 無料でお申し込みくださいSSL証明書、自動更新設定acme.shスクリプト、リナックスとても便利ですドメイン名証明書申請スクリプト、簡単なインストール、サポートDNSメソッドアプリケーションとHTTPメソッドアプリケーション、レッツ・エンクリプト適用するドメイン名証明書非常にシンプル、自動、無料です。acme.sh は acme プロトコルを実装し、Let's Encrypt から無料の証明書を生成できます。
Let's Encrypt と acme.sh の紹介
Let's Encryptとは
Let's Encrypt は、2015 年第 3 四半期に開始されたデジタル認証局です。自動化されたプロセスを通じて手動で証明書を作成してインストールするという複雑なプロセスを排除し、World Wide Web の利用を促進することを目的としています。サーバ暗号化された接続はどこにでもあり、無料でTLS証明書。
Let's Encryptは、Internet Security Research Group(ISRG)によって提供されています。主要スポンサーには、電子フロンティア財団(EFF)、Mozilla Foundation、Akamai、Ciscoなどが名を連ねています。2015年4月9日、ISRGとLinux Foundationは提携を発表しました。
新しいデジタル証明機関を実装するために使用されるプロトコルは、自動証明書管理環境 (ACME) と呼ばれます。GitHubこの仕様の草案は で公開されており、提案のバージョンはインターネットドラフトを公開しました。
Let's Encrypt でドメイン名証明書を申請するプロセスはシンプルで自動化されており、無料です。
acme.shとは
簡単に言えば acme.sh ACME プロトコルが実装されており、Let's Encrypt から無料の証明書を生成できます。
acme.sh 以下の機能があります:
- 純粋にシェル (Unix シェル) 言語で書かれた ACME プロトコル クライアント。
- 完全な ACME プロトコル実装。
- ECDSA証明書をサポート
- SANおよびワイルドカード証明書のサポート
- シンプル、パワフル、そしてとても使いやすい。使い方を覚えるのにたった3分しかかかりません。
- Bash、dash、sh と互換性があります。
- Shellのみで書かれており、 パイソン。
- たった 1 つのスクリプトで証明書の発行、更新、インストールを自動化します。
- アクセス権は必要ありません。root/sudoer
- Docker対応
- IPv6対応
- リニューアルやエラー等のため クローン 割り当て通知。
Githubプロジェクトのホームページ:https://github.com/acmesh-official/acme.sh
acme.shのインストール方法
ACME クライアント プロトコルを実装する純粋な Unix シェル スクリプト。
acme.shスクリプトをインストールする
インストールは非常に簡単で、コマンド 1 つだけです。
my@example.comあなたのメールアドレスに置き換えてください。
curl https://get.acme.sh | sh -s email=my@example.com
スクリプトをサーバーにダウンロードしてインストールします。
wget -O - https://get.acme.sh | sh -s email=my@example.com
あるいは、git からインストールするには、このプロジェクトをクローンしてインストールを開始します。
git clone https://github.com/acmesh-official/acme.sh.git cd ./acme.sh ./acme.sh --install -m my@example.com
インストーラーは次の 3 つのアクションを実行します。
- ホームディレクトリ () にコピーします: acme.sh$HOME~/.acme.sh/ すべての証明書もこのフォルダに配置されます。
- 次のエイリアスを作成します: acme.sh=~/.acme.sh/acme.sh
- 必要に応じて証明書をチェックして更新するための毎日の cron ジョブを作成します。
acme.shスクリプトを設定する
通常のユーザーと root ユーザーの両方が acme.sh をインストールして使用できます。
インストール プロセスは次の手順で進行します。
acme.sh をホームディレクトリにインストールします: ~/.acme.sh/ 便宜上、bash エイリアスを作成します:
エイリアス acme.sh=~/.acme.sh/acme.sh echo 'エイリアス acme.sh=~/.acme.sh/acme.sh' >>/etc/profile
インストールプロセス中に、毎日0:00にすべての証明書を自動的にチェックするcronジョブが自動的に作成されます。証明書の有効期限が近づき、更新が必要な場合は、証明書が自動的に更新されます。
00 00 * * * root /root/.acme.sh/acme.sh --cron --home /root/.acme.sh &>/var/log/acme.sh.logs
より高度なインストール オプションについては、以下を参照してください。 https://github.com/Neilpang/acme.sh/wiki/How-to-install
このスクリプトのインストールプロセスは、既存のシステム機能やファイルに影響を与えません。すべての変更はインストールディレクトリ(~/.acme.sh/)に限定されます。
acme.shを使用して証明書を申請する
acme.sh は、acme プロトコルでサポートされるすべての認証プロトコルを実装しています。認証には一般的に、http 認証と DNS 認証の 2 つの方法があります。
HTTPメソッド
http方式では、ドメイン名の所有権を検証し、検証を完了するために、ウェブサイトのルートディレクトリにファイルを配置する必要があります。その後、証明書を生成できます。
ドメイン名boxpu.comを例に挙げてみましょう。
acme.sh --issue -d boxpu.com -d *.boxpu.com --webroot /www/wwwroot/boxpu.com/
ドメイン名と、そのドメイン名が配置されているウェブサイトのルートディレクトリを指定するだけです。acme.sh は検証ファイルを自動的に生成し、ウェブサイトのルートディレクトリに配置します。その後、検証は自動的に完了します。最後に検証ファイルはインテリジェントに削除されるため、プロセス全体に副作用はありません。
使用する場合 アパッチサーバーでは、acme.sh は Apache 構成から自動的に検証をインテリジェントに完了することもできるため、Web サイトのルート ディレクトリを指定する必要はありません。
acme.sh --issue -d boxpu.com --boxpu.com
使用する場合 nginxサーバー、または反世代、 acme.sh nginx 構成から検証をインテリジェントに自動で完了することもできます。Web サイトのルート ディレクトリを指定する必要はありません。
acme.sh --issue -d boxpu.com --nginx
注:ApacheモードまたはNginxモードに関わらず、acme.shは検証完了後に以前の状態に復元し、許可なく設定を変更することはありません。設定が破損する心配がないのが利点です。
このタイプの設定には欠点があります。SSL設定を自分で行う必要があるのです。そうしないと、証明書は正常に生成されますが、ウェブサイトはhttpsにアクセスできません。しかし、安全上の理由から、設定は手動で変更する必要があります。
まだ Web サービスを実行しておらず、ポート 80 が空いている場合は、acme.sh は Web サーバーのふりをして、一時的にポート 80 をリッスンし、検証を完了することもできます。
acme.sh --issue -d boxpu.com --standalone
より高度な使用方法については、以下を参照してください。 https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert
DNS方式
この方法の利点は、サーバーやパブリック IP アドレスは必要なく、検証を完了するために必要なのは DNS 解決レコードだけであることです。
この方法の欠点は、自動 DNS API が同時に構成されていない場合、acme.sh はこの方法を使用して証明書を自動的に更新することができず、毎回手動でドメイン名の所有権を再解析して検証する必要があることです。
DNSを使用して証明書を申請する
cd /root/.acme.sh acme.sh --issue -d *.boxpu.com -d boxpu.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
DNS を変更し、NS 管理側でホスト レコードを変更します。
DNSを使用して証明書を生成する
Let's Encryptから無料のワイルドカードドメイン名証明書を取得します。DNS解決が有効になったら、次のコマンドを実行して証明書を再生成します。
acme.sh --renew -d *.boxpu.com -d boxpu.com --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
2回目に使用された場合 --更新
DNSメソッドAPI
DNS方式の本当の強みは、ドメイン名解決プロバイダーが提供する API は、検証を完了するために txt レコードを自動的に追加します。
acme.shは現在サポートしています クラウドフレア、dnspod、cloudxns、ゴダディ そして、ovh などの数十のパーサーを自動的に統合します。
dnspod を例にとると、まず dnspod アカウントにログインし、API ID と API キーを生成する必要があります。どちらも無料です。
エクスポート DP_Id="xxxxxxxxxxx" エクスポート DP_Key="xxxxxxxxxxxxxx" acme.sh --issue --dns dns_dp -d boxpu.com -d boxpu.com
証明書は自動生成ここで指定したAPI IDとAPIキーは自動的に記録されます。今後dnspod APIを使用する際に再度指定する必要はありません。直接生成してください。
acme.sh --issue -d boxpu.com --dns dns_dp
より詳細な API の使用法: https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md
TLS/SSL証明書の使用
TLS/SSL証明書のインストール
証明書が生成されたら、実際に必要な場所にコピーする必要があります。
デフォルトで生成される証明書はインストールディレクトリ ~/.acme.sh/ に保存されます。このディレクトリ内のファイルを直接使用しないでください。
たとえば、次のファイルを nginx/apache 構成ファイルで直接使用しないでください。
ここにあるファイルは内部使用のみを目的としており、ディレクトリ構造は変更される可能性があります。正しい使用方法は、--installcert コマンドを使用してターゲットの場所を指定することです。そうすると、証明書ファイルが対応する場所にコピーされます。例:
acme.sh --installcert -d boxpu.com \ --key-file /etc/nginx/ssl/uzbox.key \ --fullchain-file /etc/nginx/ssl/fullchain.cer \ --reloadcmd "systemctl force-reload nginx"
NginxサーバーにSSL証明書をインストールする
たとえば、Nginx の標準構成を例にとると、生成される証明書ファイルには fullchain.cer を使用することが推奨され、秘密鍵ファイルは boxpu.com.key になります。
Nginx の ssl_certificate 構成では、 .cer ではなく fullchain.cer が使用されます。そうしないと、SSL Labs テストで Chain issues Incomplete エラーが報告されます。
上記で生成された証明書パスは /www/server/panel/vhost/cert/boxpu.com/ です。
Nginx設定ファイルの変更
サーバー { listen 443; server_name boxpu.com; ssl on; root html; index index.html index.htm; ssl_certificate /www/server/panel/vhost/cert/boxpu.com/fullchain.cer; ssl_certificate_key /www/server/panel/vhost/cert/boxpu.com/clsn.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }
nginxを再起動して新しい設定をロードします
systemctl 強制リロード nginx
注: ここでは systemctl force-reload nginx を使用し、 systemctl reload nginx は使用しません。reload では証明書が再読み込みされないため、force-reload を使用します。
証明書の更新
証明書の更新
現在の証明書は 90 日間有効で、60 日後に発行されます。スケジュールされたタスク自動更新なので、何もする必要はありません。すべて自動的に行われるため、証明書の有効期限を心配する必要はありません。
acme.sh の更新
現在、acme プロトコルと letsencrypt CA は頻繁に更新されているため、acme.sh も同期を保つために頻繁に更新されます。
acme.sh を最新バージョンにアップグレードします。
acme.sh --アップグレード
手動で更新したくない場合は、自動更新を有効にすることができます。
acme.sh --upgrade --自動アップグレード
以降、acme.sh は自動的に最新の状態に保たれます。自動更新はいつでも無効にできます。
acme.sh --upgrade --auto-upgrade 0
参考文献