次のBashスクリプトを使用して自動的に生成された純粋なNginxサーバーを持つUbuntu 16.04環境があります。サーバーブロックそして該当(自己署名)SSL認証。
これにより、CLIのどこからでも次のようにこれらのエントリを作成できます。
csb domain.tld
これはスクリプトのサーバーブロックテンプレートです。サイトの特定のサーバーブロックと証明書を生成するためにレンダリングされます。
自己署名証明書はサーフィンできません(this connection cannot be trusted
エラーを含む)。
自己署名付きの証明書を生成する部分を一般的なCertBot自動化スクリプトにどのように置き換えることができますか?
ご希望の場合は、Githubでプロジェクトをフォークして起動してみてください。
答え1
dehydrated-apache2
さて、コメントで約束したように、私はこれを処理する方法(dehydrated
Let's EncryptスクリプトのDebian版)を調べてみましたが、実際にはとても簡単です。キーは単純なリダイレクトエイリアスです。
AliasMatch /.well-known/acme-challenge/(.*)$ /var/lib/dehydrated/acme-challenges/$1
この構成セクションはVirtualHostコンテキストの外部からロードされるため、優先順位があります。これを設定に変換するには、私が助けることができない2つのことを行う必要があります。
- あなたのcertbotバージョンがチャレンジトークンを保存する場所を学びます。
/var/lib
通常、検索を開始する安全な選択です。 - 設定ファイルを作成し
nginx
、エイリアスの一致を設定し、 `/.well-known-acme-challenge/ をそのディレクトリにグローバルにリンクします。潜在的なディレクトリナビゲーションの漏洩を防ぐために、完全正規表現を使用することをお勧めしますが、これはユーザー次第です。
完了したら、certbot
SSL証明書の生成と更新を呼び出して証明書署名要求を生成し、チャレンジトークンを生成し、Let's Encryptサーバーにシグナルを送信します。その後、証明書に署名する前にトークンの確認を試みます。
ある時点で、おそらくあなたの立場になるでしょう。しかし、私の場合、私は数年前に書いた完全なPerlスクリプトを編集することになるので、私は「幸運を祈る」と言うときに笑うという意味ではありません。 ..
編集するまた、certbotが使用するディレクトリを含めるようにブロックテンプレートを変更する必要があります。これは、証明書をnginx SSLディレクトリにコピーするためにcertbotに実行後にフックを追加するよりも簡単です。
2番目の編集~によるとこの問題、nginx
それに対応するコードはおおよそ次のようになります。
location /.well-known/acme-challenge/(.*)$ {
alias /var/lib/dehydrated/acme-challenges/$1;
}
しかし、それを見つけてテストすることはあなたに任せます。