Konfigurowanie certyfikatów do użytku przez SSL

Macierzysty usług XML sieci Web jest niezalecane.Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.

Komunikacji SSL (Secure Sockets Layer) serwer HTTP muszą mieć certyfikat zarejestrowany dla każdego gniazda (kombinacja adres i port IP) jest włączenie do użytku z protokołem SSL.Certyfikaty muszą być autoryzowane do uwierzytelnianie serwera.W tym celu należy albo uzyskiwania certyfikatu SSL z urzędu certyfikacji, takiego jak Verisign lub jeśli dla celów testowych za pomocą narzędzi do wydawania i utworzyć certyfikat.

Niezależnie od czy certyfikat jest uzyskane lub self-issued musi być zarejestrowany z serwerem.Firma Microsoft zaleca, aby zarejestrować kwerendę i usunąć certyfikaty SSL za pomocą narzędzia konfiguracji protokołu HTTP (HttpCfg.exe).

Rejestrowanie certyfikatów SSL

Aby zarejestrować certyfikat, należy użyć następującego polecenia:

httpcfg set ssl /iIP:Port**/hHash/g**Guid

Argumenty

  • IP:Port
    Kombinacja portu i adresem IP dla którego rejestrujesz się certyfikat.

  • Hash
    Mieszanie certyfikatu.

    Ostrzeżenie

    Mieszanie certyfikat można uzyskać z magazynu certyfikat.Ten można przeglądać za pomocą przystawki Certyfikaty lub narzędzie wiersza polecenia, takich jak CertUtil.

  • Guid
    Ciąg identyfikatora GUID identyfikujący rejestrowanie certyfikat obiekt.Jak najlepiej utworzyć jeden identyfikator GUID dla każdego wystąpienie SQL Server i używać tego samego identyfikatora GUID dla wszystkich rejestracji certyfikat przez tego wystąpienie.

SSL rejestrowanie certyfikat dla IP:Port dotyczy wszystkich aplikacji, które nasłuchują na które IP:Port.Na przykład, jeśli oba wystąpienia SQL Server i innej aplikacji, takich jak usługi IIS, nasłuchują na tym samym IP:Port (10.0.0.1:80), wystąpienie SQL Server , rejestruje certyfikat SSL dla 10.0.0.1:80 wpłynie IIS; i usług IIS i wystąpienie SQL Server , trzeba udostępnić użycie samego certyfikat wspólne.Jest to ograniczenie sterownik trybu jądra protokołu HTTP (Http.sys).Gdy plik Http.sys otrzymuje żądanie na IP:Port 10.0.0.1:80, ponieważ żądanie jest zaszyfrowany, go nie można zbadać adres URL, aby ustalić, czy wniosek należy do SQL Server lub usług IIS.HTTPS.sys można tylko trasa żądania po odszyfruje go.Dlatego nie może on używać innego certyfikat SSL dla różnych aplikacje nie nasłuchują na tym samym IP:Port.

Jeśli SQL Server jest uruchomiony system Windows Vista (lub równoważne edition Windows Server) może być specjalnie zarejestrować certyfikat dla lokalnego adresu IP (IPv4: 127.0.0.1 lub IPv6: [:: 1]), jak również zewnętrzny adres IP komputera, aby włączyć "locahost" łączność za pośrednictwem protokołu SSL.Alternatywnie można określić adres nieokreślony (IPv4: 0.0.0.0 lub IPv6: [::]) Podczas rejestrowania certyfikat SSL.Ponadto system Windows Vista dostaw teraz wbudowane narzędzie zarządzania rejestracji certyfikat SSL, zamiast przy użyciu narzędzie httpcfg.exe; nowe polecenia jest następująca:

netsh http add sslcert ipport=IP:Port certhash=Hash appid=Guid

Na przykład:

netsh http add sslcert ipport=[::]:443 certhash=<hash> appid=<guid>Examples

Poniższy przykład rejestruje certyfikat:

httpcfg set ssl /i 10.0.0.1:80 /h 2c8bfddf59a4a51a2a5b6186c22473108295624d 
/g "{2bb50d9c-7f6a-4d6f-873d-5aee7fb43290}"

Badanie certyfikatów

Aby wyświetlić wszystkie certyfikaty zarejestrowane, należy użyć następującego polecenia:

ssl kwerendy httpcfg

Aby wyświetlić pojedynczy certyfikat, użyj /i opcji:

httpcfg query ssl /iIP:Port

Argumenty

  • IP:Port
    Adres i port kombinację IP dla którego wykonywana jest kwerenda certyfikat.

Przykład

httpcfg query ssl 
httpcfg query ssl /I 10.0.0.1:80

Usuwanie certyfikatów SSL

Aby usunąć certyfikat, użyj /i opcji w następujący sposób:

httpcfg delete ssl /iIP:Port

Argumenty

  • IP:Port
    Adres i port kombinację IP dla którego usuwasz certyfikat.

Przykład

httpcfg delete ssl /i 10.0.0.1:80

Uzyskiwanie certyfikatów

Można uzyskać certyfikats, które są wymagane przez SQL Server dla komunikacji SSL z klientów internetowych z certyfikat urząd, taki jak Verisign.

Jednakże do celów testowych można utworzyć certyfikat testowego za pomocą narzędzie o nazwie MakeCert.exe.MakeCert.exe jest częścią .NET Framework SDK.MakeCert.ext jest również dostępna w zestawie SDK platformy.Aby pobrać SDK, przejdź do firmy Microsoft.NET Framework Developer Center i Centrum pobierania firmy Microsoft, odpowiednio.MakeCert.exe tworzy certyfikat X.509.Tworzy publicznych i prywatnych klucz para podpisów cyfrowych i przechowuje je w pliku certyfikat.Narzędzie to również kojarzy klucz parowanie od określonego wydawcy i tworzy certyfikat X.509, która wiąże określona przez użytkownika nazwa publicznej części klucz para.

Aby utworzyć certyfikat SSL dla serwera, który odpowiada nazwie hosta (MySQLServer), można wykonać MakeCert za pomocą następujących opcji:

makecert -r -pe -nCN="MySQLServer**"-eku** 1.3.6.1.5.5.7.3.1 -ss my -srlocalmachine

-skyexchange-sp"Microsoft RSA SChannel Cryptographic Provider"-sy12

Przełączniki wiersza polecenia

  • -r
    Tworzy certyfikat z podpisem własnym.Certyfikat z podpisem własnym jest certyfikat, który nie jest podpisany przez urząd certyfikacji.Ponieważ nie jest podpisany przez certyfikat organ, mogą być używane do szyfrowanie SSL wymaga ale nie można używać do uwierzytelnianie serwera.

  • -n
    Określa nazwa serwera.Ta nazwa muszą być zgodne ze standardem X.500.Najprostszą metoda jest określić nazwę w cudzysłów, poprzedzony CN =.

  • -eku
    Określa listę oddzielonych przecinkami, ulepszone użycie klucz identyfikatory obiektów (OID) do certyfikat.Dla SQL Server, wymagany jest certyfikat SSL, który jest prawidłowy dla uwierzytelnianie serwera, który ma OID 1.3.6.1.5.5.7.3.1 (szOID_PKIX_KP_SERVER_AUTH).

  • -ss
    Określa magazyn certyfikatów, w którym zapisywane utworzony certyfikat.Zalecamy zapisanie w Moje przechowywać, chociaż mogą być zapisane w dowolnym miejscu w magazynie certyfikat.

  • -sr
    Określa magazyn certyfikatów, w którym znajduje się certyfikat.Lokalizacja może być: CurrentUser (domyślnie) lub localmachine.Ponieważ ten certyfikat jest tworzony dla usługa, należy umieścić na komputerze lokalnym.

  • -przestrzeni powietrznej
    Określa typ klucz certyfikat.Musi to być podpisu, exchange, lub liczbę całkowitą, takich jak 4.Dla algorytmu wymiany klucz publicznego RSA exchange jest wymagane w tym miejscu.Jest to typ klucz używanego do szyfrowania i odszyfrowywania klucze sesja.

  • -sp
    Określa nazwę dostawca CryptoAPI.Certyfikaty utworzone dla SQL Server, to zestaw na Microsoft rsa schannel Cryptographic Provider.

  • -sy
    Określa typ dostawca CryptoAPI.Gdy dostawca jest Microsoft rsa schannel Cryptographic Provider, to 12.

Dodatkowe przełączniki wiersza polecenia

  • -b
    Wartość daty w formacie dd/mm/rrrr, określającą początek okresu ważności certyfikat.Wartość domyślna to jest data utworzenia certyfikat.

  • -e
    Wartość daty w formacie dd/mm/rrrr, który określa koniec okresu ważności certyfikat.Jeśli inaczej nie zestaw domyślne to jest 59 31/12/2039 GMT.

Przykłady

W poniższym przykładzie przedstawiono tworzenie certyfikat za pomocą MakeCert z dodatkowymi opcjami.

makecert -r -pe -n "CN= MySQLServerName" -b 01/01/2000 -e 01/01/2036 
    -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange 
    -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12

Po utworzeniu certyfikat można uzyskać wartość mieszania programu MMC, świadectwa lub przy użyciu narzędzie, takie jak CertUtil.Za pomocą CertUtil, może wystawić certyfikat, który został utworzony.

C:\>certutil -store "my" "MySQLServerName"

================ Certificate 2 ================
Serial Number: e302d3a7a831c9884c0dd736f24825e6
Issuer: CN=MySQLServerName
Subject: CN=MySQLServerName
Signature matches Public Key
Root Certificate: Subject matches Issuer
Cert Hash(sha1): d2 2f 9a 7f 18 cb ed 13 a1 3e be e5 32 69 6c 4b ad ba b9 30
  Key Container = 956cbc46-f005-4aeb-b521-7c313f2ccd10
  Provider = Microsoft RSA SChannel Cryptographic Provider
Encryption test passed
CertUtil: -store command completed successfully.

Wartość mieszania uzyskane z wyniki, uruchamiając CertUtil mogą być przekazywane do narzędzie Httpcfg.exe, aby zarejestrować certyfikat z podpisem własnym.

Przed użyciem MakeCert utworzyć samopodpisany certyfikat SSL i zarejestrowanie go z pliku Http.sys, sprawdź, czy komputer ma już zainstalowany program IIS.Program IIS zawiera kreatora, który ułatwia rejestracji certyfikatów SSL.Dlatego jeśli są już zainstalowane na komputerze, certyfikat SSL może już zostały zarejestrowane w pliku Http.sys.Jeśli nie, należy utworzyć i zarejestrować certyfikat za pomocą kreatora IIS.

Ponieważ certyfikaty SSL efekt dla całego komputera, nie jest istotne, czy usługi IIS jest używany do rejestrowania certyfikat ma być używany przez SQL Server.

Uwagi

  • Po odinstalowaniu wystąpienie SQL Server, pozostaną wszelkie powiązania certyfikat SSL, utworzone przy użyciu Httpcfg.exe, chyba że zostaną ręcznie usunięte.Ponieważ te ustawienia nie zostały utworzone przy użyciu konfiguracji programu SQL Server, nie są usuwane przez nią.Dlatego jeśli wystąpienie SQL Server zostanie odinstalowana, takie powiązania powinny również zostać usunięte.

  • Chociaż przy użyciu protokołu SSL przez HTTP z SQL Server nie wymaga usług IIS po zainstalowaniu usług IIS, obok wystąpienie SQL Server, usługa HTTP SSL staje się połączone z użycia usług IIS.Na przykład po zatrzymaniu usług IIS, takie jak za pomocą net stop iisadmin w wiersz polecenia programu IIS również zatrzymuje usługa HTTP SSL.Ponadto po zainstalowaniu usług IIS w systemie Windows nie może uruchomić usługa HTTP SSL bez również uruchamiania usług IIS (Inetinfo.exe).