OpenSSLの代わりにNSSに対してコンパイルされたcurlおよびlibcurlが付属しているCentos 6システムでPHP curlを使用してサードパーティのサービスにアクセスしようとしています。
これは私に問題を引き起こしています。サービスにアクセスしようとするたびに、このエラーNSS: client certificate not found (nickname not specified)
が発生します。
私の理解では、NSSデータベースに証明書をインストールする必要があるということです。
私はこれを行う方法のステップバイステップの指示を探しています(心に留めて、これはPHP Nginxサーバーから呼び出されたcurl関数で動作する必要があります)
ありがとう
証明書ファイル名の前に「./」を付けるか、フルパスを使用してみてください。 curlのマンページから:
NSS SSLライブラリに対してcurlが構築されている場合、このオプション[--cert]は、環境変数SSL_DIR(またはデフォルトでは/ etc/pki/nssdb)で定義されたNSSデータベース内で使用する証明書のニックネームをcurlに伝えます。 NSS PEM PKCS#11モジュール(lib-nsspem.so)が利用可能な場合、PEMファイルがロードされます。 現在のディレクトリのファイルを使用する場合は、ニックネームとの混乱を避けるために、先頭に「./」プレフィックスを付けてください。
(エンファシス鉱山)
別の方法として、NSS証明書データベースにインポートするためのいくつかの手順がありますが、私はそれらを使用していません。 http://rcritten.fedorapeople.org/nss_compat_ossl.html
Centos 7でも同じ問題が発生しました。デバッグ後、タイムアウトに関連していました。
したがって、この問題が発生し、curl_setopt($ curl、CURLOPT_TIMEOUT_MS、300)を使用する場合;次に、所要時間を確認します。タイムアウト期間前後の場合。それが問題であり、証明書とは関係ありません。
タイムアウトの場合、Curlからタイムアウトエラーが発生することを期待していましたが、発生しないようです。
単純なパスワード認証を使用するFTPSサーバーにアクセスしようとしたときに間違ったパスワードを入力すると、curlで同じエラーメッセージが表示されました。証明書とは何の関係もありませんでした。