sos の 作業メモ

プログラミングや英会話学習、マイルや旅行、日常生活など。最近はWebFormなASP.NETのお守りがお仕事です。

日々の生活にhappyをプラスする|ハピタス Gポイント

「今使わないから」こそ、いざという時に動くように準備することが大切

今月から、退職したスタッフの業務の一部を引き継いで、社内で利用するRedmineSubversionとオレオレ認証局の動くシステム一式の管理をやっているのですが、そんなバタバタした中で起こったお話です。

似非root

サーバー管理者としての私のポジションは似非root。作ったプログラムを動かすためにLinuxのサーバーに潜り、日々の業務をこなせる程度のつぎはぎの知識はありますが、根本的にディストリビューションがどうとかカーネルがどうとかには興味も無く、深いところはグループ企業に所属する本職のrootさんにお任せしています。

餅は餅屋と言われるように、プログラマーにはプログラマーとしての、rootにはrootとしてのセンスと知識が必要ですし、そもそも全部自分でやろうなんて時間がいくらあっても足りません。遊びや基礎知識を増やすための勉強ならともかく、プロとしてそれでお金を稼ぐのであれば、己の領分を見極めることが大切だと常に思っています。

引き継ぎ

さて、そんな状況にもかかわらず、

  • SSLTLS、認証の仕組みやASN.1とかDERやBERといったエンコードの仕組みといったバックグラウンドの知識はある
  • 最近まったく弄ってはいないが、Redmine導入当初は結構カスタマイズもしてた
  • Subversionは1.9でGitから覇権を奪い返すに違いない

という事情で、ひとまずこれらの面倒を私のところで見る事になりました。

そのうち丸ごとどこかで立ててもらって、データだけマイグレートしてお役御免を企んでいます(^^;

ちなみに、社内のredmineリポジトリは当然ながらhttpsでのアクセスなのですが、社内セグメント(IPアドレス群)からは証明書のSubjectは特にチェックせずにスルーさせていますので、認証局さえあっていれば、クライアント証明書の内容はそれほど重要視していません。

さて、オレオレ認証局の運営はTinyCA2を使ってGUIで簡単にできますし、前任者立ち会いで実際に新人スタッフの証明書を作成して、引き継ぎ作業も無事に終わっていました。いや、終わっていたつもりでした。

証明書を引き渡した後で、新規発行した証明書で外部から接続できないという一報は受けていたのですが、どんな風に組み込んでどうアクセスしているのかわからないので、ひとまず私も横でみて状況を確認しようという段になって、そのスタッフのかかわっているプロジェクトが納期直前ということもあり、"今使わない"から保留でという意思決定がどこかからなされ、あえなく原因究明の機会が消滅となりました。

緊急事態

それから数日が経ったある日の事、「明日出先で確認したいから証明書を作って欲しい」と、別の人間から夜の10時頃に依頼のメールが届き、運悪く寝ていた私は夜中に証明書を認証し、社内での移動だしメールでいいかと送りつけて再び眠りについたわけですが、翌朝、「外からつながらない」と連絡が入りました。

「あーあ、やっぱりぶっつけ本番だとこういうことになるよな」と、原因の究明を開始。ログを確認するとSSLの認証でこけているのがわかりました。

発行した証明書を自分の証明書と比べても、特に足りない情報もなし。不思議に思ってApacheの設定を確認したところ、OUの設定が引き継ぎ資料と異なっていたという有様。なんとまぁ、前任者によって、私の証明書だけ特別待遇でどこでも入れるように設定がしてあったという顛末でした。

まとめ

結局、私が作成した証明書は全て作り直す羽目となり、 この記事のタイトルが生み出されることとなりました。

これがお客さんに渡すのなら、一旦自分のマシンに入れて実際に外部からの接続が可能な事をチェックしてからにしたのですが、スタッフ向けということでついなおざりにしたのも原因です。

初動の「今使わないから」のくだりで思った、

大して時間もかからないだろうし、逼迫していないからこそ余裕をもってテストに望めるんだけどなぁ。後で痛い目にあわなきゃいいけど…

という長年の経験に基づいたカンは正しかったということです。もっとも、痛い目にあったのは私なのですが(^^;

ということで、以下の言葉で締めたいと思います。

  • 今使わないものでも余裕のある時にテストをし、使えるようにしておくこと
  • 絶対に使わないようなものにまで無駄な投資はしないこと
  • 直感を信じること

あと、他人の書いた手順書は検証しないとだめってのも補欠で追加しておきます(^^;