自堕落な技術者の日記

基本は喰ってるか飲んでるかですが、よく趣味でカラオケ・PKI・署名・認証・プログラミング・情報セキュリティをやっています。旅好き。テレビ好きで芸能通

C++

pathfinderという証明書のパス検証フリーウェア試用奮闘記(泣) (第2話)

一昨日は悔しい思いをしたのでw、OpenSSLのDebian鍵脆弱性の時に作ったUbuntu環境を引っ張りだしてきて、pathfinderをインストールしてみることにした。

以下、備忘録的に、、、

% aptitude install openssh-server
■ D-Busのビルドに必要そうなパッケージのインストール
% apt-get install -s dbus (1.1.20だったので古すぎ)パッケージは使わなかった
% apt-get install autoconf
% apt-get install automake
% apt-get install libtool
% apt-get install expat
% apt-get install libexpat1-dev
■ D-Busのビルド
% ./configure
% make >& make.log &
% tail -f make.log
% make install
■ WvStreamsのビルドとインストール
% ./configure
Configure: error: C++ preprocessor "/lib/cpp" と出たので以下を実行
% apt-get install g++
% apt-get install libssl-dev
% make >& make.log &
% tail -f make.log
% make install
■ pathfinderのビルドとインストール


途中、パッケージのインストール中で再起動を求められたんですが、再起動後ネットワークアダプタが認識されなくなってしまいました。orz

どうやらD-Busが悪さをしているようです。結局、pathfinderのインストールまで辿りつけませんでした。

かなり心が折れている、、、

たかがパス検証なのに、どうしてこんなにも、どうでもよいパッケージに依存しているのかと、、、

pathfinderという証明書のパス検証フリーウェア試用奮闘記(泣) (第1話)

本当はやらなければならないことが山積しているのに、現実逃避でpathfinderというRFC 5280のパス検証に準拠したフリーソフトが公開されたようなので早速試してみた。特徴はこんなとこらしい

・証明書の署名値検証
・名前チェーン検証
・基本制約の検証
・証明書ポリシの検証(含ポリシーマッピング)
・鍵使用法の検証
・OCSPによる失効検証
・ブリッジCAを含むパス検証にも対応しているっぽい
・AIA拡張によるパス構築も対応してるっぽい
・C++で書かれているっぽい。

ソースコードはここ(code.google.com)からダウンロードできるようで、今日の時点でバージョンは1.1.2(2009.09.23版)だった。

インストール


ソースコードのみの配布なので、ビルドしないといけない。cygwin環境でやることにする。以下のものが多分必要になる。
・g++
・cmake

インストール先はデフォルトでよいので(cmakeを使ったことないのに)cmake一発してみることにする。

% cmake .


あえなくエラーで敗退。何やらサードパーティーのライブラリとして
・D-Bus
・WvStreams
・OpenSSL (まぁこれはあるけど)
が必要なんだそうだ。

バージョンの指定も無いので仕方なくD-Busのサイトからdbus-1.3.0.zipをダウンロードした。雰囲気的にDebianならバイナリパッケージがありそうだった orz

同様にWvStreamsの公式サイトから辿って、wvstreams-4.6.1.tar.gzを落としてきた。


再戦(1):WvStreamsのビルド



公式サイトのトップに親切にもビルド法が書いてあるので有難くその通りやる。

% tar -xzvf wvstreams-4.6.1.tar.gz
% cd wvstreams-4.6.1
% ./configure
% make (as root:)
% make install


で、"./configure"してみたんだけどエラーが、、、

configure: WARNING: DBUS is missing.
configure: WARNING: PAM is missing.
configure: WARNING: Qt is missing.
configure: WARNING: Valgrind is missing.
configure: WARNING: readline is missing.
configure: WARNING: both tr1/functional and boost/function.hpp are missing.
configure: error: Required dependencies missing: boost/function.hpp


tr1やらboostって何って調べてみるにC++の標準ライブラリの拡張案Technical Report 1の実装のようだ。最近、C++に疎いので全然しらなかった。つ〜〜か、なんでg++には入ってないんだろう、、、老人にはビルドは辛いので是非標準でTR1を実装して頂きたい。

段々、面倒臭くなってきたorz

Boostのインストール


Boostの公式サイト(www.boost.org)からバージョン1.40.0のアーカイブをダウンロードして(おいおいソースtgzで40MBもあるよ)ビルドしようとしたんですが、cygwinで良く見たらboostパッケージあったよ。有難くパッケージインストールする。cygwinを良く見ましたが、D-BusとWvStreamsはパッケージは無いことを確認した。

D-Busのインストール


WvStreamsはD-Busを使うようなので、D-Busから先にインストールすることにした。

% ./configure --prefix=/usr
% make
% su make install


でいけるそうだ。gettextとexpat or libxml-2を必要とするらしい。cygwinのlibxml-2-develパッケージをインストールした。

で、ええいっ、、、っと"./configure"してみるも"./configure"が無いじゃ〜〜〜ん。autoconfなのかな。わからないのでcmakeディレクトリに下りて

% cd cmake
% cmake .


してみた。cmakeはうまくいったようだ。で、

% make


う〜〜む、ビルドエラーだ。

cmakeはだめみたいだ。"autoconf"にするか、、、、仕方なく、cygwinのautoconf、automake、libtool(libtoolizeが入っている)のパッケージを追加する。でコンフィグレーション用のスクリプトがあるようなので実行してみる。

% ./autogen.sh


MD4に関して警告が出たが無視してしまった。

Now type 'make' to compile dbus.


と出たので、どうやら"./configure"ファイルの生成と実行はうまくいったようだ。

% make


で、エラー。どうやらshared library版をつくるためのオプションが間違っているようだ。libtoolまわりの記述がいけないのかもしれない。面倒なのでstaticだけにしてしまう。

% ./configure --enable-static --disable-shared


で、

% make >& make.log &
% tail -f make.log


とりあえず、D-Busのビルドは順調に進んでいるように見える、、、と思ったらコケた。多分aclocal.m4、acinclude.m4のマクロが処理できていないっぽい。autoconfから戻るか。

さきほどの"autogen.sh"の実行時の警告では、

libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.in and
libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.


と出ていたので、"configure.in"をいじって

修正前
AC_INIT(dbus, [dbus_version])
修正後
AC_INIT(dbus, [dbus_version])
AC_CONFIG_MACRO_DIR([m4])


とすることにして、再度 "autogen.sh" を実行した。警告は無くなり無事 "configure" が実行されたようだ。(毎回こんなことを書いている。)また、staticライブラリのみにするようconfigureを再実行してビルドする。

% ./configure --enable-static --disable-shared
% make >& make.log &
% tail -f make.log


う〜むだめだエラーだ〜〜〜。dbus-sysdeps-unix.cがダメっぽい。

D-Busをソースからcygwinにインストールするのは諦めることにする。

たまたま、D-Busをちょっと古いけどcygwinパッケージにして配っているところを発見したのでこれを使ってみることにする。

http://ftp.daum.net/cygwin/release-2/dbus/


URLを指定して普通にはセットアップできなかったので、パッケージファイル(.bz2)を手でダウンロードして、

- dbus-1.2.16-1.tar.bz2
- libdbus1_3-1.2.16-1.tar.bz2
- libdbus1-devel-1.2.16-1.tar.bz2
を /tmp などで
% bunzip2 -dc dbus-1.2.16-1.tar.bz2 | tar xvf -
して、
% cp -r usr /
% cp -r etc/dbus-1 /etc
etc/{postinstall,preremove}を参考に
% mkdir -p /var/lib/dbus
% /usr/bin/dbus-uuidgen --ensure


すれば、D-Bus 1.2.16のパッケージはインストールできたのではないかと思う。

長かった、、、orz

再戦:WvStreamsのインストール



WvStreamsのインストールに戻ることにする。

% ./configure


D-Busは1.2.14以上が必要なようだ。D-Busが使えるようになっていることを一応確認した。

configure: WARNING: DBUS is missing.
configure: WARNING: PAM is missing.
configure: WARNING: Qt is missing.
configure: WARNING: Valgrind is missing.
configure: WARNING: readline is missing.
configure: WARNING: both tr1/functional and boost/function.hpp are missing.
configure: error: Required dependencies missing: boost/function.hpp


相変わらず、D-Busが無く、Boostも無いと怒られたorz

% ./configure --with-dbus --with-openssl


pkg-configがいるみたいだぞ。cygwinのパッケージを追加した。段々、頭きた。相変わらずTR1かBoostでは怒られる。

cygwinのBoostのパッケージのインクルードファイルの場所を見てみたら

/usr/include/boost がないので
% cd /usr/include
% ln -s boost-1_33_1/boost boost


これで、ようやく configure はうまく通った(やれやれ)。ビルドしてみる。

% make >& make.log &
% tail -f make.log


あらら、、、再度 configure しちゃってる(泣)。気長に待つことにする。あらら、やっぱりダメだった。

./include/wvtask.h:27:22: ucontext.h: No such file or directory
./include/wvtask.h:57: error: `ucontext_t' does not name a type


cygwinはUser Thread Contextが実装されていないので"ucontext.h"も無いため、そりゃビルドできないわけだ。

うむむ、残念、今日はこれくらいで、、、

方法が他に見つからないようならcygwinはあきらめて、Debian(Ubuntu)でビルドしてみることにします。
最新記事
Categories
Archives
Twitter
記事Google検索

本ブログ内をGoogle検索
Yahoo!アクセス解析
Travel Advisor
記事検索
QRコード
QRコード
  • ライブドアブログ