1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS5.5へのNSS及びmod_nss導入(途上)

Last updated at Posted at 2015-12-03

#前提条件
某クレジット与信サービスの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に設置するとする。

/usr/local/apache2/conf/nss.conf
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の設定方法情報がホシィ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?