1

MintChip Challengeに参加できましたが、残念ながらサポートされているモバイル デバイス (Android、iPhone、または Windows Phone) を持っていないため、Hosted APIを使用する必要があります。API とのやり取りに JavaScript/PHP を使用する予定です。唯一の問題は、データをリクエストしようとすると、API がリクエストを理解したが拒否したことを意味する403 エラーが表示されることです。

私は、すべての要求に SSL と、提供された証明書による署名が必要であることを知っています。また、証明書が有効であり、ブラウザーに正しくインポートされていることもわかっています。これは、Hosted API にアクセスして、URL のいずれかを押すことで直接要求を確認できるためです 。 json

したがって、大きな問題は、サーバー間で署名されたリクエストを有効にするために、ブラウザと同じ方法で Apache Web サーバー自体をすべてのリクエストに対して署名できるかということです。それ以外に、PHP には x.509 証明書をインポートしてリクエストに署名するためのライブラリまたはユーティリティがありますか?

私は通常、JSONp を使用して JSON API へのクライアント/サーバー リクエストを実行します。これにより、この必要性を回避できます。また、すべてのリクエストに対してこのレベルのセキュリティを必要とする他の A​​PI は考えられません。通常は BASIC Auth や ws-security などです。これはやり過ぎであり、物事をより安全にしますか? 一般的な情報に関する質問は、投稿する前にすでにこの質問に関する警告を受け取っているため、通常は好意的に見られませんが、一部のセキュリティ専門家は、Apache Web サーバーに署名する方法、特定のディレクトリからのすべての要求に対して SSL を強制する方法、キーを保護する方法について詳細な情報を持っている可能性があります。それらをサーバーに保存したり、PHP 経由で x.509 を使用したりしますか? ご協力いただきありがとうございます。

(更新: 2012 年 5 月 4 日、タイトルを変更して、秘密鍵でリクエストに署名し、もちろん公開鍵で復号化されるという事実を反映させます)

4

2 に答える 2

1

通常、X.509証明書に含まれる公開鍵ではなく、秘密鍵で署名します。

PHP を介して X.509 を使用する場合は、純粋な PHP X.509 実装である phpseclib を確認してください。

于 2012-05-04T19:01:57.210 に答える
1

いいえ。Apache サーバーは MintChip 自体への API リクエストを生成しないため、認識していないリクエストへの署名を開始させる方法はありません。

ほとんどの場合、クライアント Web ブラウザーを介して直接 MintChip API への要求を作成することは適切ではありません。いずれにせよ、クライアントが適切な証明書を持っていることを保証できる良い方法はありません。

curl拡張機能を使用して PHP 経由で API リクエストを行う場合はCURLOPT_SSLCERT、リクエストを行うときにオプションを使用して、使用するクライアント証明書を指定できます。理想的には、API リクエストを実行するすべてのコードを 1 つの場所 (mintchip_api関数など) に配置する必要があるため、これを「ディレクトリから発信されたすべてのリクエスト」に適用する必要はありません。

于 2012-05-04T21:58:20.470 に答える