49
62

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 3 years have passed since last update.

LinuxにApacheとOpenSSLをソースからビルドしてインストールする

Last updated at Posted at 2014-11-16

こちらの記事がとても良記事だったので、ビルドの勉強のために自分でやってみました。

Apache HTTP Serverのビルドを始めよう

自分でソールからビルドしてみると、共有ライブラリ(=ダイナミックリンクライブラリ,シェアードライブラリ)や.soファイルの仕組みがよくわかるようになります。

環境

CentOS 6.5
httpd 2.2.29
openssl 1.0.1j

他のディストリビューションでもやり方はほとんど同じだと思います。

ターゲット構成

/opt/openssl/ にopensslをインストール
/opt/httpd/ にApacheをインストール

準備

ビルドに必要なパッケージを入れます。

# コンパイルするのに必要
$ sudo yum install -y gcc make
# opensslをビルドするのに必要
$ sudo yum install perl zlib-devel

opensslをソースからビルドしてインストール

$ wget https://www.openssl.org/source/openssl-1.0.1j.tar.gz
$ tar xvfz openssl-1.0.1j.tar.gz
$ cd openssl-1.0.1j
$ ./config --prefix=/opt/openssl shared zlib
$ make
$ sudo make install

確認

$ /opt/openssl/bin/openssl version
OpenSSL 1.0.1j 15 Oct 2014
$ ldd /opt/openssl/bin/openssl
        linux-vdso.so.1 =>  (0x00007fff236db000)
        libssl.so.1.0.0 => /opt/openssl/lib/libssl.so.1.0.0 (0x00007f5237454000)
        libcrypto.so.1.0.0 => /opt/openssl/lib/libcrypto.so.1.0.0 (0x00007f5237076000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f5236e6e000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f5236c58000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f52368c3000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f52376bf000)

libssl.soとlibcrypto.soが、自分で入れた/opt/opensslにリンクされていることを確認します。

Apacheをソースからビルドしてインストール

$ wget http://ftp.jaist.ac.jp/pub/apache//httpd/httpd-2.2.29.tar.gz
$ tar xvfz httpd-2.2.29.tar.gz
$ cd httpd-2.2.29
$ ./configure --prefix=/opt/httpd --enable-mods-shared=all --enable-ssl --with-ssl=/opt/openssl
$ make
$ sudo make install

./configure --with-ssl=/opt/opensslと、自前でいれたopensslにリンクするように指示するのがポイントです。

mod_ssl.soの動的リンクを確認

mod_ssl.soがちゃんとopensslライブラリにリンクしているか確認します。

$ ldd /opt/httpd/modules/mod_ssl.so
    linux-vdso.so.1 =>  (0x00007fff04d4e000)
    libssl.so.1.0.0 => not found
    libcrypto.so.1.0.0 => not found
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffc9b03b000)
    libc.so.6 => /lib64/libc.so.6 (0x00007ffc9aca7000)
    /lib64/ld-linux-x86-64.so.2 (0x00007ffc9b48c000)

はい、リンクされていません。
このままではmod_sslが動きません。

opensslのライブラリパスを通す

$ export LD_LIBRARY_PATH=/opt/openssl/lib

または

$ sudo sh -c 'echo /opt/openssl/lib > /etc/ld.so.conf.d/openssl.conf'
$ sudo ldconfig

確認

$ ldd /opt/httpd/modules/mod_ssl.so
    linux-vdso.so.1 =>  (0x00007fff94dff000)
    libssl.so.1.0.0 => /opt/openssl/lib/libssl.so.1.0.0 (0x00007f830f748000)
    libcrypto.so.1.0.0 => /opt/openssl/lib/libcrypto.so.1.0.0 (0x00007f830f36a000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f830f14d000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f830edb9000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f830ebb5000)
    libz.so.1 => /lib64/libz.so.1 (0x00007f830e99e000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f830fbe5000)

できました!

これでApacheを起動すれば、自前ビルドしたopensslを使ってSSL通信ができるようになります。

49
62
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
49
62

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?