ろば電子が詰まつてゐるスマートフォン用の表示で見るろば電子が詰まつてゐる2018-07-25Firefoxと認証局証明書(信頼されたルート証明機関)Firefoxは、Chromeとは違い、デフォルトで信頼する認証局(トラストストア;Windowsで言う「信頼されたルート証明機関」)が内部にハードコードされている。ChromeはWinでもMacでもOSのトラストストアを参照する。いうことで、Firefoxのソースコードからこのリストを取り出そうとしたのだけど、いろいろ面倒だったのでメモ。OpenSSLはトラストストアを持たないため、Firefoxの(すなわちMozillaの)トラストストアを流用するケースなどを想定。Firefoxのソースと認証局証明書Firefoxのデフォルトの認証局証明書は、ソースツリーでは以下のcertdata.txtにある。https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txtしかし上記ファイルは、次のように一般的な形式(PEMなど)では書かれておらず、OpenSSLなど他のアプリでそのまま利用することはできない。MULTILINE_OCTAL\060\127\061\013\060\011\006\003\125\004\006\023\002\102\105\061\031\060\027\006\003\125\004\012\023\020\107\154\157\142\141\154.....(省略).....これは、Firefoxのビルド時にこのcertdata.txtからcertdata.cが作られてコンパイルされるため、Cで扱いやすい形式で書かれた歴史的理由による(たぶん)。いうことでこれを解決するにいくつかの方法がある。curlプロジェクトの配布物を利用curlはhttpsにも対応していることから、トラストストアと密接に関連している。いうことで、curlプロジェクトが独自にcertdata.txtをPEMに加工したものを配布している。https://curl.haxx.se/docs/caextract.htmlこれは比較的定期的に更新されており、ちゃんとメンテナンスされているため、特に理由が無ければこれを使えばいい。世の中にはもちろん、「オレはcurlプロジェクトは信頼ならん」という人もいるだろうから、そういう人は自分でcertdata.txtを加工する必要がある。Langley氏の書いた以下のツールが有名で使いやすい。convert_mozilla_certdata.goするだけ。Langley氏も信用ならんということであれば、自分でツールを書くしかない。この際にはまる罠を紹介しておく。自前でcertdata.txtの加工スクリプトを書く場合、ハマりがちなのがこのDistrustの罠である。certdata.txtは、やっかいなことに「信頼されない(Distrust)証明書」もまぜこぜにして格納されている。有名なモノは、侵入者により偽証明書が発行されてしまったDigiNotarのものである。MULTILINE_OCTAL\060\137\061\013\060\011\006\003\125\004\006\023\002\116\114\061\022\060\020\006\003\125\004\012\023\011\104\151\147\151\116\157\164\141\162\061\032\060\030\006\003\125\004\003\023\021\104\151.....(省略).....上記の、「CKA_LABEL」に"Distrust"があることに注意して欲しい。これは、信頼してはいけないルート証明書なのだ。そのため自作ツールでは、これらを取り除く処理をしないといけない。関する罪」の情報公開請求をしました月別アーカイブはてなブログをはじめよう!ozumaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。