あなたの映画力を試せる!POPLETA映画検定(無料) >>

はじめまして。

Solaris10で、OpenSSLとApacheを導入し、認証ファイル作成で
エラーになりました。
認証局ファイル作成(CA)
cd /usr/local/ssl/misc/CA.sh -newca

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
unknown option -selfsign
usage: ca args

-verbose - Talk alot while doing things
-config file - A config file
-name arg - The particular CA definition to use
-gencrl - Generate a new CRL
-crldays days - Days is when the next CRL is due
-crlhours hours - Hours is when the next CRL is due
-startdate YYMMDDHHMMSSZ - certificate validity notBefore
-enddate YYMMDDHHMMSSZ - certificate validity notAfter (overrides -days)
-days arg - number of days to certify the certificate for
-md arg - md to use, one of md2, md5, sha or sha1
-policy arg - The CA 'policy' to support
-keyfile arg - private key file
-keyform arg - private key file format (PEM or ENGINE)
-key arg - key to decode the private key if it is encrypted
-cert file - The CA certificate
-in file - The input PEM encoded certificate request(s)
-out file - Where to put the output file(s)
-outdir dir - Where to put output certificates
-infiles .... - The last argument, requests to process
-spkac file - File contains DN and signed public key and challenge
-ss_cert file - File contains a self signed cert to sign
-preserveDN - Don't re-order the DN
-noemailDN - Don't add the EMAIL field into certificate' subject
-batch - Don't ask questions
-msie_hack - msie modifications to handle all those universal strings
-revoke file - Revoke a certificate (given in file)
-subj arg - Use arg instead of request's subject
-extensions .. - Extension section (override value in config file)
-extfile file - Configuration file with X509v3 extentions to add
-crlexts .. - CRL extension section (override value in config file)
-engine e - use engine e, possibly a hardware device.
-status serial - Shows certificate status given the serial number
-updatedb - Updates db for expired certificates

もしかして、上記でエラーですか?

次に、証明書署名要求ファイル作成(CSR)
cd /usr/local/ssl/misc/CA.sh -newreq

openssl req -in newreq.pem -text
→確認したらOKでした。

openssl rsa -in newreq.pem -text
確認した所、エラーになります。
unable to load Private Key
18943:error:0906D06C:PEM routines:PEM_read_bio:no start line:/on10/build-nd/F10U8B6/usr/src/common/openssl/crypto/pem/pem_lib.c:637:Expecting: ANY PRIVATE KEY

Googleで、調べているんですが、よくわかりません。
ご存知の方がいたら、教えてください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

> 少し混乱してきまして、確認させてください。


> 私は、以下の方法で、認証ファイル作成しています。

確認させてもらいたいのですが、質問当初の問題「openSSLで秘密鍵ファイルエラー」は解決したということでよいのでしょうか?

また、何をどう混乱しているのか簡潔に書いて下さい。
だらだらと質問者が行った方法を書くだけでは、回答者の負担が増してしまい、有効な回答が得られにくくなってしまいますよ。

ざっと質問者が行った方法を確認したが、CSR について認識違いがあるように思います。

openssl req -in newreq.pem -text

上記コマンドを実行した出力をみても分かるとおり、CSR に含まれるのは公開鍵です。

newreq.pem(CSR) : 公開鍵
newcert.pem(CRT) : 公開鍵 + CA の署名
newkey.pem: key pair(公開鍵 + 秘密鍵)

CSR は、CSR に対して CA に署名してもらい CRT を発行してもらうためだけにあるので、CRT を発行してもらった後は不要になります。
必要なのは公開鍵が含まれている CA が発行した CRT(newcert.pem)と対応する秘密鍵が含まれている newkey.pem です。

以上のことを踏まえると、以下の CRL に対する処理は明らかに不要ですよね。

> cp /usr/local/ssl/misc/newreq.pem /usr/local/apache2/conf/ssl

> SSLCertificateKeyFile /usr/local/apache2/conf/ss/newreq.pem

一方、newkey.pem については何も処理していませんが...

落ち着いてよく考えてみましょう。
    • good
    • 1
この回答へのお礼

xinuさん、

質問者側として、明確でなくまた、だらだらと質問して
しまって申し訳ありません。
一応、openSSLで秘密鍵ファイルエラーに関しては、
解決しました。これによってまた、エラーを起こしているので
新たに、質問します。
ありがとうございました。

お礼日時:2009/11/25 22:55

No.5 に typo があったので訂正します。



(誤)
> 以上のことを踏まえると、以下の CRL に対する処理は明らかに不要ですよね。

(正)
以上のことを踏まえると、以下の CSR に対する処理は明らかに不要ですよね。
    • good
    • 0

まず、



> cd /usr/local/ssl/misc/CA.sh -newca

-bash: cd: /usr/local/share/ssl/misc/CA.sh: ディレクトリではありません。

になりますよ?

CA.sh の reqnew の部分はこんな感じですね。

$REQ -new -keyout newkey.pem -out newreq.pem $DAYS

newkey.pem : キーペアファイル
newreq.pem : CSRファイル

なので、中身を見るには

openssl req -in newreq.pem -text
openssl rsa -in newkey.pem -text

余談ですが、もしどこかを参照されているのであればそこのリンクも
張ってあった方が回答しやすいです。
    • good
    • 0

# 何度もすみません。



> このままだと CA の証明書ができていないので、この CA で証明書要求に署名できませんよ。

No.2 で上記のように書きましたが、訂正します。

このままだと CA の証明書ができていないので、証明書の verify ができない。(CA.sh -verify)

でした。

この回答への補足

xinuさん、

助言ありがとうございます。
少し混乱してきまして、確認させてください。
私は、以下の方法で、認証ファイル作成しています。

同梱のCA.shを使う
認証局ファイル作成
/usr/local/ssl/misc./CA.sh -newca

CAの自己署名型証明書
 demoCA/cacert.pem
CAの秘密鍵
 demoCA/private/cakey.pem

証明書署名要求ファイル作成(CSR)
/usr/local/ssl/misc/CA.sh -newreq
証明書要求ファイル
newreq.pem
証明書署名要求ファイル確認
openssl req -in newreq.pem -text
秘密鍵ファイル確認
openssl rsa -in newkey.pem -text

署名付き証明書作成(CRT)
/usr/local/ssl/misc/CA.sh -sign
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y

CAの署名付きサイト証明書
newcert.pem
署名付き証明書確認
openssl x509 -in newcert.pem -text

ssl.confの設定

apacheのhttpd.confに
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
があるのを確認。

作成した認証ファイルを適当なディレクトリにコピー
mkdir /usr/local/apache2/conf/ssl
cp /usr/local/ssl/misc/newreq.pem /usr/local/apache2/conf/ssl
cp /usr/local/ssl/misc/newcert.pem /usr/local/apache2/conf/ssl
cp /usr/local/ssl/misc/demoCA/cacert.pem /usr/local/apache/conf/ssl

ssl.confを自分の環境に合わせって設定
vi /usr/local/apache2/conf/ssl.conf
<VirtualHost 192.168.24.52:443>

DocumentRoot "/usr/local/apache2/htdocs"
ServerName solaris.testdomain.com
ServerAdmin root@testdomain.com

SSLCACertificateFile /usr/local/apache2/conf/ssl/cacert.pem
SSLCertificateFile /usr/local/apache2/conf/ssl/newcert.pem
SSLCertificateKeyFile /usr/local/apache2/conf/ss/newreq.pem

/usr/local/apache2/bin/apachectl start

こんな感じですが??
間違っていたら、ご指摘ください。
よろしくお願いします。

補足日時:2009/11/24 23:47
    • good
    • 0

# 引用が前後します。



> やはり、エラーになりました。
> penssl rsa -in newreq.pem -text
> unable to load Private Key
> 25185:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: ANY PRIVATE KEY

こちらが本題だったのですね。# ちょっと勘違いしていました。
newreq.pem は証明書要求であって、秘密鍵ではありませんよ。
秘密鍵を表示したいなら、

openssl rsa -in newkey.pem -text

とすべきなのでは?

以下、蛇足となりますが、

> 環境変数に/usr/local/ssl/binを通すように変更し、また、念の為に
> CA.sh も書き換えて確認した所
> やはり、エラーになりました。

上記をしてから /usr/local/ssl/misc/demoCA/cacert.pem 作りましたか?

CA.sh 内の以下の部分が実行されていないはずなので、cacert.pem ができていないはずです。
このままだと CA の証明書ができていないので、この CA で証明書要求に署名できませんよ。

92 $CA -out ${CATOP}/$CACERT $CADAYS -batch \
93 -keyfile ${CATOP}/private/$CAKEY -selfsign \
94 -infiles ${CATOP}/$CAREQ

手作業で cacert.pem を作るよりは、ディレクトリごと demoCA を削除して、CA.sh -newcert からやりなおすほうが簡単かもしれませんが。
    • good
    • 0

CA.sh 内から OS 付属の /usr/sfw/bin/openssl コマンドが実行されてしまっているためではないでしょうか?



質問の内容から推測すると /usr/local/ssl 以下に OpenSSL をインストールされているようですが、which openssl の結果はどうなりますか?
きちんと /usr/local/ssl/bin/opnessl が表示されますか?

Solaris 10 では 6/06 から OpenSSL が付属しています。
http://www.sun.com/software/solaris/whats_new.jsp

そして、OS 付属の openssl ca コマンドには -selfsign オプションがありません。(詳細は /usr/sfw/man 以下の ca(1) を参照)

CA.sh の中身を確認すると分かると思いますが、CA.sh 内では openssl コマンドを呼び出しており、変数 OPENSSL を設定していないと、OS 付属とユーザがインストールした openssl コマンドのうちどちらの openssl コマンドが実行されるかは、環境変数 PATH に依存してしまいます。

この回答への補足

xinuさん、

環境変数に/usr/local/ssl/binを通すように変更し、また、念の為に
CA.sh も書き換えて確認した所
やはり、エラーになりました。

penssl rsa -in newreq.pem -text
unable to load Private Key
25185:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: ANY PRIVATE KEY

補足日時:2009/11/23 23:41
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

Q起動しているサービスを確認するコマンド

初歩的な質問で恐縮ですが、ご教示いただけますと幸いです。

起動しているサービスを確認するために以下の2つのコマンドを打ってみるのですが、結果(出て来るサービス名)が違います。
このコマンドの違いについてご教示いただけますでしょうか。

(1)service --status-all
(2)chkconfig --list

Aベストアンサー

(1)service --status-all

サービスの現在のステータスを調べるコマンド

(2)chkconfig --list

OSのブート時に自動起動するサービスを調べるコマンド

違いが出るのは、
・ブート後に手動あるいは他のコマンドから起動したサービス
・ブート後に手動あるいは他のコマンドから、あるいはエラーで停止したサービス
・ブート後に実行はされるがすぐに停止して常駐しないサービス (ntpdate とか)

あるいは、(1)ではサービス名が表示されない物もあるので、どのサービスがどんなステータス出力をするのか知っておく必要もありますね。(service network statusとか)

Qsedの置換文字に変数を使用したいのですが・・・

あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。

例:
X="a"
Y="b"
echo test.txt | sed 's/${X}/${Y/g}' >test.txt

sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

Aベストアンサー

' ・・・' で囲まれた中の$はそのままドルマークです。変数展開をするなら、'・・・'で囲んではいけません。

何も囲まないか、"・・・"で囲むかです。

Qfindでフォルダだけを検索

find / -name "apache*"
これを、フォルダだけヒットするような文にするとどうなりますか?

Aベストアンサー

がると申します。

find / -name "apache*" -type d
でいかがでしょうか?

Q【MTA】postfixとsendmail【違い】

はじめまして。シアトルでシスアド見習いをしている者です。

今日みなさんにお聞きしたいのは、postfixとsendmailMTAの違いについてです。

いろいろな記事で比較されておりましたが、Google先生に聞いたところ
・sendmailは設定が複雑だけど未知のプロトコルにも対応している
・postfixは設定は簡単、MailDir構造を使用していて、SMTPプロトコルに特化
のような内容が沢山出てきました。

また、itmedia様の過去ログにて
・sendmailは送受信共にsendmailにて可能
・postfixは受信は受けるが、送信は外部MDA(?)
のような違いがあるとも書いてありました。

しかしながら、動作的にこれら二つのMTAが具体的にどう変わるのかについての説明がなされている記事が見当たらず、ここで質問させていただいた次第でございます。

内容としましては現在、システムが使用するMTAとして、現在postfixとsendmailがサーバーに入っております。
システムが使うMTAの設定は

/etc/alternatives/mta -> /etc/alternatives/sendmail.sendmail

となっています。
またMTAの候補は以下の二つです。

/etc/alternatives/sendmail.sendmail
/etc/alternatives/sendmail.postfix

そこで質問なのですがこのmtaのリンクをsendmail.sendmail -> sendmail.postfixに変更した場合、何か具体的に動作の違いは出てくるのでしょうか?

よろしくお願いいたします。

はじめまして。シアトルでシスアド見習いをしている者です。

今日みなさんにお聞きしたいのは、postfixとsendmailMTAの違いについてです。

いろいろな記事で比較されておりましたが、Google先生に聞いたところ
・sendmailは設定が複雑だけど未知のプロトコルにも対応している
・postfixは設定は簡単、MailDir構造を使用していて、SMTPプロトコルに特化
のような内容が沢山出てきました。

また、itmedia様の過去ログにて
・sendmailは送受信共にsendmailにて可能
・postfixは受信は受けるが、送信は外部MDA(?...続きを読む

Aベストアンサー

どちらもデフォルトの状態であればローカル配送のみでしょうから、SMTPとしての表面的な動作にそれほど違いはありません。

altanativesして不都合が生じるとしたら、コマンドベースのsendmailのリンクが張り替えられてオプションに違いがでてくるので、それを呼び出してるプログラム(CGIなど)がネイティブsendmail固有のオプションを付加している場合はエラーになるってくらいですかね。


まあそれはあくまでも表面的な動作としてであってです。内部的にはたくさん違いがありますよ。
SMTPサーバとして稼働済みのSendmailをPostfixに置き換えようとしているのだとしたら、話はもっとややこしくなると思います。

Qレッドハットのバージョン確認方法

自分のサーバで使用しているREDHATのバージョン確認はどうすればいいのでしょうか?

more /etc/issue
とやっても英文しか出てきませんでした。

uname -all
でもカーネルのバージョンは出るのですが、REDHATのバージョンは出ませんでした。

Aベストアンサー

> more /etc/issue
> とやっても英文しか出てきませんでした。

その英文にはRedHatのバージョンは書いてなかったのですか?
書いていなかったとしたら、管理者により編集されている可能性
がありますね。

cat /etc/redhat-release

ではいかがでしょう?
やっぱり英文ですけど。

rpm -q redhat-release

でもいいかも

Q~以外を削除する場合(rmコマンド)

linuxのコマンドで
~以外のファイル、ディレクトリを全て削除したい時は
どのような記述をすれば良いのでしょうか?
シェルスクリプトではなくrmコマンド1つで削除したのいですが…

例: tar以外のファイル・ディレクトリを
   すべて削除したい場合など

どなたかご存知の方がいらっしゃったら
教えてください。よろしくお願い致します。

Aベストアンサー

rm コマンドのみという訳にはいきませんが基本的なコマンドを組み合わせると実現可能と思います。

「名前が tar で終わるもの以外のファイル・ディレクトリを削除する」場合だと

ls | grep -v -E 'tar$' | xargs rm -r

となります。

ファイルの一覧を取得し ( ls )
'tar'で終わるもの以外を抽出し ( grep )
その結果を rm -r の引数に指定して実行 ( xargs )

という流れです。

ファイルを削除するような操作については失敗するとダメージが大きいので、事前にテストして動作を確認すると良いとおもいます。また rm -r -i としてそれぞれのファイルについて、削除の問い合わせをするのも有効です。

Qapt-get install ****** でinstallしたものをuninstallするには?

御世話になります。
vncserverだけをinstallするつもりが
誤って
apt-get install vncとうってしまいました。
これをuninstallしたいのですが
どのようにすればよろしいでしょうか?

教えて下さい。

Aベストアンサー

# apt-get remove パッケージ名
では、設定ファイルは削除されずに残ります。

完全に削除するときは、
# apt-get --purge remove パッケージ名
です。

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

価格.com 格安SIM 料金比較