Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

w3m がはてなに HTTPS でアクセスできない

(2/26 追記: 解決! id:satob:20060226:p2)
例えば、 Debian sarge で、 w3mはてなのログインページ (https://www.hatena.ne.jp/login) にアクセスしようとすると、次のメッセージが出力される。

unable to get local issuer certificate: accept? (y/n)

これは、 w3m の使用するサーバ証明書が指定されていない(指定されている場所にない)のが原因である。
対策としては、次の手順でサーバ証明書リストを作成し、 w3m から使えるようにすればよい。

$ grep 'ssl_ca_path' /etc/w3m/config
ssl_ca_path /etc/ssl/certs
    • grep でマッチする行がなければ、行を追加すればいい……と思う。
  • 作業用ディレクトリを作る。 Mozilla ソース中の mozilla/security/nss/lib/ckfw/builtins/certdata.txt を Mozilla LXR から持ってくる。
$ mkdir tmp
$ cd tmp/
~/tmp$ wget -O certdata.txt http://lxr.mozilla.org/seamonkey/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
  • w3m のドキュメント README.SSL に含まれている、次の Ruby スクリプト certdata2pem.rb を実行する。 certdata.txt が w3m で使う用のファイルに分解される。
#!/usr/bin/ruby
# Copyright (c) 2001 Fumitoshi UKAI <ukai@debian.or.jp>
#     All rights reserved.
#     This is free software with ABSOLUTELY NO WARRANTY.
#
# You can redistribute it and/or modify it under the terms of 
# the Ruby's licence.
#
# certdata2pem.rb

while line = $stdin.gets
  next if line =~ /^#/
  next if line =~ /^\s*$/
  line.chomp!
  if line =~ /CKA_LABEL/
    label,type,val = line.split(' ',3)
    val.sub!(/^"/, "")
    val.sub!(/"$/, "")
    fname = val.gsub(/\//,"_").gsub(/\s+/, "_").gsub(/[()]/, "=") + ".pem"
    next
  end
  if line =~ /CKA_VALUE MULTILINE_OCTAL/
    data=''
    while line = $stdin.gets
      break if /^END/
      line.chomp!
      line.gsub(/\\([0-3][0-7][0-7])/) { data += $1.oct.chr }
    end
    open(fname, "w") do |fp|
      fp.puts "-----BEGIN CERTIFICATE-----"
      fp.puts [data].pack("m*")
      fp.puts "-----END CERTIFICATE-----"
    end
    puts "Created #{fname}"
  end
end
system("c_rehash", ".")
~/tmp$ ruby certdata2pem.rb < certdata.txt
  • 不要なファイルは削除した後、生成されたファイルを "grep 'ssl_ca_path' /etc/w3m/config" で得られたディレクトリ(ここでは /etc/ssl/certs)に移動する。
~/tmp$ rm certdata.txt certdata2pem.rb 
~/tmp$ sudo mv * /etc/ssl/certs/
  • ファイルの移動先のディレクトリに移動して、 c_rehash コマンドを実行する。
$ cd /etc/ssl/certs/
$ sudo c_rehash

これで、 w3mhttps://www.hatena.ne.jp/login に問題なくアクセスできるようになる。

都市計画

Paul Graham 著/川合史朗監訳「ハッカーと画家 コンピュータ時代の創造者たち」 p.4 の脚注に、次のような記述がある。

日本の都市も醜いが、それは別の理由による。(中略)またヨーロッパ人がローマから継承した大きな都市計画というものも無かった。ほかの原因として、政府と建設会社の癒着もある。

で実際どうなのよ、と Google Maps で見てみました。まず日本。

千葉
電車の窓からの景色が酷く人工的、という京葉線沿いの団地群。 http://maps.google.co.jp/maps?f=q&hl=ja&ll=35.628175,140.079975&spn=0.026685,0.054159&t=k
札幌
SimCity の攻略本で「参考にしよう!」と書かれていた札幌の大通り。 http://local.google.co.jp/local?f=q&hl=ja&t=k&ll=43.060015,141.344733&spn=0.023987,0.040169&t=k
京都
碁盤目ということで、都市計画がなされているっぽい道。 http://maps.google.co.jp/maps?f=q&hl=ja&ll=35.010737,135.757155&spn=0.013445,0.02708&t=k

続いて海外。

ニューヨーク
セントラルパークの東側。 SimCity そのもの。 http://www.google.co.jp/local?f=q&hl=ja&ll=40.773684,-73.954811&spn=0.012431,0.02708&t=k
パリ
放射線状に道が作られているのが分かる。 http://local.google.co.jp/local?f=q&hl=ja&ll=48.874708,2.325583&spn=0.043185,0.108318&t=k
ローマ
こちらも放射線がベース。屋根の色が揃っているのが凄い。 http://local.google.co.jp/local?f=q&hl=ja&ll=41.889999,12.5&spn=0.02444,0.054159&t=k