CentOS6に CentOS5の mod_ssl を上書きする場合
openssl098e
mod_ssl は libdistcache に依存していたため一緒にインストールした。
- /usr/lib64/httpd/modules/mod_ssl.so
- /usr/lib64/libdistcache.so.1
rpm -ivh distcache-1.4.5-23.x86_64.rpm
mod_ssl-2.2.3-92.el5.centos.x86_64.rpm はそのまま入れようとすると依存関係で問題があるため、
centos6のmod_sslを入れたあとに
centos5の中身の mod_ssl.so だけ取り出して /usr/lib64/httpd/modules/mod_ssl.so に上書きする。
service httpd restart
する必要があります。
yum update の回避
/etc/yum.conf に以下記述
exclude=mod_ssl
すでになにか書いている場合は、空白区切りで記述
exclude=puppet mod_ssl
動作確認
ダメだった例(CentOS6のmod_sslを使用)
$ openssl s_client -connect 127.0.0.1:443 \
-CAfile ca.crt -key demouser.key -cert demouser.crt
Enter pass phrase for demouser.key:
CONNECTED(00000003)
depth=1 /C=JP/ST=(略)/emailAddress=(略)
verify return:1
depth=0 /C=JP/ST=(略)/emailAddress=(略)
verify return:1
22061:error:1409441B:SSL routines:SSL3_READ_BYTES:tlsv1 alert decrypt error:s3_pkt.c:1092:SSL alert number 51
22061:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188:
成功例(CentOS5のmod_sslを使用)
$ openssl s_client -connect 127.0.0.1:443 \
-CAfile ca.crt -key demouser.key -cert demouser.crt
(略)
SSL-Session:
(略)
Verify return code: 0 (ok)
ログ
- /var/log/httpd/default/error_log
[Wed Jan 17 03:36:12 2018] [notice] Apache/2.2.15 (Unix) mod_ssl/2.2.15 OpenSSL/1.0.1e-fips configured -- resuming normal operations
[Thu Jan 18 10:28:24 2018] [notice] Apache/2.2.15 (Unix) mod_ssl/2.2.3 OpenSSL/0.9.8e-fips-rhel5 configured -- resuming normal operations
CentOS5からCentOS6に変わった点
(CentOS6.10) 0.9.8zg を mod_ssl.so にする
openssl 0.9.8zg のビルド
yum groupinstall -y "Development tools"
yum install -y \
openssl-devel apr-util-devel apr-devel libselinux-devel zlib-devel
https://ftp.openssl.org/source/old/0.9.x/
から openssl-0.9.8zg.tar.gz
をダウンロード
tar xzf openssl-0.9.8zg.tar.gz
cd openssl-0.9.8zg
# .so を作らない場合 ( mod_ssl.so に含める場合 ※ 1.8MBほどと大きくなります。 )
./config no-asm -fPIC shared no-shared
# もしくは
# .so を作る場合 ( /usr/local/ssl/lib/libssl.so.0.9.8 が作られ、mod_ssl.so を起動するときに必要になります。)
./config no-asm -fPIC shared no-shared
# もし prefix 指定したい場合
./config no-asm -fPIC shared no-shared --prefix=/opt/openssl-0.9.8zg
make -s
make install
# /usr/local/ssl/ にインストールされます。
httpd 2.2 のビルド
http://vault.centos.org/6.10/os/Source/SPackages/httpd-2.2.15-69.el6.centos.src.rpm
をダウンロード
# 作業場所の準備
cd /root
mkdir rpmbuild
cd rpmbuild
mkdir BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
# ソースのインストール
rpm -ivh httpd-2.2.15-69.el6.centos.src.rpm
- --enable-ssl --with-ssl \
+ --enable-ssl --with-ssl=/usr/local/ssl \
rpmbuild --quiet -bb /root/rpmbuild/SPECS/httpd.spec
- /root/rpmbuild/RPMS/x86_64/mod_ssl-2.2.15-69.el6.x86_64.rpm
が出来上がる。この中に mod_ssl.so があるのでそれを使えば良い。
CentOS 7.7.1908 でも openssl 0.9.8zg が使いたい場合
- openssl-0.9.8zg.tar.gz のインストールまで同じ。
src.rpm のダウンロード
http://vault.centos.org/7.7.1908/os/Source/SPackages/httpd-2.4.6-90.el7.centos.src.rpm
rpm -ivh httpd-2.4.6-90.el7.centos.src.rpm
yum install -y xmlto lua-devel systemd-devel libxml2-devel
cd /root/rpmbuild/SPECS
- --enable-ssl --with-ssl --disable-distcache \
+ --enable-ssl --with-ssl=/usr/local/ssl --disable-distcache \
モジュールの読み込み設定ファイルは以下。
- /etc/httpd/conf.modules.d/00-ssl.conf
CentOS 7.7.1908 で openssl 1.0系をビルドして使ってみた
0.9.8時代の自己署名証明書がそのまま動いた。試したバージョンは以下。
- 1.0.0s
- 1.0.1u
- 1.0.2r
wget https://ftp.openssl.org/source/old/1.0.0/openssl-1.0.0s.tar.gz
(略)
./config no-asm -fPIC shared no-shared --prefix=/opt/openssl-1.0.0s
wget https://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1u.tar.gz
(略)
./config no-asm -fPIC shared no-shared --prefix=/opt/openssl-1.0.1u
wget https://ftp.openssl.org/source/old/1.0.2/openssl-1.0.2r.tar.gz
(略)
./config no-asm -fPIC shared no-shared --prefix=/opt/openssl-1.0.2r
その他
- nghttp2 /apache2.4 インストール編 - Apache 2.4系でHTTP/2対応サーバを構築してみるテスト。 のページが各バージョンのサポート期限など書いていて詳しい。
version | サポート期限 | 備考 |
---|---|---|
0.9.8 | 2015年12月31日 | |
1.0.0 | 2015年12月31日 | |
1.0.1 | 2016年12月31日 | 1.0.1e 〜 TLSv1.1, TLSv1.2 に対応 |
1.0.2 | 2019年12月31日 | |
1.1.1 | 2023年12月31日 | TLSv1.3 に対応 |
- Apache 2.4.37 にて OpenSSL1.1.1とTLSv1.3に対応。(CentOS8に標準で入っているバージョン。)