- PR -

opensslのバージョンアップ(apache + mod_ssl)

1
投稿者投稿内容
SUZU
会議室デビュー日: 2004/07/27
投稿数: 6
投稿日時: 2004-07-27 18:34
今更という気もしますがopenssl0.9.7.aからopenssl0.9.7.d
へのバージョンアップについてご質問させてください。

既設のwwwサーバは、openssl0.9.7aをインストール後
apache1.3.31にmod_ssl2.8.18を組み込み構成しております。
(全てソースからコンパイルしてインストールしています)
mod_sslのコンフィグオプションには、--with-ssl=/usr/local/ssl と
しております。

その状況にて、openssl0.9.7dへのバージョンアップを
検討しているのですが、その手順に手間取っております。

既存のopensslを削除し、
(#rm -rf /usr/local/ssl)
新しいopenssl0.9.7dをソースからコンパイルして
インストールする予定です。
インストール先は前回同様、/usr/local/ssl とします。

以上の作業をしたあと、既存のapacheやmod_sslも何らかの
手をくわえる必要があるのでしょうか。

あと、apacheが現在利用しているopensslのバージョンを
確認する方法が何かあるのでしょうか。

openssl version -a というコマンドでバージョンの
確認ができるものの、それは実行したopensslファイルの
バージョンが表示されるようで、実際にapacheから利用している
opensslという訳ではないように思えます。

以上、私の知識不足で説明になっていないかもしれませんが
どうか御教授よろしくお願いします。







あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2004-07-27 20:14
OpenSSL に対して、共有ライブラリとリンクしていたのであれば OpenSSL を再インストールするだけで問題なく動作するはずです。

もし、静的ライブラリとリンクしていたのであれば、Apache または libssl.so (OpenSSL と静的リンクしている方) も再コンパイルする必要があります。

> apacheが現在利用しているopensslのバージョンを
> 確認する方法が何かあるのでしょうか。

共有ライブラリとリンクしているのであれば、適切に LD_LIBRARY_PATH を通してから

$ ldd httpd

または

$ ldd libssl.so

でリンクしているライブラリが分かります。

静的リンクしている場合は、httpd または libssl.so をバイナリエディタで開き、
OpenSSL 0.9.7d という文字列を検索するのば手っ取り早いでしょう (邪道かもしれませんが・・・)。
綾瀬
ぬし
会議室デビュー日: 2002/07/31
投稿数: 393
お住まい・勤務地: どっちも3階
投稿日時: 2004-07-28 09:42
こんにちは。

私はバージョンを調べる時はヘッダ見るようにしてます。
apacheの設定でServerTokens等を変更していなければ、telnet等でhttpdの
ポートに接続してヘッダを取得すれば見れると思います。
SUZU
会議室デビュー日: 2004/07/27
投稿数: 6
投稿日時: 2004-07-28 13:15
さっそくのお返事ありがとうございます。

> OpenSSL に対して、共有ライブラリとリンクしていたのであれば OpenSSL を再インス > トールするだけで問題なく動作するはずです。

私は、
     tar xvfz openssl-0.9.7a.tar.gz
cd openssl-0.9.7a
./config
make
make install

gzip -dc apache_1.3.31.tar.gz | tar -xvf -
cd apache_1.3.31
./configure --prefix=/usr/local/apache --enable-module=so

gzip -dc mod_ssl-2.8.18-1.3.31.tar.gz | tar -xvf -
cd mod_ssl-2.8.18-1.3.31
./configure --with-apache=../apache_1.3.31
--prefix=/usr/local/apache --enable-shared=ssl
--with- ssl=/usr/local/ssl

上記の手順にてopensslとapache + mod_sslをインストールいたしました。
その場合共有ライブラリとなるのでしょうか?
共有ライブラリなどWWWサイトで調べてみたのですが
よく理解できませんでしたのでよろしければ教えてください。

opensslの動作の仕組みをあまり理解していなくて申し訳ないのですが
現在 /usr/local/ssl にインストールされている sslフォルダを
リネームし(ssl → ssl_old)
apacheを再起動(apachectl stop → apachectl startssl)
させても通常通り動作してしまうものなのでしょうか。

opensslの最新版への移行の方法として、
/usr/local/sslフォルダをリネームし、動作しないことを確認後、
最新版を/usr/local/sslへインストールし、正常動作を
確認したかったのですが、ファルダをリネームしても
今までどおり動作してしまうのです。
(https://www.xxx.comへのアクセスが可能である。)

上記の理由から今現在apacheが利用しているopensslの詳細な情報を
得ることができれば、と思ったしだいであります。

> 私はバージョンを調べる時はヘッダ見るようにしてます。
> apacheの設定でServerTokens等を変更していなければ、telnet等でhttpdの
> ポートに接続してヘッダを取得すれば見れると思います。

綾瀬様からいただいた情報をもとに調査をしてみたのですが
telnet xxx.xxx.xxx.xxx 80 と言った方法で正しいのでしょうか。
うまく情報を得ることができなかったのでよろしければ
アドバイス願います。

ご質問ばかりさせていただき申し訳ございませんが
どうかご協力のほど、よろしくお願いいたします。

あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2004-07-28 17:23
ということでしたら、恐らく OpenSSL は libssl.so に静的リンクされていると思われます。

> opensslの動作の仕組みをあまり理解していなくて申し訳ないのですが
> 現在 /usr/local/ssl にインストールされている sslフォルダを
> リネームし(ssl → ssl_old)
> apacheを再起動(apachectl stop → apachectl startssl)
> させても通常通り動作してしまうものなのでしょうか。

静的リンクされていれば、libssl.so の中に OpenSSL のライブラリが丸まるコピーされているので、コピー元が削除されても全く動作に影響を与えません。

> telnet xxx.xxx.xxx.xxx 80 と言った方法で正しいのでしょうか。

ServerTokens Full または未設定の状態で

$ telnet localhost 80
HEAD /index.html HTTP/1.0

とでもすれば、Server というところに、Apache や OpenSSL のバージョンが表示されます。
綾瀬
ぬし
会議室デビュー日: 2002/07/31
投稿数: 393
お住まい・勤務地: どっちも3階
投稿日時: 2004-07-29 14:47
こんにちは。

> 綾瀬様からいただいた情報をもとに調査をしてみたのですが
> telnet xxx.xxx.xxx.xxx 80 と言った方法で正しいのでしょうか。

やり方はあんどれさんが書いてくれてますので省略しますね。

「apache」「telnet」「ヘッダ」「取得」のようなキーワードを提示しましたが、
これらを元にやり方とか調べて頂けました?

これらを各検索サイトに放り込めば、大抵1ページ目に表示される結果の中に
やり方を説明しているサイトが出てきました。

出来れば自分で調べて欲しかったから、あえて答えは書かなかったのですけど。
教わって覚えるのと、自分で調べて覚えるのでは、やはり自分で調べたほうが
良いと思うので、これからもがんばってくださいね。
SUZU
会議室デビュー日: 2004/07/27
投稿数: 6
投稿日時: 2004-08-02 13:24
御教授いただきましたみなさま本当にありがとうございました。
先日無事作業を完了させることができました。

綾瀬様のおっしゃるとおり少し甘えていた部分もあったように
おもいます。
以後は、可能な限り自分の力で解決できるよう努力し、
皆様のように他の人にアドバイスできるような人材を
目指したいと思います。

本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)