#前提条件
某クレジット与信サービスのSSL仕様変更に伴い、
CentOS5.5のApache2.2にNSSを導入する羽目になった…という話。
素直にCentOS6系でサーバリプレースシロ!という正論には耳を貸したいが貸せないのが辛い…。
さらに本サーバ、ApacheやPHPなども全てソースからインストールされているため
yumでも色々と問題が起き、全部ソースから入れることになっているんだってば。
情報漁っても碌なものが無かったので、どこかのだれかのために記す。
#NSSインストール
ちなみにここを参考にしています。
http://lfsbookja.osdn.jp/BLFS/svn.ja/postlfs/nss.html
まず、ソースコード拾ってくる。nsprも一緒に入ってるのを選択。
$wget http://ftp.mozilla.org/pub/security/nss/releases/NSS_3_19_4_RTM/src/nss-3.19.4-with-nspr-4.10.10.tar.gz`
$tar xvzf nss-3.19.4-with-nspr-4.10.10.tar.gz
$cd nss-3.19.4
まず同梱のnsprのインストール実施
$cd nss-3.19.4/nspr
$./configure;make;make install
続いてNSS。
$cd nss-3.19.4/nss
$make BUILD_OPT=1 \
NSPR_INCLUDE_DIR=/usr/include/nspr4 \
USE_SYSTEM_ZLIB=1 \
ZLIB_LIBS=-lz \
$([ $(uname -m) = x86_64 ] && echo USE_64=1) \
$([ -f /usr/include/sqlite3.h ] && echo NSS_USE_SYSTEM_SQLITE=1)
以下のエラーがでて、make失敗。
Error: no such instruction: `xgetbv`
どうもgccが古すぎるようなのでgcc44をyumでインストール
$yum remove gcc*
$yum install gcc44
$cd /usr/bin
$ln -s gcc44 gcc
nssの再make…失敗
sdb.c:271: error: implicit declaration of function 'sqlite3_file_control'
sdb.c: In function 'sdb_FindObjectsInit':
sdb.c:725: error: implicit declaration of function 'sqlite3_prepare_v2'
make[2]: *** [Linux2.6_x86_64_glibc_PTH_64_OPT.OBJ/sdb.o] エラー 1
make[2]: ディレクトリ `/home/src/nss-3.19.4/nss/lib/softoken' から出ます
make[1]: *** [libs] エラー 2
make[1]: ディレクトリ `/home/src/nss-3.19.4/nss/lib' から出ます
make: *** [libs] エラー 2
sqlite3.3は導入されていたが、どうもバージョンが3.8である必要があるようなので
思い切ってmakeオプションから除外。
$make BUILD_OPT=1 \
NSPR_INCLUDE_DIR=/usr/include/nspr4 \
USE_SYSTEM_ZLIB=1 \
ZLIB_LIBS=-lz \
$([ $(uname -m) = x86_64 ] && echo USE_64=1)
無事にmakeが通ったんで、インストール
$cd nss-3.19.4/dist &&
install -v -m755 Linux*/lib/*.so /usr/lib &&
install -v -m644 Linux*/lib/{*.chk,libcrmf.a} /usr/lib &&
install -v -m755 -d /usr/include/nss &&
cp -v -RL {public,private}/nss/* /usr/include/nss &&
chmod -v 644 /usr/include/nss/* &&
install -v -m755 Linux*/bin/{certutil,nss-config,pk12util} /usr/bin &&
install -v -m644 Linux*/lib/pkgconfig/nss.pc /usr/lib/pkgconfig
#mod_nssのbuild
以下を参考にしつつ
http://iws.cs.uni-magdeburg.de/~elkner/tmp/mod_nss.html
ファイル取得
$wget https://fedorahosted.org/released/mod_nss/mod_nss-1.0.12.tar.gz --no-check-certificate
$tar xvzf mod_nss-1.0.12.tar.gz
$cd mod_nss-1.0.12
$autoreconf -ivf
$./configure --with-apxs=/usr/local/apache2/bin/apxs --with-nspr-inc=/usr/include/nspr4 --with-nss-inc=/usr/include/nss3
$gmake all instal
./configureのオプション部分でずいぶん悩んだが結果としては上記で通った。
それぞれの場所はちゃんと環境に合わせて変更するように。
#mod_nss設定
管理用のDBファイルの設定が必要となるんでその生成(本当はこのへんでsqlite3が使われてる様子)
apache2が/usr/local/apache2にあるという前提で、DBファイルは
/usr/local/apache2/nssに設置するとする。
NSSCertificateDatabase /usr/local/apache2/nss
nss.confの上記に指定する。
$mkdir /usr/local/apache2/nss
$./mod_nss-1.0.12/gencert /usr/local/apache2/nss
$cd /usr/local/apache2/nss
$ls -1
cert8.db
key3.db
secmod.db
このDBファイルにapacheがアクセス出来る必要があるので
権限変更してやる。
apacheがnobodyユーザーとnobodyグループで起動しているとして(httpd.conf確認ね)
$cd /usr/local/apache2/nss
$chmod 640 *.db
$chown nobody:nobody *.db
$chown nobody:nobody .
んで、apache起動
$/usr/local/apache2/bin/apachectl start
パスワード聞かれるが初期パスワードは
gencert実施した際に表示されているものとなる。
これで一応apacheは起動した。
あとは、nss.conf自体の設定だが、
こっちはまだ終わってないので本記事はここまでです(ぉぃ
nss.confの設定方法情報がホシィ