質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

2回答

1072閲覧

移行先サーバでcertbotのSAN証明書発行を旧サーバのFQDN込で行えますか?

kedama

総合スコア19

0グッド

0クリップ

投稿2017/10/06 03:04

編集2017/10/06 03:07

###前提・実現したいこと
サーバ移行を控えています。移行元サーバではcertbotを入れられなかったためLet's Encryptを使用していませんが、移行先サーバはSNI対応のnginxを導入しましたのでcertbotをインストールし、webrootで証明書を発行したいと考えています。

下記のように複数ドメインが存在しており、エイリアスを設定しています。

www.example.com エイリアス: example.com, new.example.com
www.example2.com エイリアス: example2.com, new.example2.com
www.example3.com エイリアス: example3.com, new.example3.com

※実際使用するのは、www.とwww.なしで、new.は新サーバの確認用に追加しているだけです。
※DNSの設定では、www.とwww.なしは旧サーバ、new.は新サーバへ向けています。

その状態でSAN証明書発行をcertbotで行うと

# certbot certonly --webroot -w /var/www/example.com/public_html/ -d example.com -d www.example.com -d new.example.com Saving debug log to /var/log/letsencrypt/letsencrypt.log Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org Obtaining a new certificate Performing the following challenges: http-01 challenge for example.com http-01 challenge for www.example.com http-01 challenge for new.example.com Using the webroot path /var/www/example.com/public_html for all unmatched domains. Waiting for verification... Cleaning up challenges Failed authorization procedure. www.example.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://www.example.com/.well-known/acme-challenge/yVVUu-ZAHZNKirFivyNPpR1U_Y-cFzIZFjS-GvBD3Qc: "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="tex", example.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://example.com/.well-known/acme-challenge/xjcWuI7zGaZVaD8FXFtiFkoywN1SRGn5bG2Ej-36hN8: "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="tex" IMPORTANT NOTES: - The following errors were reported by the server: Domain: www.example.com Type: unauthorized Detail: Invalid response from http://www.example.com/.well-known/acme-challenge/yVVUu-ZAHZNKirFivyNPpR1U_Y-cFzIZFjS-GvBD3Qc: "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="tex" Domain: example.com Type: unauthorized Detail: Invalid response from http://example.com/.well-known/acme-challenge/xjcWuI7zGaZVaD8FXFtiFkoywN1SRGn5bG2Ej-36hN8: "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="tex" To fix these errors, please make sure that your domain name was entered correctly and the DNS A record(s) for that domain contain(s) the right IP address.

上記のようにwww.とwwwなしはhttpでアクセスできませんのでエラーになります。

これはサーバ移行完了後(DNS設定をwww.もwwwなしも新サーバへ向けたあと)でないとやはりできないものでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

www.とwwwなしはhttpでアクセスできません

というのは、http(ポート 80)で、Webページを公開していないということでしょうか?

http(ポート80)で、Webサーバを使っていない(ポート80にアクセスできない)ということのであれば、確認方法がないので Let's Encrypt では、発行できないと思います。

Let's Encrypt の場合、確認ファイルを置いて、そのファイルにアクセスできることを確認して所有者と判断している以上、確認ファイルを確認できない状況で、SSL証明書を発行できてしまうとドメインの所有者以外が不正に証明書を取得できることになりますので、確認できない状況での発行は無理でしょう。


ドメインが、http(ポート80) を使っている(アクセスできる)ということであれば、対応方法はいくつかあると思いますが、思いついた方法を書いておきます。(サーバー環境の記載がないので、一般論になります。)

  • 新サーバで、稼働している分(new.example.com)だけを作成する。 DNS を旧サーバから切り替えたタイミングで、移転するドメイン(www.example.com, example.com)を順次追加していく。ただし、タイミングによっては、HTTPSで接続できない(警告が表示される)時間が生じることがある。

(通常は、これが正規の方法でしょう。)

  • DNS で、www.example.com, example.com は 旧サーバ、 new.example.com は 新サーバを登録した状態で、新サーバに旧サーバの Webディレクトリを一時的にマウントした状態(NFS over SSH Tunneling や sshfs 等を使う)にする。マウントした旧サーバのWebディレクトリを指定して、新サーバで SSL証明書を発行する。発行後は、旧サーバのマウントを解除する。  

(ドメインと新旧のサーバを管理しているのであれば、これも実現可能でしょう。sshfsを使う場合、旧サーバは、sshでログインできればOKと思います。)

もし、旧サーバで、certbot が使えるなら以下の方法も可能でしょう。

  • DNS の TTLを短めにしておいて、new.example.com の Aレコードを旧サーバに変更して、旧サーバにて SAN に new.example.com も含めた SSL 証明書を作成する。作成した SSL証明書やLet's Encrypt関係ファイルを新サーバに丸ごとコピー。

http(ポート 80)に アクセスできない(Webを公開していない)ドメインの場合は、下記しかないでしょう。

  • Let's Encrypt を使うのを諦めて、他社のSSL証明書を取得する。

たとえば、ドメインの管理者宛(root@ドメイン や admin@ドメイン や whois のドメイン担当者アドレス 等)に確認メールが届くので、届いたメール記載のURLをクリックする等でドメインの所有を確認してSSL証明書を発行できる会社もありますので、そのような会社からSSL証明書の発行を受ける必要があります。
Let's Encrypt 以外のSSL発行会社の場合、SSL証明書発行費用は、有料です。


(2017.10.09 追記)
http でファイル認証できない場合にファイル認証以外の方法で、Let's Encrypt で、SSL証明書を発行する手順を追記

certbot のマニュアルを読み直してみていたら「--manual」と「--preferred-challenges dns」がありましたので、試してみたところ、Web アクセスできないサーバーに対して、SSL証明書を発行することができましたので、追記しておきます。

コマンドラインで

certbot certonly --manual --preferred-challenges dns -d ドメイン

と実行すると、以下のようなメッセージが表示して、キー入力待ちになるので、表示される文字列を対象ドメインの DNS サーバーで、「_acme-challenge」の TXT フィールドに設定します。

Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

v7XXXXXZZZZYYY111222333444455566677788899VU

Before continuing, verify the record is deployed.

DNSの設定が完了したら、キーを押して継続すると 以下のように表示され、DNSに登録したレコードでドメインが認証されて、SSL証明書を発行されました。

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:

  • Congratulations! Your certificate and chain have been saved at:
    /etc/letsencrypt/live/example.com/fullchain.pem
    Your key file has been saved at:
    /etc/letsencrypt/live/example.com/privkey.pem
    Your cert will expire on 2018-01-07. To obtain a new or tweaked
    version of this certificate in the future, simply run certbot-auto
    again. To non-interactively renew all of your certificates, run
    "certbot renew"

  • If you like Certbot, please consider supporting our work by:

    Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
    Donating to EFF: https://eff.org/donate-le

詳しくは、certbot manual オプションマニュアル を参考にしてください。

投稿2017/10/06 08:29

編集2017/10/09 03:03
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kedama

2017/10/06 11:13 編集

やはりFQDNの名前解決が意図しているサーバに向いていない状況では無理ですよね。 何度も設定するのが大変だったので、一度にできないものかと思い質問を上げたのですが認識が甘すぎました。 nginxでのSNI設定が初めての試みだったので、ひとまずnew.example.com, new.example2.comで作成してみましたら問題なく証明書を作成できました。 SNIの設定も問題なくできたので、ひとまず仮で作成した証明書はrevokeしました。(nginxの設定も元に戻しました) サーバ移行完了後、改めて複数FQDNで作成しなおしたいと思います。 ご回答ありがとうございました。
CHERRY

2017/10/09 03:04

ベストアンサーをいただいていましたが、追加で調べてみたら、Web アクセスできなくても発行できる方法があるとわかりましたので、回答を追加修正しました。 もし、可能でしたら追加した方法を試してみてください。
kedama

2017/10/10 01:42

追加のご回答ありがとうございます。 今回のサーバ移転にはあまりもう時間的な猶予がありませんが、別サーバの移転も今後控え ておりますのでそのときに試してみたいと思います。
guest

0

以前、私は同じ問題に出くわしました。
解決する手順を載せてますので、ご確認いただければと思います。

Let’s Encrypt 複数ドメイン用に証明書を取得できない件です。

投稿2017/10/06 03:39

marshmallowy

総合スコア204

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kedama

2017/10/06 11:05

複数指定したFQDNのうち、名前解決できないものが混じっていたのでエラーになっている状況です。 複数のドメインに対してはSNIで対応するので大丈夫です。 サーバ移行後、複数FQDN指定で再度作成するときに参考にさせていただきます。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問