8

Lets Encrypt を使用するとエラーが発生します: urn:acme:error:unauthorized :: クライアントに十分な承認がありません :: キー認証ファイルの解析エラー: 無効なキー認証: 不正なトークン

試してみます: sudo service nginx stop but get error: nginx service not loaded

4

1 に答える 1

7

だから、私はこのことで多くの問題を抱えていました。基本的に、このエラーは、サイトを所有していることをテストしたときに、certbot が探していたファイルを見つけることができなかったことを意味します。これには多くの潜在的な原因があるため、これをセットアップしたときにそれらのほとんどに遭遇したため、要約しようとします. より多くの参考資料については、ドキュメントよりもgithub の readmeの方がはるかに便利であることがわかりました。

最初に注意すべきことは、acme 認証が機能するには nginx サービスが実行されている必要があることです。そうではないと言っているように見えるので、それをスピンアップすることから始めてください。

sudo service nginx start

これで、ここにあるものはすべて、証明書を作成しようとしている Web サイトのファイルの場所に基づいています。それがどこにあるかわからない場合は、/etc/nginxNGINX のバージョンに大きく依存する関連する構成ファイルにありますが、通常は/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 ファイルを作成するため、参照する構成の例を次に示します。443https

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

証明書を取得したら、構成にも設定する必要がありますが、それはこの質問の範囲外であるため、ここにリンクがあります。

于 2016-06-27T18:22:25.663 に答える