サーバ話(Let’s Encryptその後2)

ということで、4月の更新期を迎えたのだが…やっぱりうまくいかない。期限切れの警告が来る。さすがにこうなるとのんびりと構えてもいられないので、もう一度cron自動実行期限を今朝に設定し直してみたけど、実行はされるけどやっぱり更新されない。したがってスクリプト自体に問題がある。
もう一度スクリプトのリファレンスを読み直してコマンドをよーく見てみたら、「–non-interactive」が抜けていることを発見。interactiveとはつまり対話のように質問に答える形での進行のことで、それをキャンセルするオプション。これがないと対話式の実行になり、つまり画面で返事をしないと進まなくなる。そりゃーすすまないわ。
なおしたけど、また2ヶ月も待てないのでしかたなく手動で自動実行スクリプトを実行してみたら、次。こんどは何も言ってこないはずなのにエラーメッセージだけはしっかり返ってくる(T.T)戻ってきたエラーメッセージいわく「Missing command line flags. For non-interactive execution, you will need to specify a plugin on the command line. 」自動実行するには設定が足りないんだけど…というお叱り。
再びリファレンスを読み直してみたら「–non-interactive」を使うにはプラグインを明示的に指定しなければならない、と。さてプラグインは何を使っているのか?指定した記憶もないのでデフォルトだろうけど、デフォルト値を探し出して改めて指定しなければならないわけで。
まあ、プラグインは3種類しかないので、とりあえず最初に出てきた「apache」を指定してみた。すると今度は「The apache plugin is not working; there may be problems with your existing configuration.」うーん。でも、調べて見ると他のプラグインを使うには相当あれこれ設定する必要があるので、そんなことをした記憶が無い以上、そんなはずもなく…(TOT)
で、先のエラーメッセージでググってみたら、どうもこれはウェブサーバapache2.2側のバグらしく対処法がないらしいという情報が出てきた。
(蛇足:この手の英語のエラーメッセージは、そのままそっくり検索するとけっこうヒットする。多くは同じように困った人がコミュニティの掲示板に質問して助けを求めている場合。うまくいくとそこに解決法も書き込まれていることがある。ダメでも今回のように原因だけはわかる…全部英語だけどね^^;なのでここにも載せておけば、もしかしたら世のため人のためになるかもしれない、誰が見ているかわからないけどね)
しかたないので、ほかのプラグインを使うことにして、2番目のプラグイン「webroot」を指定。自分のSSL証明書は1枚でいくつかのドメインをカバーするように作っていたので、代表ドメインのデータパスを指定していればいいと説明にはあったのでそのとおりにして実行したら、案の定またエラーメッセージ…代表以外のドメインが軒並みエラーに。一つでもエラーがあるとまとめて全部更新されない。
もうこうなるともうめんどくさい、力業でいいや〜ということで、すべてのドメインのデータパスを全部突っ込んでみたら、やっと成功…「おめでとさん」というメッセージが返ってきた。やれやれ、ということでサイトにアクセスして証明書を確認したら、何も変わっていない。でもサーバー上の証明書は確かに今日に日付になっている。はて??
結局、Apacheサーバを再起動したらなんとか更新された証明書でサイトが表示されました。この2番目のプラグインwebrootはサーバを止めなくても更新ができるという触れ込みだったんだけど、どうやら更新はできるけどそれを反映させるにはサーバを再起動しなければならない、ということのよう。なんのこっちゃ、ですが。
これで一応スクリプトでの更新はできたので、これを自動実行させればいい…はず。
できあがった最終的なコマンドをここにのせようかとも思ったけど、とにかく本当にうまく行ってから(爆)にしますわ。その確認はまたまた2ヶ月さきの6月まで更新時期を待たなければならないのでね。乞うご期待(笑)