Let's encryptを使ったSSL証明書取得に挑戦してみたのですが、ハマりました。
3日ほど、色々ためした挙句、無事証明書を取得できたので、注意点など書いておきたいと思います。
やりたかったこと
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)という海外の団体が運営しているそうです。
不正アクセス対策のため、アメリカからのアクセスを含む海外からのアクセスはシャットアウトしていたのをすっかり忘れていました。
というわけで、一時的にファイアウォールを無効化し、再度コマンドを実行してみるとあっさりと証明書が取得できました。
証明書取得後は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は証明書が楽に取得・更新できてとても便利ですが、海外からのアクセスに対しファイアウォールの設定をされている環境では注意する必要がありますね。
サーバの管理って、ちょっとしたことでもやったことが無かったり、久しぶりに触ったりすると結構な確率ではまる気がします。
- 作者: 久保達彦,道井俊介
- 出版社/メーカー: 技術評論社
- 発売日: 2016/01/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る