セキュリティで保護された Web サービス (https) を呼び出す必要があります。Java (またはその他のプログラム言語) を使用します。
HTTP Web サービス用のクライアントを作成する通常の手順以外に、追加の手順を実行する必要がありますか?
編集: この質問への回答も必要です: そうでない場合、クライアントは Web サービスから送信された暗号化されたメッセージをどのように復号化しますか??
ありがとう
セキュリティで保護された Web サービス (https) を呼び出す必要があります。Java (またはその他のプログラム言語) を使用します。
HTTP Web サービス用のクライアントを作成する通常の手順以外に、追加の手順を実行する必要がありますか?
編集: この質問への回答も必要です: そうでない場合、クライアントは Web サービスから送信された暗号化されたメッセージをどのように復号化しますか??
ありがとう
JavaURLAPIがこれを処理する必要があります。サーバー証明書の署名者が標準のJavaCAセットの一部でない場合は、証明書に問題がある可能性がありますが、それは起こりそうにありません(修正するのはそれほど難しくありません)。
他の言語もほぼ確実に同様のサポートを提供します。
ソケットレイヤーは、すべての暗号化と復号化を処理します。
Webサービスがクライアント証明書認証を必要としない場合、変更することはそれほど多くありません(トラストマネージャー/トラストストアを除きますが、アプリケーション全体で同じものを使用する傾向があります)。
サービスでクライアント証明書認証が必要な場合は、追加の構成手順が必要になります。たとえば、Axisを使用している場合は、次のアプローチを試すことができます。JavaでSSLクライアント証明書を選択する
(これがどのように行われるかは、使用している言語とフレームワークによって異なります。)
編集: 「そうでない場合、クライアントはWebサービスから送信された暗号化されたメッセージをどのように復号化しますか?」に関して、これはSSL/TLSスタックによって行われます。HTTPSをサポートするほとんどのHTTPライブラリは、プラットフォームのSSL / TLSスタック(JavaではJSSE)を多かれ少なかれ透過的に使用します。ここで、暗号化/復号化が行われます。Webサービスフレームワークを使用している場合は、SSL / TLS信頼設定(または使用するクライアント証明書)を構成するためのAPIが含まれている可能性がありますが、使用しない場合はシステムのデフォルトを使用する可能性もあります。なんでも。
質問はHTTPSで保護されたWebサービスに関するものであることに注意してください。これは、トランスポートレベルのセキュリティ(使用するプラットフォームのSSL / TLSスタックによって多かれ少なかれ透過的に処理される)のみを意味します。一部のWebサービスは、メッセージレベルのセキュリティを使用して保護することもできます。その場合、クライアント側とサーバー側の両方のフレームワークがこれをサポートする必要があります。これには確かにより多くの構成が必要になります。(場合によっては、メッセージレベルのセキュリティがトランスポートレベルのセキュリティと組み合わせて実装されていることがあります。つまり、HTTPS上で署名または暗号化されたペイロードを交換します。)
理論的にはいいえ。Https は基本的に HTTP over SSL/TLS です。したがって、SSL/TLS は両方ともトランスポート層にあるため、すべてがHTTP とまったく同じように機能するはずです。ここで、サーバーの証明書を取得する必要があります。
お客様側で何もする必要はありません。トランスポート レイヤーはすべて自動的に処理するため、アプリケーション レイヤーに手間をかける必要はありません。これは、プログラムが通常の HTTP と HTTPS の違いを認識していないことを意味します。
ほとんどの場合、HTTPクライアントはHTTPSで「正しく機能」します。
もちろん、確実に知る唯一の方法は、それを試すことです。お気に入りのHTTPクライアントを取得し、URLをからhttp://
に変更しますhttps://
。
サーバーで証明書に自己署名していない限り、他の人が指摘したように、それはうまくいくはずです。その場合、Java は文句を言うので、サーバー キーをローカルのクライアント側のキーストアにインポートする必要があります。クライアント ソフトウェアを多くの場所に展開する必要がある場合、展開された各クライアントでこれを行う必要があるため、これは明らかに優れたソリューションではありません。この場合、サーバーで適切な証明書を取得する必要があります。
ここのコードを使用して Java の任意の証明書を信頼できます: http://www.exampledepot.com/egs/javax.net.ssl/TrustAll.html開発のために。
クライアントが Windows .NET アプリの場合、次のコードですべての SSL 証明書を信頼できます。
// Trust all SSL certificates
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
これは非推奨であり、代替手段を提供すると不平を言うでしょうが、これは機能します。