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 に関するアドバイスは正しかったです。