Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ha önkiszolgáló Windows Communication Foundation (WCF) szolgáltatást hoz létre az átviteli biztonságot használó WSHttpBinding osztálysal, egy portot is konfigurálnia kell X.509-tanúsítvánnyal. Ha nem saját üzemeltetésű szolgáltatást hoz létre, üzemeltetheti szolgáltatását az Internet Information Servicesben (IIS). További információ: HTTP Transport Security.
A port konfigurálásához a használt eszköz a számítógépen futó operációs rendszertől függ.
Ha Windows Server 2003 rendszert futtat, használja a HttpCfg.exe eszközt. Windows Server 2003 rendszeren ez az eszköz telepítve van. További információért lásd Httpcfg áttekintés. A Windows támogatási eszközök dokumentációja ismerteti az Httpcfg.exe eszköz szintaxisát.
Ha Windows Vista rendszert futtat, használja a már telepített Netsh.exe eszközt.
Megjegyzés
A számítógépen tárolt tanúsítványok módosítása rendszergazdai jogosultságokat igényel.
Határozza meg, hogyan vannak konfigurálva a portok
Windows Server 2003 vagy Windows XP rendszerben az HttpCfg.exe eszközzel tekintheti meg az aktuális portkonfigurációt a lekérdezési és SSL- kapcsolók használatával, ahogyan az alábbi példában is látható.
httpcfg query ssl
Windows Vista rendszerben az Netsh.exe eszközzel tekintheti meg az aktuális portkonfigurációt, ahogyan az alábbi példában is látható.
netsh http show sslcert
Tanúsítvány ujjlenyomatának lekérése
A Tanúsítványok MMC beépülő modullal megkereshet egy X.509-tanúsítványt, amelynek célja az ügyfélhitelesítés. További információ: Útmutató: Tanúsítványok megtekintése az MMC beépülő modullal.
Hozzáférés a tanúsítvány ujjlenyomatához. További információkat a tanúsítványok ujjlenyomatának lekérését ismertető útmutatóban találhat.
Másolja a tanúsítvány ujjlenyomatát egy szövegszerkesztőbe, például a Jegyzettömbbe.
Távolítsa el a hexadecimális karakterek közötti összes szóközt. Ennek egyik módja, ha a szövegszerkesztő keresési és csere funkcióját használja, és minden szóközt null karakterre cserél.
SSL-tanúsítvány kötése portszámhoz
Windows Server 2003 vagy Windows XP rendszerben használja a HttpCfg.exe eszközt a Secure Sockets Layer (SSL) tároló "beállítás" módban, hogy a tanúsítványt egy portszámhoz kösse. Az eszköz az ujjlenyomattal azonosítja a tanúsítványt, ahogy az az alábbi példában is látható.
httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6
Az -i kapcsoló szintaxisa
IP
:port
, és utasítja az eszközt, hogy állítsa be a tanúsítványt a számítógép 8012-s portjára. Igény szerint a számot megelőző négy nullát a számítógép tényleges IP-címe is helyettesítheti.A -h kapcsoló a tanúsítvány ujjlenyomatát adja meg.
Windows Vista rendszerben használja a Netsh.exe eszközt az alábbi példában látható módon.
netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00001111-aaaa-2222-bbbb-3333cccc4444}
A certhash paraméter határozza meg a tanúsítvány ujjlenyomatát.
Az ipport paraméter az IP-címet és a portot határozza meg, és ugyanúgy működik, mint a -i kapcsoló a leírt Httpcfg.exe eszközben.
A appid paraméter egy GUID, amely a tulajdonos alkalmazás azonosítására használható.
SSL-tanúsítvány kötése portszámhoz és ügyféltanúsítványok támogatása
A Windows Server 2003-ban vagy a Windows XP-ben az X.509-tanúsítványokkal hitelesítést támogató ügyfelek támogatásához kövesse az előző eljárást, de adjon át egy további parancssori paramétert HttpCfg.exe, ahogyan az az alábbi példában is látható.
httpcfg set ssl -i 0.0.0.0:8012 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6 -f 2
A -f kapcsoló szintaxisa
n
, ahol n egy 1 és 7 közötti szám. Az előző példában látható 2 érték engedélyezi az ügyféltanúsítványokat az átviteli rétegben. A 3 érték lehetővé teszi az ügyféltanúsítványok használatát, és leképozza ezeket a tanúsítványokat egy Windows-fiókba. A HttpCfg.exe Súgóban megtalálod más értékek viselkedését.Windows Vista rendszerben az X.509-tanúsítványokkal hitelesítést támogató ügyfelek támogatása az átviteli rétegben az előző eljárást követve, de egy további paraméterrel, az alábbi példában látható módon.
netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00001111-aaaa-2222-bbbb-3333cccc4444} clientcertnegotiation=enable
SSL-tanúsítvány törlése portszámból
A HttpCfg.exe vagy Netsh.exe eszközzel megtekintheti a számítógép összes kötésének portjait és ujjlenyomatait. Az adatok lemezre való nyomtatásához használja a ">" átirányítási karaktert, ahogyan az az alábbi példában is látható.
httpcfg query ssl>myMachinePorts.txt
Windows Server 2003 vagy Windows XP rendszerben használja a HttpCfg.exe eszközt a törlési és ssl kulcsszavakat. A -i kapcsolóval adja meg a
IP
:port
számot, az ujjlenyomat megadásához pedig a -h kapcsolót.httpcfg delete ssl -i 0.0.0.0:8005 -h 0000000000003ed9cd0c315bbb6dc1c08da5e6
Windows Vista rendszerben használja a Netsh.exe eszközt az alábbi példában látható módon.
Netsh http delete sslcert ipport=0.0.0.0:8005
Példa
Az alábbi kód bemutatja, hogyan hozhat létre saját üzemeltetésű szolgáltatást az átviteli biztonságra beállított WSHttpBinding osztály használatával. Alkalmazás létrehozásakor adja meg a portszámot a címben.
// This string uses a function to prepend the computer name at run time.
string addressHttp = String.Format(
"http://{0}:8080/Calculator",
System.Net.Dns.GetHostEntry("").HostName);
WSHttpBinding b = new WSHttpBinding();
b.Security.Mode = SecurityMode.Transport;
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
// You must create an array of URI objects to have a base address.
Uri a = new Uri(addressHttp);
Uri[] baseAddresses = new Uri[] { a };
// Create the ServiceHost. The service type (Calculator) is not
// shown here.
ServiceHost sh = new ServiceHost(typeof(Calculator), baseAddresses);
// Add an endpoint to the service. Insert the thumbprint of an X.509
// certificate found on your computer.
Type c = typeof(ICalculator);
sh.AddServiceEndpoint(c, b, "MyCalculator");
sh.Credentials.ServiceCertificate.SetCertificate(
StoreLocation.LocalMachine,
StoreName.My,
X509FindType.FindBySubjectName,
"contoso.com");
// This next line is optional. It specifies that the client's certificate
// does not have to be issued by a trusted authority, but can be issued
// by a peer if it is in the Trusted People store. Do not use this setting
// for production code. The default is PeerTrust, which specifies that
// the certificate must originate from a trusted certificate authority.
// sh.Credentials.ClientCertificate.Authentication.CertificateValidationMode =
// X509CertificateValidationMode.PeerOrChainTrust;
try
{
sh.Open();
string address = sh.Description.Endpoints[0].ListenUri.AbsoluteUri;
Console.WriteLine($"Listening @ {address}");
Console.WriteLine("Press enter to close the service");
Console.ReadLine();
sh.Close();
}
catch (CommunicationException ce)
{
Console.WriteLine($"A communication error occurred: {ce.Message}");
Console.WriteLine();
}
catch (System.Exception exc)
{
Console.WriteLine($"An unforeseen error occurred: {exc.Message}");
Console.ReadLine();
}
' This string uses a function to prepend the computer name at run time.
Dim addressHttp As String = String.Format("http://{0}:8080/Calculator", _
System.Net.Dns.GetHostEntry("").HostName)
Dim b As New WSHttpBinding()
b.Security.Mode = SecurityMode.Transport
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate
' You must create an array of URI objects to have a base address.
Dim a As New Uri(addressHttp)
Dim baseAddresses() As Uri = {a}
' Create the ServiceHost. The service type (Calculator) is not
' shown here.
Dim sh As New ServiceHost(GetType(Calculator), baseAddresses)
' Add an endpoint to the service. Insert the thumbprint of an X.509
' certificate found on your computer.
Dim c As Type = GetType(ICalculator)
sh.AddServiceEndpoint(c, b, "MyCalculator")
sh.Credentials.ServiceCertificate.SetCertificate( _
StoreLocation.LocalMachine, _
StoreName.My, _
X509FindType.FindBySubjectName, _
"contoso.com")
' This next line is optional. It specifies that the client's certificate
' does not have to be issued by a trusted authority, but can be issued
' by a peer if it is in the Trusted People store. Do not use this setting
' for production code. The default is PeerTrust, which specifies that
' the certificate must originate from a trusted certificate authority.
' sh.Credentials.ClientCertificate.Authentication.CertificateValidationMode =
' X509CertificateValidationMode.PeerOrChainTrust
Try
sh.Open()
Dim address As String = sh.Description.Endpoints(0).ListenUri.AbsoluteUri
Console.WriteLine("Listening @ {0}", address)
Console.WriteLine("Press enter to close the service")
Console.ReadLine()
sh.Close()
Catch ce As CommunicationException
Console.WriteLine("A communication error occurred: {0}", ce.Message)
Console.WriteLine()
Catch exc As System.Exception
Console.WriteLine("An unforeseen error occurred: {0}", exc.Message)
Console.ReadLine()
End Try