水曜日, 5月 06, 2015

openssl更新後、パッケージとの共存

現在想定しているパッケージのうち、opensslを利用しているじゃね?と思って調べてみた状況は以下の通り。
  • openssl
    • さて、これはどうしてやろうか。そのまま入れ替えてしまえ
  • openssh(
    • ibcryptoだけじゃね?
  • perl
    • やべー、みあたらねぇ。
  • php
    • パスをコンパイル時点で指定してるんじゃ => 要再ビルド?
  • httpd
    • mod_sslで使っている。きっと、シンボリックリンクだけでいいはず? エラーが出たらビルドしなおす。

がありますね。

前回はパッケージを使ってインストールすると、どういう風にプログラム側からopensslを欲しているかを確認しました。

一部わからないものがありましたが、それに関してはこのopenssl適用作業実施時にエラーなりが出た時に分析と対処によってはっきりさせていきたいです。

linuxをちゃんと理解して、opensslのライブラリを参照している人たちがどういう風に参照しているかを知っていれば問題ないのでしょうが、残念ながらopensslに依存しているぞ!っていうパッケージがあまりにも多すぎる。

そして、面倒になったので、CentOSだけにします。
もしかしたら、Debianもあとあと書くかもしれません。

OpenSSL入れ替え

openssl本体

https://gist.github.com/tluna/1d4df2d4da86fd1d0180#file-centos-change-openssl

opensslのso達

単にmoduleを入れ替えるだけではだめ。
もしかして、srpmとか見たら、専用のパッチとか当たってたりするのかな。(versionに関しては明示するようにしても、エラーになるし)

影響を受けて、wget, ssh sshd perl phpが全滅というお粗末さ。(phpは仕方がないにしてもよ。)

ものすごい時間かかってますね。これ。

引き続きしらべるけども。(virtualboxに引きずられてMacごと強制終了されちゃっているっぽい現象が)

あー。。。。仮説だけど、それぞれのプログラムってddlのバージョンが1.0.1eであることを期待してたり、、、する?
と思って色々やってみたけど、以下の原因でだめ

試してみたのは、openssl1.0.1e openssl1.0.1m ともにsoファイルにバージョン情報の付与をするかのオプションを追加。追加なしのパターンを用意

openssh

libcrypto.soでエラー(ssh/sshdともに)

httpd

libphp5.so,mod_ssl.soでそもそもsegmentation fault。。。。辛い。

php

version提示するようにしても、そんなバージョンしらんと言われる。

perl

通る。どっちでもOK

んー。srpmに入っていたパッチの中でバージョン情報に関するパッチを適用するとか、結構追って追ってしないとダメっぽい気がしてきた。

少し動的リンクについて見てみると、今のやり方では通らない気がしてきた。
 共有ライブラリーを解剖する http://ibm.co/1Ig3Jjv