• 締切済み

Apache2.0がX509_freeというエラーでSSLの起動ができない。

環境は RedHat7.3 httpd-2.0.54.tar.gz openssl-0.9.7g.tar.tar sslはsharedで入れたい 主にhttp://solaris.ddo.jp/apache-ssl.htmlを参照 このサイトでmv cacert.pem cacert.pem.orgはcp cacert.pem.org cacert.pemにした configureは変更(文字数オーバで省略) そしてstartsslで下記エラーです ./apachectl startssl Syntax error on line 251 of /usr/local/apachetest/conf/httpd.conf: Cannot load /usr/local/apachetest/modules/mod_ssl.so into server: /usr/local/apachetest/modules/mod_ssl.so: undefined symbol: X509_free ./apachectl -tはSyntax OK httpd.confの251行目は LoadModule ssl_module modules/mod_ssl.so mod_ssl.soのlddはOKと思います configureから4回やり直したがだめ 最後のインストール時の: ./configure \ --enable-mods-shared=all \ --enable-so \ --prefix=/usr/local/apachetest \ --with-ssl=/usr/local/ssl 1回目からprefixは変更してません。変更ファイルは残るので鍵の再作成はしていません。 sslでない起動はできてます。 どなたか現象の原因や解決策に心当たりがありましたら投稿願います

みんなの回答

回答No.4

同じエラーに苦しみ、検索したら、 ここにたどり着いた、後の自分のためにメモ。 まず、参照するサイト http://www.stackasterisk.jp/tech/systemConstruction/apache09_01.jsp http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=10&topic=2695 ここを参照すれば、ほとんど解決 [簡単にメモ] opensslのconfigureは -fPIC shared 両方つけてコンパイルしてOK --prefix --openssldir だとかを設定しないと、/usr/lib/ssl/openssl.cnfを見に行くようになることがあるので注意。  これで、make install。 次に、opensslのライブラリを読み込む必要があるが、 1) ldconfigでsslライブラリを読み込むなら /etc/ld.so.confに/usr/local/ssl/libと書き込んで、ldconfig実行libssl.so.0.9.7だとか、他のSSL関連LIBがloadingされていればOK 2) LD_LIBRARY_PATHを追加 /usr/local/ssl/libをLD_LIBRARY_PATHに設定してればOK  apache側は ./configure --with-ssl=/usr/local/ssl --enable-modules="so ssl" とso sslを設定すること。 --enable-mods-sharedでso sslを設定してもOK   こんなもんで、X509_freeのエラーは無くなる。  まぁ、いい加減だけど、ここまで書けば、残りのこまかいところは、やれるかな。

ApacheBeginner
質問者

お礼

goooog_2005様 回答ありがとうございます。 また、お礼が遅くなって、大変失礼致しました。 遅くなった言い訳ですが、 先週末自宅でgoooog_2005様から回答を頂いたことを知り、 ちょうど今週はApache触れる時間が取れるはずだと思っていたので、 試してみてから結果を合わせて返事を書こうと思っていたのです。 しかし、結局触れないまま、1週間たってしまった、 といった状況です。 現状、この作業自体が仕事として必要が無くなり、 あとは個人的なstudyの扱いになってしまい、 ますます時間を作るのが厳しくなってしまいした。 教えてgooからは、今日も締め切ってください とメールが来てしまいましたが・・・ いつまで締め切らずにいられるのだろう。。 goooog_2005様には大変失礼をしてしましました。 また、回答書いていただいて本当にありがとうございました。

  • entree
  • ベストアンサー率55% (405/735)
回答No.3

OpenSSLをmod_sslに対して静的に組み込むか動的に組み込むかによってやり方が異なります。 A.静的に組み込む場合 1. OpenSSLを以下のオプションでConfigureします。 ./config -fPIC no-idea no-rc5 この-fPICというのが非常に重要です。 2. Apache-2.0.54をインストールします。 ./configure \ --enable-mods-shared=all \ --with-ssl=/usr/local/ssl 3. 全ての作業が終わればOpenSSLのインストールディレクトリはバッサリと削除してしまって問題ありません。 B.動的に組み込む場合 (正式サポートされていません) 1. OpenSSLを以下のオプションでConfigureします。 ./config -shared no-idea no-rc5 2. Apache-2.0.54をインストールします。 ./configure \ --enable-mods-shared=all \ --with-ssl=/usr/local/ssl 3. /etc/ld.so.confを編集し、/usr/local/ssl/libを追加します。

ApacheBeginner
質問者

お礼

entree様 回答ありがとうございます。 OpenSSLは、configオプションを何も指定せずにインストールしていました。 openSSLも動的に組み込まないといけないかどうかは、 会社の資料を参照しないとわからないのですが、 確認後、試してみようと思います。 あ、会社の資料というのは、別で導入テスト してみないといけないApacheのプラグインがあって、 そもそもmod_sslをsharedでというのは、 そのプラグインの仕様です。 申し上げにくいのですが、本日からGWで、 教えていただいたことを試させて頂くのが、 5月中ごろの予定です。。 試した後、うまくssl起動できるかどうか、 また報告致します。 本当にありがとうございます。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

mod_sslをshared(DSO)という事でいいんですよね? 1. opensslの共有ライブラリ(shared libraries)を以下の手順で作成し、インストールしてください。 ちなみにINSTALLに「Note on shared libraries」という項目があるので一度参照してください。 それを参照して、共有ライブラリを作成したくない場合、mod_sslはstaticでApacheに組み込んでください。 # ./config shared # make # make test # make install 2. ldconfigコマンドや環境変数LD_LIBRARY_PATH等で、1.でインストールしたライブラリがサーチ出来るようにする。 また、Apacheの起動時も同様にopensslのライブラリがサーチ出来る状態になっている必要があります。 例:ライブラリが/usr/local/ssl/libにある場合 ・Borne shell系 # LD_LIBRARY_PATH="/usr/local/ssl/lib:$LD_LIBRARY_PATH" # export LD_LIBRARY_PATH ・csh系 # setenv LD_LIBRARY_PATH /usr/local/ssl/lib:$LD_LIBRARY_PATH 3. Apacheのインストール # ./configure --prefix=/usr/local/apachetest \ --with-ssl=/usr/local/ssl \ --enable-so \ --enable-mods-shared="all ssl" ※オプションは必要に応じて変更してください。 上記設定で、DSO(shared)なモジュール。 -------8<-------8<-------8<-------8<-------8<------- DSO_MODULES=' access auth auth_anon auth_dbm auth_digest ext_filter include log_config log_forensic env mime_magic cern_meta expires headers usertrack unique_id setenvif ssl mime dav status autoindex asis info cgi dav_fs vhost_alias negotiation dir imap actions speling userdir alias rewrite' -------8<-------8<-------8<-------8<-------8<------- # make # make install 4. 念のための設定 システムが再起動してもopensslのライブラリが参照出来る設定(ldconfig等)が行われるならこの作業は不要。 apachectlコマンドと同じ場所にenvvarsというLD_LIBRARY_PATHを設定するapachectlから呼ばれるシェルスクリプトがあるのでそこに1.でインストールしたライブラリがあるディレクトリを追加しておく。 これで、SSL使用でApacheを起動させて起動するか確認してみてください。

ApacheBeginner
質問者

お礼

Lean様 2度も回答して頂いて本当にありがとうございます。 昨日は早い時間で帰ってしまったので、 お礼が遅くなってごめんなさい。 ほかの方への返信でも申し上げていますが、 教えていただいたことを試させて頂くのが、 5月中頃の予定です。。。 試した後、Apacheがssl起動できるかどうか、 また報告致します。 本当にありがとうございます。 教えてgooには、ダメもとで書いてみたのですが、 まさか、こんなにたくさん回答をもらえるとは 思っていませんでした。 休みの前日になってから投稿したことを、 もう一日でも早く投稿していればと後悔しています。

  • Lean
  • ベストアンサー率72% (435/603)
回答No.1

configure実行時、--enable-sslを指定していますか? 指定していないなら、--enable-sslを追加してconfigureを実行してみてください。 % ./configure --help <途中、省略> Optional Features:  --enable-ssl SSL/TLS support (mod_ssl) <以下、省略>

ApacheBeginner
質問者

お礼

Lean様 さっそくの回答ありがとうございます。 --enable-ssl=shared を指定してインストールしていました。 ですが、解決できないので、 http://www.yggdrasil.jp/bbs/smplbbs.rhtml?limit=all のサイトの通りのオプションでconfigureしたのを最初の質問欄に記載しました。 文字数がオーバーしたので、省略してしまったのですが、1回目と2回目のconfigureは下記の通りです。 一回目のインストール時のconfigure: ./configure \ --prefix=/usr/local/apachetest \ --with-ssl=/usr/local/ssl \ --disable-ipv6 \ --enable-rule=SHARED_CORE \ --enable-module=so \ --enable-module=expires \ --enable-module=headers \ --enable-module=usertrack \ --enable-module=vhost_alias \ --enable-mods-shared=all \ --enable-ssl=shared 一回目のインストール時のconfigure: ./configure \ --prefix=/usr/local/apachetest \ --with-ssl=/usr/local/ssl \ --enable-mods-shared=all \ --enable-ssl=shared \ --enable-so \ --enable-cgi \ --enable-expires \ --enable-headers \ --enable-usertrack \ --enable-vhost-alias 何か、お気づきの点がありましたら、ご教授いただけたらと思います。 回答を書いていただいて、ありがとうございます。

関連するQ&A