備忘録
Let’s Encrypt の更新からはじまったハマりごと
Root証明の問題は告知されていたようだが、完全にスルー状態で
突然、センサーノードからのデータが止まった・・・
偶に起こるGWの不具合かと思いきや、2ノードから次々と停止
幸い、GWを見るカメラがあるので確認するとどうやら動いている?(何で??)
APIサーバのアクセスを確認すると、アクセス形跡がない・・
ただ、他に動いているノードはあり、その2台は同時にアクセスがなくなったわけではない
手元の同種のGWを起動して通信テストをすると、なんとエラー発生・・・
ログを見ると、証明書の検証ができない、とのこと
「あっ・・・」証明書を更新したタイミング、失敗したか?
調べるとこの記事
とにかく、シンボリックリンクを書き換え、1つ前に戻したが、更新期限間近・・・
GWは古いOSなので、root証明がないのが原因
ルート証明を手に入れて、端末に登録すると通信は再開
しかし、止まってしまったGWは遠い場所・・・
いろいろ回避できないかやってみたが、httpsという形でアクセスするようにプログラムしてあるので、どうにもならない感じ(どうにかできてしまうと、それはそれでセキュリティ上問題)
一方端末側は、ソフトにroot証明を組み込もうと思ったがうまく行かず、証明書検証をスキップするクラスを作り(Google先生に聞いた)無視するのはうまくいった
が、やはりそれはよろしくないのと、結局、遠いGW設置場所でプログラム書き換えが必要なので、現場に行くならRoor証明を端末に登録する方法にすることとする
が、行くタイミングが中々とれず、お金で解決することに
JPRSの証明書ならば 1,000円程度なので自腹を切って購入(古いOSも大丈夫との確認済み)
で、CSRを作成し・・・
久々にやったので、とりあえず手順通りに・・・
パスフレーズ設定・・・なんか心にひっかかたが、手順通りに設定
とりあえず購入、ドメイン確認になったが。これも忘れていいて、検証ファイルの置き場所に手間取る
APIサーバはnginxを使っていて、基本的に素のアクセス(デフォルト/のみ)経路はAPIやその他に飛ばしている
通常、Let’s Encryptの更新時は、一瞬nginxを止めてApacheを動かして、すぐ戻すとしているが、今回は検証が済むまで(いつアクセス来るかわからない)APIが止まってしまうので、nginxも書き換えて検証用のパス設定
ようやく、証明書が発行される
インストールしてnginxを再起動・・・エラー・・・・
まいった・・・server.keyが読めないと・・・
ここで、心にひっかかったパスフレーズを思い出し、解除(これ前に同じことやった気がする)
さあ、これで!と思いきや
今度は証明書が読めない!とエラー・・・まいった
と思ったら、いろいろ変更していた(シンボリックリンクとか)ファイル名が間違っていただけでした
これでようやく復旧
1点感じたのが、この一連の作業は現在レンタルサーバ向けにシステムが作られており、多くの解説がそのシステムの使い方手順になっているので、自分の環境には合わない。
忘却の彼方にある手順を思い出しながら(Google先生に頼り)実施したが、これで良いのだろうか?という疑問。
仕組みというか、構造がわからないまま設定、使うのは何だか気持ち悪い。コンソール端末でキーボードを叩くのもう古いのだろうか・・・確かに面倒なのだけど
そういえば、Let’s encryptの更新時に出てたエラーも確認しておかないと、別のところでハマるかも・・・orz