CentOS5.4へのstone導入についてご教授ください。


●opensslは最初から入っています。
# rpm -qa | grep ssl
openssl-0.9.8e-12.el5_4.6
openssl-devel-0.9.8e-12.el5_4.6
mod_ssl-2.2.14-jason.1
#

●make stone.pemの実行
/etc/pki/tls/certsにて
# make stone.pemを実行

●プロセス起動せず
/usr/local/srcにて
# tar -zxvf stone-2.3e.tar.gz
# mv stone-2.3d-2.3.2.7/ /root; cd /root
# cd stone-2.3d-2.3.2.7/
# make linux-ssl
# ./stone -D localhost:22 443/ssl
# ps -ef | grep stoneでstoneプロセスなし
# cd ..
# chown -R root. stone-2.3
# cd -
# ps -ef | grep stoneでstoneプロセスなし

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2010/05/10 01:54:27
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226

ポイント100pt

まず以下のように -D を付けずに、代わりに -ddd を付けてデバッグレベルを適当に上げて実行してみてください。

stone -ddd localhost:22 443/ssl
  • 「Can't bind 0.0.0.0:https」と言われたら、誰か別のプロセスが既に 443 ポートを掴んでいるとも思われますので、「netstat -lnpt | grep :443」などを使って誰がポ-トを掴んでいるか探して、そのプロセスを殺すなり設定を変えるなりします。
  • ポートを掴んでいるプロセスがいなければ、実効ユーザを確認してみてください。一般ユーザだと1024以下のポートを待ち受けることは出来ないので、この場合もCan't bindのエラーが出るので、もしそうであればrootで実行しなおしてください。
  • 「SSL_CTX_use_PrivateKey_file(/etc/pki/tls/certs/stone.pem) error:0200100D:system library:fopen:Permission denied」の場合、root で実行してれば出ないと思いますが、もし出るようであれば実効ユーザとファイルのパーミッションを確認してください。
  • その他のエラーが出た場合もエラーメッセージが何かしら出るはずなのでそれをみて対処すればよいでしょう。

無事に起動して「127.0.0.1:ssh <- 0.0.0.0:https/ssl」などという表示が確認出来たら問題はすべて解決したので、とりあえず Ctr+C で停止して、改めて -D を付けて起動しなおせばデーモンとして動いてくれるはずです。

http://q.hatena.ne.jp/answer

id:ikazuo

ご指摘のとおり「Can't bind 0.0.0.0:https」でした

# ./stone -ddd localhost:22 443/ssl
May 10 01:44:08.961640 3085911760 start (2.3e) [3828]
May 10 01:44:08.961943 3085911760 Debug level: 3
May 10 01:44:08.963063 3085911760 stone 3: Can't bind 0.0.0.0:https err=98

httpdが443を掴んでいたためそのプロセスをkillしてからstoneをデーモンとして

問題なく起動できました。

# netstat -lnpt | grep :443
tcp        0      0 :::443                      :::*                        LISTEN      2402/httpd
#
# ps -ef | grep httpd
root      2402     1  0 May09 ?        00:00:00 /usr/sbin/httpd
apache    3493  2402  0 00:37 ?        00:00:02 /usr/sbin/httpd
apache    3494  2402  0 00:37 ?        00:00:01 /usr/sbin/httpd
apache    3495  2402  0 00:37 ?        00:00:02 /usr/sbin/httpd
apache    3496  2402  0 00:37 ?        00:00:01 /usr/sbin/httpd
apache    3497  2402  0 00:37 ?        00:00:02 /usr/sbin/httpd
apache    3498  2402  0 00:37 ?        00:00:01 /usr/sbin/httpd
apache    3499  2402  0 00:37 ?        00:00:01 /usr/sbin/httpd
apache    3500  2402  0 00:37 ?        00:00:01 /usr/sbin/httpd
root      3837  3787  0 01:45 pts/0    00:00:00 grep httpd
# kill 2402
#
# netstat -an | grep 443
# 
# ./stone -D localhost:22 443/ssl
# ps -ef | grep stone
root      3845     1  0 01:45 ?        00:00:00 ./stone -D localhost:22 443/ssl
root      3847  3787  0 01:46 pts/0    00:00:00 grep stone
#
# netstat -lnpt | grep 443
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      3845/stone

ありがとうございました!

2010/05/10 01:53:57
  • id:ikazuo
    make linux-ssl実行時の出力です。
    ----------------------------------
    # make linux-ssl
    make TARGET=linux ssl_stone LIBS="-ldl"
    make[1]: Entering directory `/root/stone-2.3d-2.3.2.7'
    make FLAGS="-DUSE_POP -DUSE_SSL " LIBS="-ldl -lssl -lcrypto" linux
    make[2]: Entering directory `/root/stone-2.3d-2.3.2.7'
    make FLAGS="-O -Wall -DCPP='\"/usr/bin/cpp -traditional\"' -DPTHREAD -DUNIX_DAEMON -DPRCTL -DSO_ORIGINAL_DST=80 -DUSE_EPOLL -DUSE_POP -DUSE_SSL " LIBS="-lpthread -ldl -lssl -lcrypto" stone
    make[3]: Entering directory `/root/stone-2.3d-2.3.2.7'
    cc -O -Wall -DCPP='"/usr/bin/cpp -traditional"' -DPTHREAD -DUNIX_DAEMON -DPRCTL -DSO_ORIGINAL_DST=80 -DUSE_EPOLL -DUSE_POP -DUSE_SSL -o stone stone.c -lpthread -ldl -lssl -lcrypto
    make[3]: Leaving directory `/root/stone-2.3d-2.3.2.7'
    make[2]: Leaving directory `/root/stone-2.3d-2.3.2.7'
    make[1]: Leaving directory `/root/stone-2.3d-2.3.2.7'
    ----------------------------------


    またMakefileを以下のように修正してもだめでした。
    ----------------------------------
    #SSL= /usr/local/ssl
    SSL= /etc/pki/tls/certs
    ----------------------------------
  • id:ikazuo
    httpdをkillしてからstoneを起動し、その後にhttpdをstartしようとしても443がstoneに掴まれているためhttpdが起動できません。このような場合、apacheのhttpd.confなどで443ではなく8080などへhttpdの使用ポートを変更してあげればよいのでしょうか。
  • id:y-kawaz
    >apacheのhttpd.confなどで443ではなく8080などへhttpdの使用ポートを変更してあげればよいのでしょうか。
    ですね。

    CentOSの場合 /etc/httpd/conf.d/ssl.conf がそれにあたると思うので、そこで443と記述されている個所を適当な使ってないポートに変更してやればよいでしょう。

    また、https 自体を必要としないのであれば ssl.conf の内容を空にするか全行コメントアウトしてしまうのでも良いと思います。
    デフォルトだと conf.d/*.conf がインクルードされる設定になっていると思うので、ssl.conf を削除または ssl.conf_ 等にリネームしてもhttpsが無効になりますが、この方法だと yum update 等で httpd がアップデートされた際にssl.confが復活してしまうのであまりよくありません。なので、ファイルの修正は上書きされないので先に書いたようにファイルはそのままで中身を空にするのが手っ取り早い手段でしょう。
  • id:ikazuo
    /etc/httpd/conf.d/ssl.conf の記述を変更しました。
    18 #Listen 443
    19 Listen 8080

    # netstat -an | grep 443
    tcp 0 0 :::443 :::* LISTEN
    # /etc/init.d/httpd restart
    httpd を停止中: [ OK ]
    httpd を起動中: [ OK ]
    # netstat -an | grep 443
    # netstat -an | grep 8080
    tcp 0 0 :::8080 :::* LISTEN
    #

    ありがとうございました。
  • id:ikazuo
    はじめの質問の文章の後半が雑だったため訂正しておきたいと思います。

    (略)
    # cd stone-2.3d-2.3.2.7/
    # make linux-ssl
    # ./stone -D localhost:22 443/ssl
    # ps -ef | grep stoneでstoneプロセスなし
    # cd ..
    # chown -R root. stone-2.3d-2.3.2.7/
    # cd -
    # ./stone -D localhost:22 443/ssl
    # ps -ef | grep stoneでstoneプロセスなし

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません