Lets Encrypt を使用するとエラーが発生します: urn:acme:error:unauthorized :: クライアントに十分な承認がありません :: キー認証ファイルの解析エラー: 無効なキー認証: 不正なトークン
試してみます: sudo service nginx stop but get error: nginx service not loaded
Lets Encrypt を使用するとエラーが発生します: urn:acme:error:unauthorized :: クライアントに十分な承認がありません :: キー認証ファイルの解析エラー: 無効なキー認証: 不正なトークン
試してみます: sudo service nginx stop but get error: nginx service not loaded
だから、私はこのことで多くの問題を抱えていました。基本的に、このエラーは、サイトを所有していることをテストしたときに、certbot が探していたファイルを見つけることができなかったことを意味します。これには多くの潜在的な原因があるため、これをセットアップしたときにそれらのほとんどに遭遇したため、要約しようとします. より多くの参考資料については、ドキュメントよりもgithub の readmeの方がはるかに便利であることがわかりました。
最初に注意すべきことは、acme 認証が機能するには nginx サービスが実行されている必要があることです。そうではないと言っているように見えるので、それをスピンアップすることから始めてください。
sudo service nginx start
これで、ここにあるものはすべて、証明書を作成しようとしている Web サイトのファイルの場所に基づいています。それがどこにあるかわからない場合は、/etc/nginx
NGINX のバージョンに大きく依存する関連する構成ファイルにありますが、通常は/etc/nginx/nginx.conf
または/etc/nginx/sites-enabled/[site-name]
またはの下にあり/etc/nginx/conf/[something].conf
ます。構成ファイルは下にリストされている必要があることに注意してください (または少なくともそのディレクトリ)/etc/nginx/nginx.conf
ので、そこから開始できます。
これは、certbot が変更する必要があるフォルダーであるため、重要なフォルダーです。ネストされたフォルダー構造にいくつかのファイルを作成し、読み取ろうとする URL がそれらのファイルからデータを返すようにする必要があります。作成しようとするフォルダーは、次のフォルダーの下に指定したルート ディレクトリの下にあります。
/.well-known/acme-challenge
次に、あいまいな名前 (GUID だと思います) のファイルを作成し、そのファイルを URL から読み取ろうとします。何かのようなもの:
http://example.com/.well-known/acme-challenge/abcdefgh12345678
ルート ディレクトリの構成が不十分な場合、URL がフォルダーと一致せず、承認が失敗するため、これは重要です。また、実行時に certbot にフォルダーへの書き込み権限がない場合、ファイルが作成されないため、認証に失敗します。これらの問題の両方に遭遇しました。
さらに、上記の URL が ではないことに気付いたかもしれhttp
ませんhttps
。これも重要です。私は既存の暗号化ツールを使用していたので、ほとんどのデータを安全な URL に保持する80
代わりに、ポートの下で ./well-known フォルダー ツリーを表示できるように NGINX を構成する必要がありました。これら 2 つのことは、やや複雑な NGINX ファイルを作成するため、参照する構成の例を次に示します。443
https
server {
listen 80;
server_name example.com;
location '/.well-known/acme-challenge' {
default_type "text/plain";
root /home/example;
}
location '/' {
return 301 https://$server_name$request_uri;
}
}
これにより80
、ウェブサイトの残りの部分のセキュリティを維持しながら、certbot チャレンジに関連するすべてのものを移植できます。ディレクトリのアクセス許可を変更して、certbot がファイルを書き込むためのアクセス権を持つようにするか、単にルートとして実行することができます。
sudo ./certbot-auto certonly
証明書を取得したら、構成にも設定する必要がありますが、それはこの質問の範囲外であるため、ここにリンクがあります。