0

Web転送用のクライアントサーバー暗号化ソリューションが必要です(つまり、署名および暗号化されたクライアント側、および検証および復号化されたサーバー側)。

HTTPを使用していますが、共有ホスティングの制限によりSSLを使用できません(私のサーバーは共有ホスト環境です)。代替ソリューションを検討して、 GnuPGを使用するOpenPGPを決定しました。その理由の1つは、さまざまなPEARおよびPECLモジュールを介してPHPでサポートされていることです(PHPは、クライアントスクリプトとサーバースクリプトの両方に使用する予定の言語ですが、Perlも最後の手段として利用できます)。

私は今、データを送信するための最良の方法を決定しようとしています。暗号化および署名されたマルチパートMIMEメッセージを定義するRFC1847に出くわしました。このプロトコルは、RFC3156のPGP用に特別に拡張されています。(これらのプロトコルはS / MIME暗号化電子メールプロトコルに関連していると思います)。

私の質問は:これらの基準に従う理由はありますか?プロトコルに関する限り、それらは賢明なソリューションのように見えますが、実際にこのプロトコルを使用しているクライアントはありますか?たとえば、Apache Webサーバーに対してマルチパート/暗号化されたリクエストを行った場合、データを取得する簡単な方法はありますか?PHPスクリプトを使用したテストでは、PHPはこのような要求を解読しようとしても無駄だと思いました($_POSTデータは「multipart/form-data」MIMEタイプのデータからのもののようです)。

私のホストソケットを開くことできるので、PHPのソケットプログラミングAPIを使用して、「multipart /encrypted」および「multipart/signed」HTTPリクエストを受け入れるサーバーとして機能するPHPスクリプトを作成することは可能ですが、これはやり過ぎのようです。

助言がありますか?

私の問題の詳細については、この質問を参照してください。

4

1 に答える 1

1

その通りです。これらのプロトコルは、暗号化されたメールプロトコルに関連しています。このプロトコルを使用するのは少しやり過ぎであり、OpenSSLphp拡張機能を使用する必要があります。OpenPGPを使用してください。

クライアントはPHPで記述されるため、次のシナリオを検討してください。

シナリオ1:単純なSOAPWebサービスを作成する

サーバーとクライアントのメソッドは同じです。

  • getPublicKey()-公開鍵を返します
  • sendMessage(msg)-回答を返します

シナリオ2:GET/POSTメッセージを使用する

  • クライアント->HTTPGET(公開鍵を送ってください)->サーバー
  • クライアント<-(私の公開鍵はxxxxです)<-サーバー
  • クライアントはサーバーの公開鍵を使用してメッセージを暗号化しますクライアントはメッセージに独自の公開鍵を追加します
  • クライアント->HTTPPOST(暗号化されたメッセージを送信します)->サーバー
  • サーバーはメッセージをデコードし、クライアントの公開鍵を使用して回答をエンコードします
  • クライアント<-(クライアントへのエンコードされた回答)<-サーバー
于 2009-06-24T08:36:00.713 に答える