• 締切済み

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

  • Apache1.3にmod_sslを追加インストール

    こんにちは。 まず、Apacheをインストールします。 tar zxvf apache1.3.33.tar.gz cd apache1.3.33 ./configure --enable-shared=max make make install このあとに、mod_sslを追加しようと思いインストールします。 tar zxvf mod_ssl-2.8.24-1.3.33.tar.gz cd mod_ssl-2.8.24-1.3.33 ./configure --with-apache=../apache1.3.33 --enable-ssl=/usr/local --enable-shared=max cd ../apache1.3.33 make make certificate make install そうすると下記のエラーになってしまいます。 [root@localhost apache_1.3.33]# /usr/local/apache/bin/apachectl startssl [Sat Sep 10 23:28:58 2005] [warn] Loaded DSO libexec/mod_mmap_static.so uses plain Apache 1.3 API, this module might crash under EAPI! (please recompile it with -DEAPI) ※途中削除 Syntax error on line 226 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/libexec/mod_rewrite.so into server: /usr/local/apache/libexec/mod_rewrite.so: undefined symbol: dbm_fetch /usr/local/apache/bin/apachectl startssl: httpd could not be started Apacheが入ってない状態で、mod_sslをインストールすれば上手くいくのですが。 どうしてこういうエラーが出てしまうのでしょうか? よろしくお願いします。

  • apache2.0.64に後からmod_sslを入れているのですが…

    apache2.0.64に後からmod_sslを入れているのですが… apache2.0.64に後からmod_sslを入れているのですが、うまくいかず困っています。 apache2.0.64を導入後にSSLが必要になったので下記サイトを参考にしてあとからmod_sslを入れようと試みています。 http://d.hatena.ne.jp/hiro_nemu/20090516/1242436684 apacheはすでに起動してのですが、導入後はapachectlでstopできなくなりました。 原因はLoadModule ssl_moduleがloadできないようでコメントアウトすると今までどおりapacheを起動できます。 起動時のエラーは以下の通りです。 Syntax error on line 268 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/mod_ssl.so into server: /usr/local/apache/modules/mod_ssl.so: undefined symbol: ssl_cmd_SSLMutex ここからどうしていいかわからない状態です。 何でもかまわないのでご教授ください。

  • mod_rewriteについて

    初めて質問させていただきます。 よろしくお願いします。 Solaris8にてApacheを動かしています。 【問題】「HTTP TRACE」を拒否するためにmod_rewriteモジュールをインストールしようと思うのですがうまくいきません。 【詳細】mod_rewriteをインストールするとmod_soが消えてしまい、mod_soを入れなおすとmod_rewriteが消えてしまいます。  ./configure --enable-module=so --enable-module=rewrite とすると両方が入るみたいなんですが、 /usr/local/apache/bin/apachectl startssl としても、  Syntax error on line 206 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/libexec/libssl.so into server: ld.so.1: /usr/local/apache/bin/httpd: 重大なエラー: 再配置エラー: ファイル /usr/local/apache/libexec/libssl.so: シンボル ap_global_ctx: 参照シンボルが見つかりません。 /usr/local/apache/bin/apachectl startssl: httpd could not be started と、こんなエラーが出てhttpdがスタートできません。 どこに原因があるためのエラーなのでしょうか??

  • opensslのソースインストールについて

    ご覧頂きありがとうございます。 表題の件についてですが、 先日公開されたOpneSSLの脆弱性対応(CVE-2016-0800)の対応の為、 openssl-1.0.1sをインストールしたのですが、 インストール後にウェブサーバを再起動しようとしたら以下のエラーが発生しました。 # /usr/local/apache2/bin/apachectl configtest httpd: Syntax error on line 55 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_ssl.so into server: /usr/local/apache2/modules/mod_ssl.so: undefined symbol: SSLv2_client_method httpd.conf 55行目: LoadModule ssl_module modules/mod_ssl.so エラー内容をウェブで検索しましたが有力な情報は得られませんでした。 もしおわかりの方がご教示いただけないでしょうか。 環境: CentOS6.7 Apache 2.2.31 Openssl-1.0.1s 不足情報などありましたらご指摘ください。 よろしくお願いいたします。

  • apache/mod_perlの実行エラーについて

    apacheについて質問です。分かる方、どうぞご教授下さい。 httpd.confにmod_perlの設定を記述しない場合、通常どおりapacheが起動するのですが、以下のようにmod_perlの設定を追記するとapacheがエラーで起動しません。 【mod_perlの設定】 PerlModule ModPerl::Registry PerlRequire /usr/lib/perl5/site_perl/5.8.8/startup.pl <Location /cgi-bin> SetHandler perl-script PerlResponseHandler ModPerl::Registry PerlSendHeader On Options ExecCGI </Location> 【apacheのエラー内容】 /usr/local/apache2/bin/httpd: symbol lookup error: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/Apache2/ServerUtil/ServerUtil.so: undefined symbol: ap_get_server_banner httpd.confのmod_perlの設定については、他のサーバーでは問題なく起動していますので、mod_perlのconfigure時の共有ライブラリの設定に不備があるのではと思っているのですがどう設定すればいいのか分かりません。mod_perlのconfigure時のオプションは以下のようになっています。 【mod_perlのconfigure】 perl Makefile.PL \ > MP_USE_STATIC=1 \ > MP_AP_PREFIX=../httpd-2.0.63 \ > MP_AP_CONFIGURE="--prefix=/usr/local/apache2 --with-mpm=prefork" 以下、grep の実行結果です。 [root@colinux mod_perl-2.0.3]# grep -r ap_get_server_banner /usr/lib/* バイナリー・ファイル/usr/lib/httpd/modules/mod_rewrite.soは一致しました バイナリー・ファイル/usr/lib/httpd/modules/mod_proxy_connect.soは一致しました バイナリー・ファイル/usr/lib/httpd/modules/mod_proxy_ftp.soは一致しました どんな些細なことでも結構ですので、どうかご教授のほど宜しくお願い致します。 【環境】 fedora6 apache2.0.63 mod_perl2.0.4

  • Apacheモジュールの追加方法

    ./configure --enable-module=so --enable-shared=max --activate-module= src/modules/php4/libphp4.a で、ApacheをLinuxへインストールしたのですが、mod_userdir.soがないというエラーになります。 モジュールを追加するにはどうすれば良いでしょうか? /etc/rc.d/init.d/httpd start Starting httpd: Syntax error on line 217 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/libexec/mod_userdir.so into server: /usr/local/apache/libexec/mod_user dir.so: undefined symbol: ap_os_is_path_absolute 又、Apacheはmodule=maxだとWWWサーバが 重くなるでしょうか?

  • Apache2.2.4のmod_authnz_ldap

    centosにapacheの2.2.4をソースから次のconfigureオプションでインストールしたのですが、/usr/local/apache2/modules/にmod_authnz_ldap.cが追加されません。/usr/local/apache2/bin/httpd -lで確認するとmod_authnz_ldap.cとutil_ldap.cを確認する事ができるのですが。。。 ■configureオプション ./configure --enable-so --enable-authnz-ldap --with-ldap --enable-ldap /usr/local/apache2/modules/に追加されていない為、httpd.confに LoadModule authz_ldap_module modules/mod_authz_ldap.soを追記し apacheを再起動してもエラーがでてしまいます。   configureオプションに問題があるのでしょうか?

  • DB接続を行うApacheモジュールをApacheに追加して、Apacheを再起動するとエラー

    皆さんこんにちは。 Apacheモジュールを作りを行っていました。 モジュール内で、 MySQLにコネクションをはり、 queryリクエストの往来を行うだけの単純なものです。 モジュールの作成から次の順序で作業を進めました。 ----------------------------- (1)モジュールの作成 (2)モジュール(1)のmakeを行う -> make成功 (3)モジュールのsoファイルを配置。 /usr/local/apache2/modules/ に make時に作成された モジュールの「soファイル」を配置。 (4)httpd.confの編集 httpd.confに 作成したモジュールのディレクティブを挿入。 LoadModule db_connect_module modules/db_connect.so <Location /db_connect> SetHandler db_connect </Location> (5)Apacheのリスタート ----------------------------- (5)でapacheの再起動を行うと、 次のエラーが表示されました。 httpd: Syntax error on line 96 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_db_connect.so into server: /usr/local/apache2/modules/mod_db_connect.so: undefined symbol: mysql_query ここで不思議だったのは、 確かに、 作成したMySQLに接続するためのApacheモジュール内で、 「mysql_query」を利用していますが、 そのモジュールのmake時には エラーが表示されていなかったし、 make時にエラーが出なかったとおり、 モジュール内のソースでも、 記述した「mysql.h」も正常にインクルードされていると思います。 どうして、 apacheのhttpd.confは 「mysql_query」に関する 上記のエラーを出してくるのでしょうか? どなたか考えられる原因を アドバイスいただけるとありがたい次第です。 以上どうぞ宜しくお願い致します。

  • SentOSでapacheとtomcatの連携

    いつもお世話になっております。 Linuxを始めて使っています。 仕事でapache2.2.4とtomcat5.5をインストールして連携させようしています。 ネットで色々とやり方を調べたところ Apache2.2よりmod_proxy-ajpモジュールとして提供されるようになり、別途設定ファイル を用意する事なくhttpd.confにて設定を行うだけということがわかりこの方法でやろうと思っています。 しかし、apache2.2.4をインストールしても/usr/local/apache2/modulesの中にはhttpd.expしか存在していません。 modulesの中にmod_proxy-ajpモジュールなどがあると思っているのですがこの考えは正しいでしょうか? 違っていればご指摘ください。 上記が正しかったとして私が行っているapache2.2.4のインストール手順を以下に記載します。 以下suを実行して管理者で行います。 (1)wgetでapacheをダウンロードする。 wget http://www.meisei-u.ac.jp/mirror/apache/httpd/httpd-2.2.4.tar.gz (2)/usr/local/srcでダウンロードしたファイルを展開する。 tar xvfz httpd-2.2.4.tar (3)コンパイル前設定を行う ./configure --prefix=/usr/local/apache2 --enable-proxy --enable-proxy-ajp --enable-so (4)makeでコンパイルする。 make (5)インストールする。 make install 以上です。 これで/usr/local/apache2/modulesにmod_proxy-ajpができると思っているのですが、存在しません。 ネットで調べると皆さんこのようにし上手くいっているようなのですが・・・。 全くの初心者ですのでLinuxを知っている方にとって常識なことでも わからない部分があるので色々とご教授いただければと思います。 よろしくお願いします。

  • apacheの起動

    apacheを起動させようとすると Cannot load /usr/local/apache/modules/mod_dav_svn.so into server: /usr/local/apache/modules/mod_dav_svn.so: undefined symbol: dav_xml_get_cdata ってでます。 mod_dav_svn.soが読み込めません、未定義のシンボルが含まれています、と読み取りましたが、どうすればよいでしょう? apacheはhttpd-2.0.59です。 よろしくお願いします。