mcommit's message

ソフトウェア開発の仕事をしているsimotinといいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

Let's encript Failed authorization procedure ではまった

Let's encryptを使ったSSL証明書取得に挑戦してみたのですが、ハマりました。

3日ほど、色々ためした挙句、無事証明書を取得できたので、注意点など書いておきたいと思います。

参考にさせて頂いたサイト・記事

こちらのサイトの参考にさせて頂きました。ありがとうございます。

tsuchikazu.net

qiita.com

やりたかったこと

CentOS6.7上のNginxでWebサービスを立てているのですが、これまで使っていたStartSSLの証明書の期限が切れるので
Let's encryptに移行しようと思い上記サイトを参考にコマンドをたたいてみましたが正常に証明書が取得できませんでした。

実行コマンド


sudo ./letsencrypt-auto certonly --webroot --webroot-path ドキュメントルートのパス -d ドメイン

何度コマンドを実行しても、

Failed authorization procedure

のエラーメッセージが出てきます。

認証の流れ

証明書取得のコマンドである、
./letsencrypt-auto

Pythonスクリプトですが、指定されたドキュメントルートに認証用のページデータを作成し、そのページに外部からアクセスできれば認証OKと判断しているようです。

どうもうまく動かないので、エラーメッセージでググったりした後、Nginxのアクセスログを見ながらコマンドを実行してみると、そもそもそれらしいアクセスが見当たりませんでした。

...



...



...



...



...

はい。


数秒考えて、原因分かりました。


そうです。火の壁が原因でした。

Let's encrypt ははInternet Security Research Group (ISRG)という海外の団体が運営しているそうです。

letsencrypt.org

不正アクセス対策のため、アメリカからのアクセスを含む海外からのアクセスはシャットアウトしていたのをすっかり忘れていました。

mcommit.hatenadiary.com


というわけで、一時的にファイアウォールを無効化し、再度コマンドを実行してみるとあっさりと証明書が取得できました。
証明書取得後はWebサーバの設定ファイル内で証明書・秘密鍵のパスを記載してあげるだけで更新作業は完了です。

はまったといっても、自分で作った落とし穴に自分で落ちたような感じでした。

失敗しすぎ注意!

ちなみに短時間の間に何度もコマンドの実行に失敗すると、認証やりすぎってことで注意されます。


There were too many requests of a given type :: Error creating new authz :: Too many invalid authorizations recently.
Please see the logfiles in /var/log/letsencrypt for more details.

感想

Let's encrptは証明書が楽に取得・更新できてとても便利ですが、海外からのアクセスに対しファイアウォールの設定をされている環境では注意する必要がありますね。

サーバの管理って、ちょっとしたことでもやったことが無かったり、久しぶりに触ったりすると結構な確率ではまる気がします。


nginx実践入門 (WEB+DB PRESS plus)

nginx実践入門 (WEB+DB PRESS plus)