29

自己署名証明書を使用してIIS7で実行されているWCFWebサービスがあります(これは、これが目的のルートであることを確認するための概念実証です)。SSLを使用する必要があります。

自己署名証明書を必要とせずに、WCFテストクライアントを使用してこのサービスをデバッグすることは可能ですか?

試してみると、次のエラーが発生します。

エラー:https:///Service1.svcからメタデータを取得できませんこれがアクセス可能なWindows(R)Communication Foundationサービスの場合は、指定されたアドレスでメタデータ発行が有効になっていることを確認してください。メタデータ発行を有効にするためのヘルプについては、http: //go.microsoft.com/fwlink/? LinkId=65455.WS-MetadataにあるMSDNドキュメントを 参照してください。 ExchangeエラーURI:https:///Service1.svcメタデータに解決できない参照が含まれています:'https:///Service1.svc'。権限''を持つSSL/TLSセキュアチャネルの信頼関係を確立できませんでした。基になる接続が閉じられました:SSL/TLSのセキュリティで保護されたチャネルの信頼関係を確立できませんでした。検証手順に従って、リモート証明書が無効です。HTTPGETエラーURI:https:///Service1.svc「https:///Service1.svc」のダウンロード中にエラーが発生しました。基になる接続が閉じられました:SSL/TLSのセキュリティで保護されたチャネルの信頼関係を確立できませんでした。検証手順に従って、リモート証明書が無効です。

編集:この質問は、特にWCFテストクライアントを使用して、自己署名証明書を使用してSSL経由で既に保護されているWebサービスをテストすることに関するものです。サーバーは、提供された証明書を受け入れるように既に設定されています。これを行う方法がわからないのは、WCFテストクライアントです。

4

6 に答える 6

12

開発領域で非自己署名証明書を作成し、IIS でこの証明書を使用して SSL を適用できます。手順は次のとおりです。

  1. 自己署名証明書を作成する

    makecert -r -pe -n "CN=My Root Authority" -a sha1 -sky signature
        -ss CA -sr 現在のユーザー  
        -cy権限
        -sv CA.pvk CA.cer
  2. このルート証明書によって署名された SSL 用の非自己署名証明書を作成し、そこから pfx ファイルを作成します。

    makecert -pe -n "CN=サーバー名" -a sha1 -sky exchange
        -eku 1.3.6.1.5.5.7.3.1 -ic CA.cer -iv CA.pvk
        -sp "Microsoft RSA SChannel 暗号化プロバイダー"
        -sy 12 -sv サーバー.pvk サーバー.cer
    
    pvk2pfx -pvk サーバー.pvk -spc サーバー.cer -pfx サーバー.pfx

を IISにインポートし、server.pfxこの証明書を使用するように Web サイト バインディングをセットアップするだけで済みます。また、この WCF クライアントを実行することで、サーバーとクライアントの両方CA.cerに in Local Computer\Trusted Root Certification Authoritiesストアをインストールするだけで、HTTPS を介してサービスと問題なく動作します。

于 2012-03-28T01:12:28.143 に答える
5

WCF Test Client をWCFStorm Lite Editionに置き換えれば、これを実行できるはずです。これは無料で、MS のテスト クライアントよりもかなり柔軟性があります。たとえば、ユーザー名認証を行う場合は、ユーザー名とパスワードを指定できます。

于 2010-05-28T18:31:40.730 に答える
3

この質問からの回答は、私の場合に役立ちました。証明書が期待する正確なマシン名を使用してください。たとえばmachine/service.svc、- は機能しますが、機能しない場合がありmachine.domain/service.svcます。

于 2011-10-20T08:48:16.857 に答える
2

あなたの質問に答えるために...これは、WCFテストクライアントに自己署名証明書を受け入れるように強制する方法です...

        using (ServiceReference1.Service1Client proxy = new ServiceReference1.Service1Client())
        {
            System.Net.Security.RemoteCertificateValidationCallback callBack = (sender, certificate, chain, sslPolicyErrors) => true;
            ServicePointManager.ServerCertificateValidationCallback += callBack;

            Console.WriteLine(proxy.GetData(35));

            ServicePointManager.ServerCertificateValidationCallback -= callBack;
        }
于 2013-12-19T10:30:39.347 に答える
1

はい、可能です。

生成された WSDL をサービス ( https://localhost/Service1.svc?singleWsdl ) からダウンロードし、WCF テスト クライアントでサービスを追加するときにこのファイルへのパスを指定するだけです。

于 2017-11-27T12:54:43.893 に答える
-4

独自の方法で証明書を検証できます。

これを試して:

ServicePointManager.ServerCertificateValidationCallback +=
            new System.Net.Security.RemoteCertificateValidationCallback(EasyCertCheck);

コールバック:

bool EasyCertCheck(object sender, X509Certificate cert,
        X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
    return true;
}
于 2010-05-08T01:19:58.177 に答える