1

Shopifyの最初のステップはこちら...

cURL 7.24 を搭載した Windows 7 マシンで PHP 5.4 と Apache 2.2 を実行しています。ohShopify PHP アダプターを使用するこのサンプル アプリ (https://github.com/cmcdonaldca/ohShopify-Sample-App) に従ってみようとしていますが、...

アプリにショップ ( https://xxxxxx.myshopify.comにある)へのアクセスを許可した後、「SSL 証明書に問題があります。CA 証明書が正常であることを確認してください」というエラーが表示されます。この問題は、PHP API FAQ - Q2 ( http://wiki.shopify.com/PHP_API_FAQ ) で可能な解決策とともに言及されています。しかし、「構成で USE_SSL_PEM を true に設定する」場所がわかりません。これはどのような構成を意味しますか? PHP.ini ? CURLOPT_? PHPコードで定義するだけですか?サンプル アプリの一部である config_lib.php ファイルの php コードで試してみました。

define('USE_SSL_PEM',true);

しかし、それは機能しません..サンプルアプリファイルを検索すると、それを使用しているものがないことがわかります...だから、私は間違った場所にいる必要があります.

FAQ の 2 番目の部分は、.php コードで「CA_FILE」を定義することです。myshopify.com 証明書をエクスポートしましたが、有効なようです。次を使用して.cerから.pemに変換しました。

openssl x509 -inform DES -in ie_shopify.cer -out shopify.pem -text

そして config_lib.php ファイルで:

define('CA_FILE', getcwd() . '\\shopify.pem');

CA_FILE が絶対パスでファイルを正しく指していることを確認しました。

CURLOPT_CAINFO を設定して、ここ (http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/) で提案されていることも試しました。呼び出されている ohShopify curlSetopts() 関数で、同じ結果になります。

そして(前述のように)ここから.cerを.pemに変換する方法を見つけました(http://curl.haxx.se/docs/sslcerts.html)

ありがとう、

ニール

更新:解決しました!最初に Internet Explorer を使用して .cer ファイルとして抽出し、次に openssl を使用して .pem ファイルに変換した .pem ファイルを信頼する代わりに、次のようにしました。

curl.haxx.se/docs/caextract.html 

...そして Mozilla CA 証明書バンドルを取得しました - これは既に .pem 形式になっています。cacert.pem ファイルを他のファイルと同じディレクトリに配置し、curlSetopts() 関数の CURLOPT_CAINFO 行を更新しました (この行は以前に shopify.php に追加しました)。前と同じように、ファイルを直接指定しました。

curl_setopt($ch, CURLOPT_CAINFO, 'D:/apache/htdocs/cacert.pem');

そして、それは機能します。先に進みます。

更新 2: 明確にするために、最初に Shopify の PHP API FAQ (上記) で解決策を探していたので、USE_SSL_PEM 値を設定する必要はありませんでした (それが属する場所) または定義 CA_FILE コードを追加する必要はありませんでした。unitstep.net ブログの CURLOPT_CAINFO に関するアドバイスは正しかったです。

4

1 に答える 1

0

問題の解決策を見つけました。当然のことながら、.pem ファイル正しくありませんでした。エラー メッセージが示すとおりです。からの Mozilla CA 証明書バンドルに完全に置き換えました。

http://curl.haxx.se/docs/caextract.html 

次に、shopify.php ファイルで、ダウンロードした .pem ファイルを直接指す絶対パスを使用して次の行を curlSetopts() 関数に追加しました。

curl_setopt($ch, CURLOPT_CAINFO, 'D:/apache/htdocs/cacert.pem');
于 2012-07-04T01:27:48.107 に答える