質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OpenSSL

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

833閲覧

openssl_pkey_new() のエラー

SQLinjection

総合スコア36

OpenSSL

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/10/03 16:31

おはようございます。

WindowsのXAMPP環境(64bitWin10, PHP7.2.10)で、
openssl_pkey_new() を使用したところ、falseが返ってきてしまいます。
解決に至った事案はありますでしょうか。

PHP

1$pKey=openssl_pkey_new(); 2var_dump($pKey); // bool(false)

【補足】そこで、openssl_error_string() でエラーを確認したところ、

PHP

1$str=openssl_error_string(); // error:02001003:system library:fopen:No such process

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

openssl_pkey_new

インストール手順

openssl.cnfが見つからないのでは?

環境変数で設定するか、$configargsでパスを設定。

投稿2018/10/03 17:28

daisuke7

総合スコア1563

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SQLinjection

2018/10/03 18:02

ありがとうございます。確かめてきました。 「httpd-xampp.conf」によると、 SetEnv OPENSSL_CONF "C:/xampp/apache/bin/openssl.cnf" が設定されていたため、「openssl.cnf」の存在している SetEnv OPENSSL_CONF "C:/xampp/apache/conf/openssl.cnf" に環境変数を操作してみましたが、変化はありませんでした(同様のエラー)。
SQLinjection

2018/10/03 18:11

あ、ひょっとすると、Openssl default configかもしれません… 現在変更を試みています。
daisuke7

2018/10/03 18:12

phpinfo()でopenssl関連の情報は正常でしょうか?
SQLinjection

2018/10/03 18:17

openssl_pkey_new() が正しく動作するサーバと、phpinfo() の結果を比較したところ、 「Openssl default config」が正常ではないのではと踏んでおり、 正しく動作しないローカル側は、 C:\Program Files (x86)\Common Files\SSL/openssl.cnf と存在しないパスを指しています。これが変更できれば…
SQLinjection

2018/10/03 18:28

【追記】 Openssl default config で指定されているディレクトリ「C:\Program Files (x86)\Common Files\SSL/openssl.cnf」にopenssl.cnf を強引に置いてみたところ正しく動作しました。 ただ、openssl.cnf が二重存在になってしまっているので、 「Openssl default config」のパスを変更する方法はないでしょうか…
daisuke7

2018/10/03 23:48

$configargs はどうですか?
SQLinjection

2018/10/04 10:31

$configargs はどこから確認しますか? この手の実装は初なので恐縮なのですが、 調べたところ、openssl_csr_new() に関連する引数ということしか分かりませんでした。 また、Openssl default configが変な場所になってしまっている理由として、 C/C++のコンパイラのMinGWであるコンテンツmsysにopensslが二重に存在しているからかもしれません。 現状としては、openssl.cnf をOpenssl default configの場所において解決しています。
daisuke7

2018/10/04 10:51

openssl_pkey_new http://php.net/manual/ja/function.openssl-pkey-new.php >パラメータ >configargs >鍵の作成方法の詳細(ビット数など)を指定するには、 configargs を使用します。 >configargs の詳細な情報については openssl_csr_new() を参照ください。 openssl_pkey_new() もパラメータとしてconfigargs を渡すことが出来ます。 その形式がopenssl_csr_new()説明にあると言っています。 openssl_csr_new http://php.net/manual/ja/function.openssl-csr-new.php >configargs > (略) >キー config に別の openssl 設定ファイルを指定することで別の設定を使用することも可能です。 だからたぶんこんな感じで。 $config = array( "config" => "C:/xampp/apache/bin/openssl.cnf" ); $pKey = openssl_pkey_new($config);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問