Megosztás a következőn keresztül:


A Schannel titkosító készletek priorizálása

titkosítási API: A következő generációs (CNG) olyan függvényeket biztosít, amelyek lekérdezik, hozzáadják, eltávolítják és rangsorolják a szolgáltató által támogatott titkosítási csomagokat. A függvények használatával végrehajtott módosítások azonnal érvénybe lépnek, és nem igényelnek aktív kiszolgáló újraindítását.

Jegyzet

A titkosítási csomagok listáját úgy is módosíthatja, hogy konfigurálja a SSL titkosítási csomag sorrendjét a csoportházirend-beállítások segítségével a Microsoft Felügyeleti konzol csoportházirend-objektum beépülő moduljában.

A SSL-titkosítási csomag rendelésének csoportházirend-beállításának konfigurálása

  1. A parancssoron írja be: gpedit.msc. Megjelenik a csoportházirend-objektumszerkesztő.
  2. Bontsa ki számítógép konfigurációs, felügyeleti sablonok, hálózati, majd kattintson SSL-konfigurációs beállításokelemre.
  3. A SSL-konfigurációs beállításokterületen kattintson a SSL-titkosítási csomag rendelési beállítására.
  4. Az SSL titkosítási csomag sorrendje panelen görgessen a panel aljára.
  5. Kövesse a A beállítás módosításacímkével ellátott utasításokat.

A módosítás érvénybe lépéséhez a beállítás módosítása után újra kell indítani a számítógépet.

 

A rejtjelcsomagok listája legfeljebb 1023 karakter hosszúságú lehet.

A Schannel-titkosítási csomagok rangsorolásához tekintse meg az alábbi példákat.

Támogatott titkosítási csomagok listázása

Hívja meg a BCryptEnumContextFunctions függvényt a szolgáltató által támogatott titkosítási csomagok prioritási sorrendben történő listázásához.

Az alábbi példa bemutatja, hogyan használható a BCryptEnumContextFunctions függvény a támogatott titkosítási csomagok listázására.

#include <stdio.h>
#include <windows.h>
#include <bcrypt.h>
#pragma comment(lib, "Bcrypt.lib")

void main()
{

   HRESULT Status = ERROR_SUCCESS;
   DWORD   cbBuffer = 0;
   PCRYPT_CONTEXT_FUNCTIONS pBuffer = NULL;

    Status = BCryptEnumContextFunctions(
        CRYPT_LOCAL,
        L"SSL",
        NCRYPT_SCHANNEL_INTERFACE,
        &cbBuffer,
        &pBuffer);
    if(FAILED(Status))
    {
        printf_s("\n**** Error 0x%x returned by BCryptEnumContextFunctions\n", Status);
        goto Cleanup;
    }
                
    if(pBuffer == NULL)
    {
        printf_s("\n**** Error pBuffer returned from BCryptEnumContextFunctions is null");
        goto Cleanup;
    }

    printf_s("\n\n Listing Cipher Suites ");
    for(UINT index = 0; index < pBuffer->cFunctions; ++index)
    {
        printf_s("\n%S", pBuffer->rgpszFunctions[index]);
    }

Cleanup:
    if (pBuffer != NULL)
    {
        BCryptFreeBuffer(pBuffer);
    }
}


Titkosítási csomagok hozzáadása, eltávolítása és rangsorolása

Hívja meg a BCryptAddContextFunction és BCryptRemoveContextFunction függvényt, hogy a támogatott titkosítási csomagok listájából rejtjelcsomagokat vegyen fel és távolítson el.

Titkosítási csomag hozzáadásakor úgy állítsa be a BCryptAddContextFunction függvény dwPosition paraméterének értékét, hogy az CRYPT_PRIORITY_TOP a rangsorolt lista elejére kerüljön, vagy CRYPT_PRIORITY_BOTTOM a lista végére.

A titkosítási csomagok listájának rangsorolásához távolítsa el az összes titkosítási csomagot a listából, majd adja hozzá a titkosítási csomagokat a listához a kívánt sorrendben.

Az alábbi példa bemutatja, hogyan vehet fel titkosítási csomagot az alapértelmezett Microsoft Schannel-szolgáltató rangsorolt listájának tetejére.

#include <stdio.h>
#include <windows.h>
#include <bcrypt.h>
#pragma comment(lib, "Bcrypt.lib")

void main()
{
    
    SECURITY_STATUS Status = ERROR_SUCCESS;
    LPWSTR wszCipher = (L"RSA_EXPORT1024_DES_CBC_SHA");
       
    Status = BCryptAddContextFunction(
                CRYPT_LOCAL,
                L"SSL",
                NCRYPT_SCHANNEL_INTERFACE,
                wszCipher,
                CRYPT_PRIORITY_TOP);
}


Az alábbi példa bemutatja, hogyan távolíthat el egy titkosítási csomagot az alapértelmezett Microsoft Schannel-szolgáltató rangsorolt listájából.

#include <stdio.h>
#include <windows.h>
#include <bcrypt.h>
#pragma comment(lib, "Bcrypt.lib")

void main()
{
    
    SECURITY_STATUS Status = ERROR_SUCCESS;
      LPWSTR wszCipher = (L"TLS_RSA_WITH_RC4_128_SHA");
       
    Status = BCryptRemoveContextFunction(
                CRYPT_LOCAL,
                L"SSL",
                NCRYPT_SCHANNEL_INTERFACE,
                wszCipher);
}