0

Cakephp で LetsEncrypt をインストールしようとしていますが、いくつかの問題があります。

まず、CentOS 6 を搭載したサーバーに LetsEncrypt をインストールします。

いくつかの Web サイトで言及されているように、LetsEncrypt には Python 2.7 が必要なため、Python を 2.6 から 2.7 にアップグレードする必要があります。私がしたこと。

次に、実行する./letsencrypt-autoと取得します

「お使いの OS ではまだインストーラーを利用できません。手動でインストールできる証明書を取得するには、「letsencrypt-auto certonly」を実行してみてください」

CentOS 6 のインストーラーがないため、これが正常であることは理解しています。

./letsencrypt-auto certonlyウィンドウが表示されます。次のいずれかを選択できます。

  1. ファイルを webroot ディレクトリに配置する
  2. 一時 Web サーバーを自動的に使用する

1 を押して、ドメイン名を入力すると、次のように表示されます。

  1. 新しいウェブルートを入力してください

[OK] を押すと、ルート ディレクトリが表示されます。/root

そして、次のエラーがあります。

認証手続きに失敗しました。www.example.com (http-01): urn:acme:error:unauthorized :: クライアントに十分な権限がありません :: http://www.example.com/.well-known/acme-challenge/-からの無効な応答CnpDIgxBB9EOH-BCssGOyiunFjnMlGLWhWw9roE4Ds : "500 内部サーバー エラー インター"

重要な注意事項: - サーバーから次のエラーが報告されました:

ドメイン: www.example.com タイプ: 無許可 詳細: http://www.example.com/.well-known
/acme-challenge/-CnpDIgxBB9EOH-BCssGOyiunFjnMlGLWhWw9roE4Ds からの無効な応答:

500 Internal Server Error
Inter」


これらのエラーを修正するには、ドメイン名が正しく入力されていること、およびそのドメインの DNS A レコード
に正しい IP アドレスが含まれていることを確認してください。

そして、ここにcakephpが来ます。前述のように、私はcakephpを使用しています。そして、この特定の問題については、ここで述べたように htaccess ファイルを変更する必要があるようです

"RewriteRule ^(\.well-known/.*)$ $1 [L]"との最初の書き換えルールとして追加する必要がありroot htaccessます。app/.htaccess

私がしたこと。

root .htaccess: 

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^(\.well-known/.*)$ $1 [L]
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
   AddDefaultCharset UTF-8 
</IfModule>

app/.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^(\.well-known/.*)$ $1 [L]
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*)  webroot/$1    [L]
    AddDefaultCharset UTF-8 
 </IfModule>

しかし、私はまだ同じ問題を抱えています

私が何を間違えたのか分かりますか?

どうもありがとう

4

1 に答える 1

1

Cake'swebrootには.htaccesswith aRewriteCond %{REQUEST_FILENAME} !-dルールがあります。これは、 内の実際のディレクトリに一致するリクエストに対して Cake が呼び出されないことを意味しますwebroot

したがって、.well-knownディレクトリと必要なすべてのものをディレクトリ内に配置するだけwebrootで、.htaccess.

PS。Let's encrypt が必要とするファイルがテキストとして返されない場合があります。その場合、headersApache モジュールを有効にし (まだ有効になっていない場合)、次のルールを apache または virtualhost構成に追加する必要があります。

<IfModule mod_headers.c>
  <LocationMatch "/.well-known/acme-challenge/*">
    Header set Content-Type "text/plain"
  </LocationMatch>
</IfModule>
于 2016-05-16T16:59:29.013 に答える