この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

LocalCertificateSelectionCallback デリゲート

 

公開日: 2016年10月

認証に使用されるローカルの Secure Sockets Layer (SSL) 証明書を選択します。

名前空間:   System.Net.Security
アセンブリ:  System (System.dll 内)

public delegate X509Certificate LocalCertificateSelectionCallback(
	object sender,
	string targetHost,
	X509CertificateCollection localCertificates,
	X509Certificate remoteCertificate,
	string[] acceptableIssuers
)

パラメーター

sender
Type: System.Object

この検証の状態情報を格納するオブジェクト。

targetHost
Type: System.String

クライアントで指定されたホスト サーバー。

localCertificates
Type: System.Security.Cryptography.X509Certificates.X509CertificateCollection

X509CertificateCollection ローカル証明書を含みます。

remoteCertificate
Type: System.Security.Cryptography.X509Certificates.X509Certificate

リモート パーティの認証に使用される証明書。

acceptableIssuers
Type: System.String[]

A String リモート パーティに許容される証明書の発行者の配列。

戻り値

Type: System.Security.Cryptography.X509Certificates.X509Certificate

X509Certificate SSL 接続を確立するために使用します。

このデリゲートは、のインスタンスの構築に使用される、 SslStream クラスです。 SslStream クラスは、セキュリティで保護された情報がクライアントとサーバー間で交換するために使用します。 クライアントとサーバーは、このデリゲートを使用して、認証に使用する証明書を選択します。

次のコード例では、このデリゲートのメソッドの実装を示します。

public static X509Certificate SelectLocalCertificate(
    object sender,
    string targetHost, 
    X509CertificateCollection localCertificates, 
    X509Certificate remoteCertificate, 
    string[] acceptableIssuers)
{	
    Console.WriteLine("Client is selecting a local certificate.");
    if (acceptableIssuers != null && 
        acceptableIssuers.Length > 0 &&
        localCertificates != null &&
        localCertificates.Count > 0)
    {
        // Use the first certificate that is from an acceptable issuer.
        foreach (X509Certificate certificate in localCertificates)
        {
            string issuer = certificate.Issuer;
            if (Array.IndexOf(acceptableIssuers, issuer) != -1)
                return certificate;
        }
    }
    if (localCertificates != null &&
        localCertificates.Count > 0)
        return localCertificates[0];

    return null;
}

次のコード例では、このデリゲートのインスタンスを作成するを示します。

// Server name must match the host name and the name on the host's certificate. 
serverName = args[0];
// Create a TCP/IP client socket.
TcpClient client = new TcpClient(serverName,80);
Console.WriteLine("Client connected.");
// Create an SSL stream that will close the client's stream.
SslStream sslStream = new SslStream(
    client.GetStream(), 
    false, 
    new RemoteCertificateValidationCallback (ValidateServerCertificate), 
    new LocalCertificateSelectionCallback(SelectLocalCertificate)
    );

.NET Framework
2.0 以降で使用可能
トップに戻る
表示: