- ベストアンサー
openSSLで秘密鍵ファイルエラー
- Solaris10で、OpenSSLとApacheを導入し、認証ファイル作成でエラーが発生しました。
- 認証局ファイルの作成(CA.sh -newca)でunknown option -selfsignというエラーが表示されます。
- 証明書署名要求ファイルの作成(CA.sh -newreq)で、openssl rsaコマンドがエラーで実行されません。unable to load Private Keyというエラーメッセージが表示されました。
- みんなの回答 (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 については何も処理していませんが... 落ち着いてよく考えてみましょう。
その他の回答 (5)
No.5 に typo があったので訂正します。 (誤) > 以上のことを踏まえると、以下の CRL に対する処理は明らかに不要ですよね。 (正) 以上のことを踏まえると、以下の CSR に対する処理は明らかに不要ですよね。
- entree
- ベストアンサー率55% (405/735)
まず、 > 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 余談ですが、もしどこかを参照されているのであればそこのリンクも 張ってあった方が回答しやすいです。
# 何度もすみません。 > このままだと 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 こんな感じですが?? 間違っていたら、ご指摘ください。 よろしくお願いします。
# 引用が前後します。 > やはり、エラーになりました。 > 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 からやりなおすほうが簡単かもしれませんが。
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
お礼
xinuさん、 質問者側として、明確でなくまた、だらだらと質問して しまって申し訳ありません。 一応、openSSLで秘密鍵ファイルエラーに関しては、 解決しました。これによってまた、エラーを起こしているので 新たに、質問します。 ありがとうございました。