実施C#Clientを使用するwebサービスover SSLってなに?
-
21-08-2019 - |
質問
なんServiceReference加C#コンソール-アプリケーションをWebサービスはかられますので、Oracle社
私も設定で作品のように桃ていないのは、暗号化(SSL)を用いて(http).監督-選手コメントは、暗号化(SSL)を用いて、私はラインの課題を追加するサービスへの参照を(あるいはウェブ参照).例えば、ホームページのURL(https)はサービスに露出しているかを返し適切な方法webしようを追加できます。
基になる接続した休館日:予期せぬエラーが発生し、お申込みください。意外なEOFは0バイトからの輸送ストリームです。メタデータの参照が含まれてても解決しない際には:'https://srs204.mywebsite.ca:7776/SomeDirectory/MyWebService?WSDL'
他の悲鳴がんにおいて証明書管理、展開。私には約1000、外部のクライアントサイトの使いこなせるよう、最低限必要なこの小さなユんでもらい、必要な証明書を設置し、適切なcert店に接続するために必要なWebサービスです。いのプラットフォームに取り扱います。いれている必要があるのルートです。
ってかなりの数時間のwebを見ている様々なオプションが取得できなくても良いクリーンに答えます。
以上をまとめますと、私にはカップルでのご質問はこちら
1)誰でもいいくつかの良いリンクの設定のウェブサービスをVisual Studioを使用するSSLってなに?
2)どのように登録する証明書?コンパクトな存在す。できるだけのものを使っておけば間違いないようにCertMgr登録です。
いのちの良い予約/チュートリアル/ういう共通の良い慣行の設定のようなことです。しかできないようです!
解決
でも、私把握してしまっている。かかったとのことで以上に気をつがたかったのために共有溶液からの大きなペットレスの鉱山は標準装備。"うーは固定です!よろしく!(下記をご覧くださる皆様の掛かった。
います。
根本問題によるデフォルトのVisual Studio2008用TLSのSSLハンドシェークのOracle/JavaベWebserviceうしようとしていましたが接続を使用したSSL3.
をご利用の場合"を追加サービスの参照..."をVisual Studio2008年、 なるかどうかを指定しますのセキュリティプロトコル のサービスセンター長はSSL3.
ない.
ご静WSDL文書 使用wsdl.exe を生成するプロキシクラス.
wsdl /l:CS /protocol:SOAP /namespace:MyNamespace MyWebService.wsdl
を利用することができる Cコンパイラの急激 にしてプロキシクラスへのライブラリ(.dll)に追加してください。ネットというプロジェクト"参考文献".
csc /t:library /r:System.Web.Services.dll /r:System.Xml.dll MyWebService.cs
この時点で、もれるようにする必要がありますされています。ます。サービス"をご参照"においても開示しております。
現在対応することができるでしょう呼びwebサービスな問題のコードです。で 作 する必要マジックラインのコードを追加する前にインスタンスを生成します。
// We're using SSL here and not TLS. Without this line, nothing workie.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
大丈夫でしたかも自分自身として試験した私devます。その後展開される他のお客様のボックスしてもサイトに接続出来ないもによるアクセス権/権限の問題です。この香りのような証明書となってい匂いがする必要があります。を解決するこ 使用certmgr.exe 登録証明書用のサイトへの信頼できるルートを行います。
certmgr -add -c "c:\someDir\yourCert.cer" -s -r localMachine root
また配布証明書をお客様にはそのサイトより自動的にユーザーいかに"セキュリティに優しい"の異なるバージョンのwindowsれている自動証明書の登録このようなものでした。
これに回答すか?コblowdartものすべてのおことを気づきを得ることになる。
他のヒント
そのようなwebサービスを使用していますので、自己署名証明書。正直なのです。
という大きな組織での内部にセットアップできます自分で信頼できる証明書発行局が、これは特にや Active Directory.からのCAのサーバホスティング、オラクルサービスを依頼することができ証明書利用できる広告政策への信頼のお客様の社内CAルート証明書に置くことにより、信頼できるルートで機械のお店です。これは削除の必要性を手動で信頼の証明書は、webサービスです。
クライアントは機外しておいてくるん暴露するサービスのいずれかをご購入の"本物の"証明書から知られてCAsのようにはVerisign、Thawte,GeoTrust。としてのイバンドルの公的証明書のインストールしてくださいへの信頼できるルート証明書発行局の機レベルの各機です。この問題は、例のないことを廃止する証明書が削除します。
この偉大なヒントをありがとうは、自分のもので簡単に見てまわりました、あなたは起こって良いアイデアをたくさん持っています。ここに私の少し追加することだ - 私はwebMethodsのと考え出すよ、それはあなた接続(代わりにTLSのSSL3)へのOracleアプリケーション・サーバーと同じ問題を抱えている(驚きを!)。あなたのアプローチは素晴らしい仕事を、ここに私の補遺です。
を考えると静的クラス「ファクトリーは、」これら二つのハンディダンディのアイテムを提供します:
/// <summary>
/// Used when dispatching code from the Factory (for example, SSL3 calls)
/// </summary>
/// <param name="flag">Make this guy have values for debugging support</param>
public delegate void CodeDispatcher(ref string flag);
/// <summary>
/// Run code in SSL3 -- this is not thread safe. All connections executed while this
/// context is active are set with this flag. Need to research how to avoid this...
/// </summary>
/// <param name="flag">Debugging context on exception</param>
/// <param name="dispatcher">Dispatching code</param>
public static void DispatchInSsl3(ref string flag, CodeDispatcher dispatcher)
{
var resetServicePoint = false;
var origSecurityProtocol = System.Net.ServicePointManager.SecurityProtocol;
try
{
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3;
resetServicePoint = true;
dispatcher(ref flag);
}
finally
{
if (resetServicePoint)
{
try { System.Net.ServicePointManager.SecurityProtocol = origSecurityProtocol; }
catch { }
}
}
}
そして、(あなたは間違いなく、すでに推測を持っているように、とにかく、ここでドラムロールを入れて)、その後このようなものを消費する:
var readings = new ArchG2.Portal.wmArchG201_Svc_fireWmdReading.wmdReading[] {
new ArchG2.Portal.wmArchG201_Svc_fireWmdReading.wmdReading() {
attrID = 1, created = DateTime.Now.AddDays(-1), reading = 17.34, userID = 2
},
new ArchG2.Portal.wmArchG201_Svc_fireWmdReading.wmdReading() {
attrID = 2, created = DateTime.Now.AddDays(-2), reading = 99.76, userID = 3
},
new ArchG2.Portal.wmArchG201_Svc_fireWmdReading.wmdReading() {
attrID = 3, created = DateTime.Now.AddDays(-5), reading = 82.17, userID = 4
}
};
ArchG2.Portal.Utils.wmArchG201.Factory.DispatchInSsl3(ref flag, (ref string flag_inner) =>
{
// creates the binding, endpoint, etc. programatically to avoid mucking with
// SharePoint web.config.
var wsFireWmdReading = ArchG2.Portal.Utils.wmArchG201.Factory.Get_fireWmdReading(ref flag_inner, LH, Context);
wsFireWmdReading.fireWmdReading(readings);
});
これ行いトリック - 。私はいくつかのより多くの時間を得るとき、私はスレッドの問題を解決する(またはしない)でしょう。
、私はSSL3を強制するためのマットNadrofskyの答えとコードサンプルはまた、
のようなエラーのためのソリューションであることに言及したいと思います作りながらエラーが発生しました HTTPSにHTTPリクエスト:// XXXX /何でもする。 これは、その事実が原因である可能性があり サーバー証明書が構成されていません 適切でHTTP.SYSとHTTPS 場合。これは、が原因である可能性があり セキュリティのミスマッチ結合 クライアントとサーバの間でます。
ただ、使用
// We're using SSL here and not TLS. Without this line, nothing workie.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
マットで述べたように。 HTTPSでのSAPのNetWeaver PIサーバでテストされています。ありがとう!
マット、
私もそのような問題があったと私は、リモートマシン上の信頼されたルートに証明書を追加するcertmgr.exeを使用して回避する方法があります。
X509Store store;
store = new X509Store("ROOT", StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(certificate);
「証明書オブジェクト」は、このように作成することができます:
X509Certificate2 certificate = new X509Certificate2("Give certificate location path here");