Amazon Certificate Managerで完全自動更新を設定する際に気をつけること

ちょっとハマったのでメモ。

まとめ

  • ACM で手作業を完全に廃して自動更新するには DNS でドメインの検証を行う必要がある
  • その場合、指定ドメインか www で HTTPS 接続を受け付け、対象の ACM 発行証明書でレスポンスを返す必要あり
  • この証明書に矛盾があると自動更新は適用できない

参考

ハマったのはワイルドカードと更新時の検証と www の関係

ハマった環境の状態

  1. 人間向けドメインである www はフルマネージドホスティングで SSL 証明書の自動更新を設定している、つまり非 ACM の証明書
  2. その他のドメインは丸ごと ACM でワイルドカード証明書を発行

ここで 1 と 2 の証明書の発行元が食い違っている。食い違っていても発行自体はできる。DNS で CNAME 設定が正しくできればよいだけ。

問題は更新時。更新の際には

に従って ワイルドカード証明書の検証のために www にアクセスがくる。例えば

*.example.com

の証明書を発行していたとして、その検証のために

www.example.com

に HTTPS のリクエストがくる。

ここで www が ACM の証明書を返さないと「自動更新資格が使用不可」という状態になる。ACM 管轄外の証明書に対して自動更新を適用することはできないと判断される。

※ ちなみに、今回はワイルドカード証明書をやめることで矛盾を解消して自動更新の方を優先した。

RTMのタグを集計用に再検討した

2年ちょい前にRTMでタグ付けするぜーって今さらな話をしていたんだけど、

RTMのタスクにタグ付けするようにしてみた - あーありがち(2009-09-07)

これをもうちょっと細分化することにした。具体的には「作業の種類」ではなく「プロジェクト」という単位をタグ上で表現するためのもの。

参考にしたのはこれ。

mitukiii.jp | RTMの使い方を自分用にカスタマイズ

prefix を使うのはうまいなぁと思いつつ、記号の意味を覚えられそうな気がしなかったのと、名前空間増やしたくなったらどうしようと思って、自分の場合は以下のようにしてみた。

  • 仕事のプロジェクトは pb_ を prefix にして pb_XXXXX
  • 仕事 biz じゃないプロジェクトが増えてきたときに pp ( project private ) みたいにして増やしやすい
  • プロジェクト以外が入ってきたらまた考える

また、作業の種類に

  • organize
  • report

を追加した。

organize は要するに RTM や milestone そのものについて悩んでいる時間と考えていいかな。

以下はこれらを考えていたときの tweet の転記。

tweet の埋め込み、楽になったなぁ。

上で言っている「作業の種類」は例えば reading とか develop など。reading はよほど難解なものでない限りは時間の見積もりがそれなりに正確になるはず。対して develop はある程度の揺れを見込んでおく、などの目安になる。

一方、集計の際には作業の種類だけでなく「何のための作業なのか」が大事になってきたりする。これが記録されていれば、例えば「案件A」に何時間、「案件B」に何時間掛かった、ということが完了済みタスクから分かるようになる。

今回のタグの追加はこの集計のために考えたもの。実際には先日の gyunyu を使って抽出して集計していくつもり。

crontabの書き換えミス防止にWheneverを使おうとして失敗

crontab -e で自分用 reminder

sleep 300 && growlnotify -s -m 'どん兵衛'

てなことも普段やっているんだけど、経過時間ではなく時刻指定で alert を上げてほしいこともよくある。タスクに名前の付くものは Remember the Milk を使っているんだけど、そこまででもない小さなものは cronteb -e して自分用の crontab にそのまま書いてしまうこともある。

crontab の設定ミスに気づかない

ところがこの crontab の設定を時々間違える。致命的な文法ミスなら crontab -e で開いたエディタを終了したときにチェックが走って怒られるんだけど、そういうレベルでは見つからないミスをする。

また、/etc/crontab のレベルなら何度も確認をするのでミスがあってもすぐに見つかる。しかし crontab -e のレベルではそこまで確認しないのでミスがあってもなんとなくスルーしてしまう。

そこでチェックツールか何かないかと思ったけど、見つからないので反対の方向に考えてみた。

Whenever を試してみたものの

crontab の記法だからミスしてしまうので、crontab 以外のもっと分かりやすい記法で書いて crontab に変換すればいい。そういやそんな発想の Whenever っていう Gem があった。

javan/whenever - GitHub

Whenever は crontab を書き換えることもできるのだけど、今回はシステムの crontab ではなくあくまで個人のものなので、

Whenever::Output::Cron.new

を直接呼んでみることにした。例えばこんな感じ。

irb> Whenever::Output::Cron.new( 'sun', 'echo', '10:00' ).output
=> "0 10 * * 0 echo"

なんかちょっと使いにくい。

もうちょっと簡単にできないかと思い、Whenevrer が時刻指定の parse に使っている Chronic を読んでみた。

mojombo/chronic - GitHub

けど、Chronic 自体はほんとに parse しかしてない。crontab 形式に format するのは Whenever の仕事。

で、Whenever の中で parser を探すと、どうも頑なに frequency を設定しようとしている。つまり、

単純な reminder にはオーバースペック

らしいということが分かった。

結局、未だに何一つ変わってない。うーん。本格的に欲しくなったら DateTime.parse ベースでシンプルなやつを自分で書いた方がいいかもしんない。

RTMの運用方法をiPod中心に変更

これまで

この夏にようやくRTMを本格的に使い出して以来、

RTMのリマインダ -> ケータイメール

で全部のスケジュールとその日一日のタスクを通知させていた。

しかし昨年末にPocketWifi + iPod touch体制に移行するに当たって、iPod touch 中心の運用に変えてケータイの方はパケット代を思い切って節約することに決めていた。

また、iPod touch にはせっかくカレンダーアプリがあるので、これで情報の俯瞰を行いたいと考えていた。ケータイにはリマインダは飛ばしていたけど結局その場限りの通知でしかなく、全体の把握には PC のブラウザが必要という状況がちょっと面白くないなと感じていた。

RTM -> カレンダー同期方法探訪

なぜか

  1. RTM -> Google Calendar ( 3rd party cookie )
  2. RTM -> Google Calendar ( private address )
  3. Google Calendar -> iPod

の情報ばかり見つかる。

1 については 3rd party cookie を許可してブラウザ上でだけ Google Calendar と RTM を連携させる方法なので、最終目的が iPod な自分としては嬉しくない。

ところが 2 がどうにもうまくいかない。時間が掛かるという情報はあったが、丸1日経っても同期される様子はないので、何かが間違っているんだろうという漠然とした予想をもとに利用を断念。

ちなみにプライベートアドレスは要するに十分複雑な URL ってだけ。

cf. Remember The Milk 日本版 公式ブログ » Tips : プライベートアドレスを活用しよう

どうにもならないので、Pro アカウントにして iPhone アプリで直接同期してみた。これは確かに通知にも対応していて便利。便利なんだけど、RTM はあくまで RTM なので、カレンダー上で一覧するという使い方ができないのは iPhone アプリでも同じ。

やはり目的は

iPhone / iPod touch のカレンダーアプリで俯瞰もしたい

ということなので、これだけではちょっと納得いかない。

実は直接「照会」できた

アカウントを追加

これもしかして iPhone OS 3 以降の機能かなにかでブログ記事があまりないのかもしれないけど、実は iPhone のカレンダーは RTM のプライベートアドレスから直接 iCal 情報を読み込んで表示させることができる。わざわざ Google Calendar を経由させる必要はまったくなかった。

方法は

[ 設定 ] -> [ メール / 連絡先 / カレンダー ] から [ アカウントを追加 ]

を選び、アカウントの種類は [ その他 ] を選ぶ。

[ 照会するカレンダーを追加 ] を選んでここに iCal の URL を直接入力してやれば ok.

もちろん「照会」なのでカレンダーの編集はできないけど、今のところ RTM の Pro アカウントアプリを持っているのでそこは困らない。今後どうなるかは分からないけど、しばらくこれでいいか。

うん、やっぱカレンダーで俯瞰するとタスクリストだけでは気づけないことが分かるなぁ。

その他から照会するカレンダーを追加

というわけで Google Calendar は相変わらずうまく活用できずに2010年を迎えているのであった。なんか個人的にうまくハマらない。

通知はどうしているか

  • Google Calendar <-> 「カレンダー」同期では「カレンダ」ーの方で通知が機能する
  • RTM -> 「カレンダー」照会では通知情報が落ちるので「カレンダー」の通知は機能しない

ということで、RTM を起点にしてしまうと「カレンダー」の「通知」は機能しない。

  • RTM Pro アカウントアプリで独自に通知できる

のだけど、いずれにせよ RTM の「リマインダ」がキーになる。まぁ以前のようにメールが来まくって、どうせ RTM の通知だなと思ってその他のメールのチェックが疎かになってしまうよりはアプリの通知の方がいいんだけど、iPod touch にはバイブがないし、普段ボリュームを上げまくっているわけでもないので、意外にこの通知に気づかない。

結局、本当に大事な時間はケータイのアラームやスケジュール、常用 PC 上の Lightning や cron + growl など、補助ツールを使うことにした。若干手間は増えたけど通知が多すぎて疎かになってしまうよりはマシかなと思っている。

ついでに他のも照会している

イントラのカレンダーも必要なものは入れてしまうことにした。結局いくつカレンダーがあっても自分の時間軸は一つしかないので、必要な情報は全部手元にないと意味ないなと思った。

うん、いい感じ。

携帯のバイブが壊れたがなぜか寝坊しない

なんかどうも数日前から携帯のバイブ機能が壊れているような気がしていたが、最近はどういうわけか目覚ましの鳴る時間の直前くらいに目が覚めていたので「アレ?気のせいかな?」とも思っていた。それにしちゃメールの着信とか全然気づかないし変だなとは思っていたんだけど。

しかし確信した。壊れている。そして連日奇跡が起きている。

今日も目覚ましの鳴るはずの時間の直前に目が覚めた。そして指定の時間になるまで携帯を見つめていたがやはりアラームは働いていた。しかしバイブのみにセットしてあったため何の意味も成していなかった。いやーなんだろ、こんなところで運を使っていていいのか。

XML_HTMLSax3 が stable になったと同時にメンテナ不在に

PEAR :: Package :: XML_HTMLSax3

タイトルですべて。

この package は well-formed な XML じゃなくても解釈できる、なかなかの優れもの。well-formed な XML, XHTML しか相手にしないなら SAX 関数とかでもいいんだけど、これがあれば結構 HTML 相手でも頑張って解釈してくれる。

RC1 をずっと使ってたんだけど、stable だよーやったよーと思っていたらこんなことに。うーむ。

まぁね。PHP 5 + well-formed X(HT)?ML しか相手にしないならこんなの要らないしね。

爆弾低気圧直撃食らいました

電車が1時間半遅れたうえに途中でバスへの乗り換えを余儀なくされました。しかしちょっと時間に制限のある移動だったので代行バスを捨ててタクシーへ。初めてタクシーで高速に乗ったよー。いやー高速代なんて全然メじゃないくらい高かったよー T_T (※ のだめの実家に向かう千秋が使ったタクシー代より高いはず)

ボランタリーサポートは極力しない

つきあいサポートの断り方・家族/友人編 (スラッシュドットジャパン国民投票)

私は同じことを何度も言ったりやったりしなくていいようにサイトを作りました。そしたらそっちが面白くなっちまったわけですが。

調べろ。メモしろ。当時近くに居た人間はかなりやかましく言われたので何も聞いてこなくなりました :-)

Cygterm 設定してみた

なぜなら K6-2 になったので最新の ck が動かなくなったからorz 1

構成

putty のインストール

アーカイブを展開して適当なところにつっこむ

Cygterm のインストール

  • source げと
  • 展開して中を覗く
  • Makefile の中の
BINDIR = $(HOME)/bin

でインストール先を設定して

  • make install

この段階は横着して cmd.exe から bash 起動してやった。

putty の設定

  1. 接続先は localhost:20000(cygterm.cfg の設定範囲内なら自由)で telnet2
  2. ローカルエコー off
  3. ローカル行編集 off
  4. セッションに名前をつけて保存

で ok. 実際の接続は cygterm 経由で起動しないと使えないのでここでは専用のセッションを保存するだけで終了。

ls とかで日本語使いたいなら

  1. [ウィンドウ] → [変換] で受信データは [MS_Kanji] とみなす
  2. ls に option –show-control-chars

とする。そうした場合は .bashrc などに

export LANG=ja_JP.SJIS
if [ "$LANG" = "ja" -o "$LANG" = "ja_JP.SJIS" ]; then
        export JLESSCHARSET=japanese-sjis

..emacs に(私は emacsen 派なので)

(set-terminal-coding-system 'shift_jis)

が必要。

Cygterm の設定(cygterm.cfg)

TERM で putty などの terminal の位置を指定。パスが通っていないならフルパスで。

TERM = C:\usr\local\putty\putty.exe -load "cygterm" %s -P %d
TERM_TYPE = xterm
PORT_START = 20000
PORT_RANGE = 40
SHELL = /bin/bash --login -i
ENV_1 = MAKE_MODE=unix
ENV_2 = HOMEPATH=/cygdrive/d/home
  1. TERM の段階で putty の引数に telnet を加える方法も見つけたけどそれはうまくいかなかった。
  2. TERM_TYPE は putty が xterm って言うてるので xterm にしておく(食い違っちゃうとあれこれややこしいので気をつける。)
  3. "cygterm" はさっき保存した putty のセッション名
  4. /cygdrive/d/home は自分のホームディレクトリの場所に変更

上の設定のまま cygwin から ssh などで他のホストに繋いで文字コードが食い違うとややこしいのでそんなことはするな3

使い方

cygterm.exe を起動するだけ。

つーことで

cko で全部 cygwin からやってたときより、putty で ssh するようになった今の方がマシンスペックに反して速いです。やっぱ cygwin の ssh は遅いんだなぁ。

[追記] 思わず cygterm 上で scp とか打ってしまうので alias scp=pscp.exe しておく。remote で ~ の展開をしてくれないけどこれでかなり便利になった。

  1. unofficial の Win9x 向けビルド(http://homepage3.nifty.com/k-takata/mysoft/cko-w9x.html)や自前ビルドで対応は可能です。 

  2. Raw だと login してなさげ。.bashrc とか読んでないです。 

  3. 方法はあるけどそこまで一つの terminal で解決しなければいけないとも感じないし。 

やっとメールの移行解決

昨日分かった方法でメールの取り込みをしたんだけど、なんと今まで使っていたメールボックスで文字コードが混在していたorz 取り込んでから気づいて直そうといろいろやってみたんだけど、逆効果。Datula でエクスポートした段階でこの問題を解決してしまわないといけないのであった。

なんで混在していたかというと、最初の一ヶ月ほど sesna を使っていて、こいつの保存したデータが sjis なのであった。しかし Datula は混在してても何の警告も出さずにメールを蓄え続け、そのままフツーに動いていた。頼もしいっちゃ頼もしいけど今にして思うとなんか怖い。

しかし Thunderbird 重いな。

ガーン < コマンドライン引数

Perl でも Getopt モジュールで処理できんぢゃん。今度からこれ使うかな。ARGV 直なめはもうやめよう。ということを Ruby のマニュアルを見て気づくおれ。

eclipse の DAV プラグインの使い方が分かんねぇ

ま、そんだけ。eclipse すごそうですな。

しかし今さらながら Dreamweaver や GoLive の DAV クライアントはよくできてるんだなぁと感心。やっぱ単純な SMB 共有なんかでコンテンツ管理しちゃダメです。絶対。

Namazu と PHP の活用方針を考えた

休みの間に DAV 三昧しておりましたが、説教講座の設計方針も考えておりました。

とりあえず今まで勘違いしてたのだけど、Namazu は PHP のファイルもちゃんとスクリプト部分をよけてインデクシングできるらしい(^^;1 てことは、PHP を活用する場合、「CGI のようにプログラムからデータファイルを呼び出す」という感じではなく、あくまで「HTML を主、スクリプトを従」の関係を守り、一つ一つのファイルを作っていくと、うまみが吸えるってことですな。

まぁその考え方が xrea でちゃんと通じるのか確認してないのですが(^^; とりあえず PHP の活用方針は決まりました。大物は書くまい、と。(書けるのかというツッコミが聞こえるなぁ…。)

そうすっと、できあがるコンテンツのイメージは Zope の DTML オブジェクトを書いていくような感じになるのね、と一人納得してみたり。

  1. スクリプト部分をよけるための正規表現が最左最長一致でハマりそうな書き方なのはこの際置いておこう。 

OpenSA 続き

OpenSA を入れたついでに以前から興味のあった WebDAV してみた。しまいにゃ Apache 2 のコンパイルだのなんだの頑張ってみた。結果、

  • バージョン管理まで視野に入れると Apache 2 がよいが、Apache 2 用の mod_encoding はちょっとバージョンが遅れている。
  • 手軽にバージョン管理を実現できる GUI なクライアントがない。(ひょっとすると最新の Dreamweaver とか GoLive はイケるのかもしれない。)

てな具合なので、バージョン管理まで WebDAV で全部やっちゃおうってのは現段階ではちょっと欲張りすぎな気がしてきました。そこで自分サーバを含めたお手軽 DAV 活用としては、「https + BASIC 認証」で FTP を使わずにセキュアなファイル転送ができまっせ、くらいな感じだろか。1

mod_encoding も諦めるなら OpenSA だけで実現できますし。

ん。つーことは、実は SFTP もいらんのけ? Windows 標準の DAV クライアントは https もイケんのか? イケるとしたらもう DAV + SSL がいちばん手軽なんかも。

  1. いや、まぁダイジェスト認証の方がよいんでしょうが。 

About

例によって個人のなんちゃらです