
Ubuntu日本語フォーラム
ログインしていません。
http://www.nina.jp/server/slackware/ope … a-key-pass
や
http://www.server-world.info/query?os=U … &p=ssl
を参考にして、opensslの自己(独自)証明書をapache2起動時に入力しなくてすむようにしたいと作業中ですが、次のコマンドにエラーが出て先に進みません。どこが悪いか?他に解決するコマンド等ありましたらご教示ください。
root@trusty1:~# openssl rsa -in server.key -out server.key
に対して次のエラーメッセージが出ます。
Error opening Private Key server.key
3073971900:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('server.key','r')
3073971900:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
unable to load Private Key
よろしくお願いいたします。
オフライン
3073971900:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('server.key','r')
なので、server.key ファイルを読み込む権限が無いということです。
現状でどう指定されているが分からないので以下を参照して、読み込み権限を付加すれば大丈夫です。
ファイル・ディレクトリのアクセス権限
アクセス権(パーミッション)の変更 - chmod
ファイル・ディレクトリの所有者とグループを変更する - chown
秘密鍵に対するアクセス権限は厳しめに設定するものなので、元々の設定されていたアクセス権と同じに戻しておかないと、アプリケーション (ここでは apache2) の起動時にそれをチェックしてエラーになります。
オフライン
ry による投稿:
3073971900:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('server.key','r')
なので、server.key ファイルを読み込む権限が無いということです。
現状でどう指定されているが分からないので以下を参照して、読み込み権限を付加すれば大丈夫です。
ファイル・ディレクトリのアクセス権限
アクセス権(パーミッション)の変更 - chmod
ファイル・ディレクトリの所有者とグループを変更する - chown
秘密鍵に対するアクセス権限は厳しめに設定するものなので、元々の設定されていたアクセス権と同じに戻しておかないと、アプリケーション (ここでは apache2) の起動時にそれをチェックしてエラーになります。
ご教示ありがとうございます。
最初、出来るだけrootを使わず、
sudo
が設定せずに出来る、最初のユーザー、仮に maniow とします。
manilow でssh で入って、sudoですべてやっていました。
が、どうしたことか?
sudo cd /etc/ssl/private
を受け付けてくれないのです?どーも、cdなのにおかしいなぁと思いながら、rootのpasswordを、それから設定し、
manilow で ssh ではいり su - でrootになって、実行したら、 権限が違う(私には分かりませんでした)というメッセージがでたようです。ということは、どうすればいいかと思いまして、列挙して頂いた、groupやその他の属性をよく読んで、頭で整理してみますが、うまくいかなかった場合、また、ご教示頂くことになるかも知れません。
結局、 manilow で sudoをしていたのを、すべて root でやるべきだったのでしょうか?
それまでは、設定はうまくいっていたので、突然の霹靂でした。(勉強不足です)
ぱっと分かる、簡単なアドバイスでクリアできるなら、アドバイスお願いいたします。
どうもありがとうございました。
オフライン
追加です。
root@trusty1:~# ls -l /etc/ssl/private/sever.key
-rw-r--r-- 1 root root 1743 Sep 29 09:31 /etc/ssl/private/sever.key
となっています。
オフライン
参考にされているserverworldさんの手順では、一番最初に /etc/ssl/private/ へcdしていますよ。
最初の投稿の
root@trusty1:~# openssl rsa -in server.key -out server.key
を見る限りではカレントディレクトリが /root になっている様に見えます。
その場合、単に証明書を絶対パスで指定すれば良いだけな気がします。
$ sudo cd /etc/ssl/private が受け付けられないのは、cdがシェルの内部コマンドだからだと思います。
sudoはシェルの内部コマンドを扱えません。
こういう場合は $ sudo -s 又は sudo -i を実行してから、# cd /etc/ssl/private とすれば良いです。
(管理者権限のままになるので、コマンドが終了したら exit するのを忘れずに)
-s と -i の違いは $ man sudo で確認してください。
katsu07 による投稿:
$ sudo cd /etc/ssl/private が受け付けられないのは、cdがシェルの内部コマンドだからだと思います。
sudoはシェルの内部コマンドを扱えません。
こういう場合は $ sudo -s 又は sudo -i を実行してから、# cd /etc/ssl/private とすれば良いです。
(管理者権限のままになるので、コマンドが終了したら exit するのを忘れずに)
-s と -i の違いは $ man sudo で確認してください。
katsu07 様
うまく行きました。取りあえず、独自の証明書が作れました。
どうもありがとうございます。こころから感謝します。
いろいろ、曖昧なまま、manilow を以下のURLから
http://www.server-world.info/query?os=Ubuntu_14.04&p=initial_conf&f=1
root@trusty1:~# usermod -G adm manilow
とやってしまい、sudo が利かなくなり、慌てて、調べて sudoのgroupに入れました。
manilowが他のgroupにも属していたのか?どうか?調べないと分かりません。
ここは自力でやってみます。が、もしわからなかったら、defaultのmanilowのgroupに戻すべきなので、それをまた質問させて頂きます。
sslができれば、なんとかなりますので、次のステップ慎重にやります。
本当にありがとうございました。 takeda shoji
オフライン
自宅サーバー回線のISPとは別のISPから閲覧できることを確認しました。うまくいったようです。ありがとうございました。
オフライン
解決したようなので、個別の投稿に目を通していないのですが、一点だけ。
manilow による投稿:
が、どうしたことか?
sudo cd /etc/ssl/private
を受け付けてくれないのです?
sudo はサブ シェル内でコマンドを実行します。(※シェル=コマンド インタープリター: コマンドを解釈し実行する環境)
ですから、sudo cd ... としても cd コマンドは sudo で呼び出されたシェル内だけで完結指してしまい、sudo の終了と同時に無意味になります。
cd コマンドはそれを実行したシェルに対して現在のディレクトリの変更を指示する機能です。
現在のディレクトリの位置は、そのシェルだけが記憶しています。
sudo の実行 → 新たなシェルの起動 → 新シェル内で cd を実行 (元のシェルでは cd されていない) → 新シェルの終了(新シェルが記憶しているディレクトリ位置は消去される) → sudo の終了
こんな処理手順なので、sudo で実行した cd の結果は sudo の終了と同時に無意味になってしまいます。
/etc/ssl/private/ ディレクトリは root ユーザー以外はアクセスできない (正確には ssl-cert グループに属するユーザーならディレクトリ内のファイルへの直接アクセスが可能) になっているため、root ユーザー以外では cd はおろか ls すらできません。
$ ls -ld /etc/ssl/private
drwx--x--- 2 root ssl-cert 4096 9月 25 08:18 /etc/ssl/private
大抵のコマンドはファイル名をフルパスで指定できるので、cd しなくても以下の方法でも openssl コマンドが実行できます。
sudo openssl rsa -in /etc/ssl/private/server.key -out /etc/ssl/private/server.key
オフライン
ry による投稿:
解決したようなので、個別の投稿に目を通していないのですが、一点だけ。
manilow による投稿:
が、どうしたことか?
sudo cd /etc/ssl/private
を受け付けてくれないのです?sudo はサブ シェル内でコマンドを実行します。(※シェル=コマンド インタープリター: コマンドを解釈し実行する環境)
ですから、sudo cd ... としても cd コマンドは sudo で呼び出されたシェル内だけで完結指してしまい、sudo の終了と同時に無意味になります。
cd コマンドはそれを実行したシェルに対して現在のディレクトリの変更を指示する機能です。
現在のディレクトリの位置は、そのシェルだけが記憶しています。
sudo の実行 → 新たなシェルの起動 → 新シェル内で cd を実行 (元のシェルでは cd されていない) → 新シェルの終了(新シェルが記憶しているディレクトリ位置は消去される) → sudo の終了
こんな処理手順なので、sudo で実行した cd の結果は sudo の終了と同時に無意味になってしまいます。
/etc/ssl/private/ ディレクトリは root ユーザー以外はアクセスできない (正確には ssl-cert グループに属するユーザーならディレクトリ内のファイルへの直接アクセスが可能) になっているため、root ユーザー以外では cd はおろか ls すらできません。
$ ls -ld /etc/ssl/private
drwx--x--- 2 root ssl-cert 4096 9月 25 08:18 /etc/ssl/private
大抵のコマンドはファイル名をフルパスで指定できるので、cd しなくても以下の方法でも openssl コマンドが実行できます。
sudo openssl rsa -in /etc/ssl/private/server.key -out /etc/ssl/private/server.key
ryさん 詳しい解説ありがとうございます。
sudoとシェルの関係、よく理解し覚えておきます。
追記 昨日あれからvsftpdも設定しましたがどうもうまく行きません。
sslを追加するまでは当然うまく行っていました。少し探って、問題点が明確になったら、また、お聞きすると思います。どうぞよろしくお願いいたします。
オフライン