サマリー
##やろうとしたこと
admin1, admin2 サーバの openssl の入れ替えを yum で行おうとしたらyumのパッケージが古かった。
↓
しかたなくソースから入れよう
##やってしまったこと
srcをとってきてからrpmにしてっていう手順を調べていたら
webで丁度いい例を発見。
↓
盲目的にコマンド連打。
↓
opensslのバージョンアップ成功!確認もOK!
↓
安心して同じ作業を別のサーバでやろうとして
rpm を admin2 に scp しようとしたら
できない。。
※このサーバはsshが死ぬと物理的にそこまでいかないといけない。
そしてだいぶ遠くにある。。
なんとかした方法
rsync プロトコルで通信
↓
openssl のバージョンを元に戻すことに成功
#詳細
##失敗に至るまで
openssl を入れ替えるぞー
[root@admin01 src]# yum install rpm-build -y
[root@admin01 src]# rpmbuild -ta openssl-0.9.8za.tar.gz
[root@admin01 src]# rpm -Uvh --nodeps /usr/src/redhat/RPMS/x86_64/*.rpm
準備中... ########################################### [100%]
1:openssl ########################################### [ 33%]
2:openssl-devel ########################################### [ 67%]
3:openssl-doc ########################################### [100%]
入れ替え確認
OpenSSL 0.9.8za 5 Jun 2014
よし入れ替わった!
apache が再起動できない。
/usr/local/apache2/bin/httpd: error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory
wget もできない。
wget: error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory
yum できない
Traceback (most recent call last):
File "/usr/bin/yum", line 4, in ?
import yum
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 50, in ?
import config
File "/usr/lib/python2.4/site-packages/yum/config.py", line 27, in ?
from parser import ConfigPreProcessor
File "/usr/lib/python2.4/site-packages/yum/parser.py", line 3, in ?
import urlgrabber
File "/usr/lib/python2.4/site-packages/urlgrabber/__init__.py", line 53, in ?
from grabber import urlgrab, urlopen, urlread
File "/usr/lib/python2.4/site-packages/urlgrabber/grabber.py", line 412, in ?
import keepalive
File "/usr/lib/python2.4/site-packages/urlgrabber/keepalive.py", line 339, in ?
class HTTPSHandler(KeepAliveHandler, urllib2.HTTPSHandler):
AttributeError: 'module' object has no attribute 'HTTPSHandler'
よく見たら依存関係無視オプションがついていた!!!
完全に孤立した。。
##解決策
サーバ自体は死んでいない。
sshができないだけ。
opensslだけ元のバージョンに戻してやればOKのはず。
だがsshができないと大体の通信コマンドが死んでしまう。。
そこで、
rsync プロトコル!
隣のサーバからモジュールを渡す!
uid=root
gid=root
[export]
path=/tmp
comment= export path
read only=false
[root@admin01 src]# rsync --daemon -v --config=/etc/rsyncd.conf
admin2 にてopnesslの思しきバージョンを取得。
[root@admin02 src]# wget http://ftp.riken.jp/Linux/centos/5/updates/x86_64/RPMS/openssl-devel-0.9.8e-27.el5_10.3.x86_64.rpm
admin2 から admin1 へ rsync !
取得確認!
openssl-0.9.8e-27.el5_10.3.x86_64.rpm
openssl-devel-0.9.8e-27.el5_10.3.x86_64.rpm
rpm でバージョンダウン!
準備中... ########################################### [100%]
1:openssl ########################################### [100%]
[root@admin01 src]# rpm -Uhv --oldpackage /tmp/openssl-devel-0.9.8e-27.el5_10.3.x86_64.rpm
準備中... ########################################### [100%]
1:openssl-devel ########################################### [100%]
さっきダメだった wget を再度確認する。
--2014-06-06 17:24:17-- http://yahoo.co.jp/
10.105.128.16:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 301 Moved Permanently
場所: http://www.yahoo.co.jp/ [続く]
--2014-06-06 17:24:17-- http://www.yahoo.co.jp/
10.105.128.16:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
index.html に保存中
[ <=>
2014-06-06 17:24:17 (4.81 MB/s) - `index.html' へ保存終了 [22276]
wget が生き返った!!!
あとは openssl-0.9.8za を別ディレクトリにインストールし、apache2.2 を再コンパイル!
1時間ほどごにょごにょやって apache2.2 + openssl の入れ替え完了!
#オチ
[2014/06/06 19:21:06] おりたさん : ありがとうございます!
[2014/06/06 19:29:05] おりたさん : ちなみに松井さんはyum updateでよかったらしいです
https://rhn.redhat.com/errata/RHSA-2014-0624.html
[2014/06/06 19:30:17] おりたさん: openssl-0.9.8e-27.el5_10.3.x86_64.rpm
これCVE-2014-0224対応済みのパッケージ