Wymagania dotyczące certyfikatów dla programu SQL Server
W tym artykule opisano wymagania dotyczące certyfikatów dla programu SQL Server oraz sposób sprawdzania, czy certyfikat spełnia te wymagania.
Wymagania dotyczące certyfikatów szyfrowania programu SQL Server
W przypadku korzystania z protokołu TLS na potrzeby szyfrowania programu SQL Server należy aprowizować certyfikat (jeden z trzech typów cyfrowych), który spełnia następujące warunki:
Certyfikat musi znajdować się w magazynie certyfikatów komputera lokalnego lub magazynie certyfikatów konta usługi programu SQL Server. Zalecamy magazyn certyfikatów komputera lokalnego, ponieważ pozwala uniknąć ponownego konfigurowania certyfikatów przy użyciu zmian konta uruchamiania programu SQL Server.
Konto usługi programu SQL Server musi mieć niezbędne uprawnienia dostępu do certyfikatu TLS. Aby uzyskać więcej informacji, zobacz Konfigurowanie silnika bazy danych programu SQL Server na potrzeby szyfrowania połączeń.
Bieżący czas systemowy musi być po wartości właściwości Ważne od i przed wartością właściwości Ważne do certyfikatu. Aby uzyskać więcej informacji, zobacz Wygasłe certyfikaty.
Uwaga
Certyfikat musi być przeznaczony do uwierzytelniania serwera. Wymaga to właściwości Rozszerzone użycie klucza certyfikatu w celu określenia Uwierzytelnianie serwera (1.3.6.1.5.5.7.3.1).
Certyfikat należy utworzyć przy użyciu opcji
KeySpec
AT_KEYEXCHANGE
. Wymaga to certyfikatu, który używa dziedziczonego dostawcy magazynu kryptograficznego do przechowywania klucza prywatnego. Zazwyczaj właściwość użycia klucza certyfikatu (KEY_USAGE) obejmuje również szyfrowanie kluczy (CERT_KEY_ENCIPHERMENT_KEY_USAGE
) i podpis cyfrowy (CERT_DIGITAL_SIGNATURE_KEY_USAGE
).Właściwość Subject certyfikatu musi wskazywać, że nazwa pospolita (CN) jest taka sama jak nazwa hosta lub w pełni kwalifikowana nazwa domeny (FQDN) komputera serwera. Jeśli używasz nazwy hosta, sufiks DNS musi być określony w certyfikacie. Jeśli program SQL Server jest uruchomiony w klastrze w trybie przełączania awaryjnego, Common Name (CN) musi być zgodny z nazwą hosta lub pełną nazwą domenową (FQDN) serwera wirtualnego, a certyfikaty muszą być zainstalowane na wszystkich węzłach w klastrze. Jeśli na przykład masz klaster dwuwęzłowy z węzłami o nazwie
test1.*<your company>*.com
itest2.*<your company>*.com
, a masz serwer wirtualny o nazwie virtsql, musisz zainstalować certyfikat dlavirtsql.*<your company>*.com
w obu węzłach. Aby uzyskać więcej informacji na temat klastrów SQL, zobacz Przed zainstalowaniem klastrowania trybu failover.Po nawiązaniu połączenia z listenerem grupy dostępności certyfikaty przygotowane dla każdego węzła serwera uczestniczącego w klastrze przełączania awaryjnego powinny również zawierać listę wszystkich listenerów grupy dostępności ustawionych w Alternatywna Nazwa Podmiotu certyfikatu. Aby uzyskać więcej informacji, zobacz Odbiorniki i certyfikaty TLS/SSL. Aby uzyskać więcej informacji na temat SQL Always On, zobacz Łączenie z odbiornikiem grupy dostępności Always On.
Alternatywna nazwa podmiotu powinna zawierać wszystkie nazwy, których klienci mogą używać do nawiązywania połączenia z wystąpieniem programu SQL Server. W przypadku korzystania z grup dostępności alternatywna nazwa podmiotu powinna zawierać NetBIOS i w pełni kwalifikowaną nazwę domeny (FQDN) hosta lokalnego oraz utworzonych odbiorników.
Klient musi mieć możliwość zweryfikowania własności certyfikatu używanego przez serwer. Jeśli klient ma certyfikat klucza publicznego urzędu certyfikacji, który podpisał certyfikat serwera, nie jest konieczna żadna dalsza konfiguracja. System Microsoft Windows zawiera certyfikaty kluczy publicznych wielu urzędów certyfikacji. Jeśli certyfikat serwera został podpisany przez publiczny lub prywatny urząd certyfikacji, dla którego klient nie ma certyfikatu klucza publicznego, należy zainstalować certyfikat klucza publicznego urzędu certyfikacji, który podpisał certyfikat serwera na każdym kliencie, który ma nawiązać połączenie z programem SQL Server.
Ważne
Program SQL Server nie zostanie uruchomiony, jeśli certyfikat istnieje w magazynie komputerów, ale spełnia tylko pewne wymagania na powyższej liście i jeśli jest ręcznie skonfigurowany do użycia przez program SQL Server Configuration Manager lub za pośrednictwem wpisów rejestru. Wybierz inny certyfikat spełniający wszystkie wymagania lub usuń certyfikat używany przez program SQL Server, dopóki nie będzie można aprowizować certyfikatu spełniającego wymagania lub użyć certyfikatu wygenerowanego samodzielnie zgodnie z opisem w certyfikatów z podpisem własnymprogramu SQL Server.
Sprawdzanie, czy certyfikat spełnia wymagania
W programie SQL Server 2019 (15.x) i nowszych wersjach program SQL Server Configuration Manager automatycznie weryfikuje wszystkie wymagania dotyczące certyfikatów podczas samej fazy konfiguracji. Jeśli program SQL Server zostanie pomyślnie uruchomiony po skonfigurowaniu certyfikatu, dobrym wskazaniem jest, że program SQL Server może używać tego certyfikatu. Jednak niektóre aplikacje klienckie mogą nadal mieć inne wymagania dotyczące certyfikatów, które mogą być używane do szyfrowania, i mogą wystąpić różne błędy w zależności od używanej aplikacji. W tym scenariuszu należy sprawdzić dokumentację pomocy technicznej aplikacji klienckiej, aby uzyskać więcej informacji na ten temat.
Możesz użyć jednej z następujących metod, aby sprawdzić ważność certyfikatu do użycia z programem SQL Server:
narzędzie sqlcheck:
sqlcheck
to narzędzie wiersza polecenia, które analizuje bieżące ustawienia komputera i konta usługi i generuje raport tekstowy w oknie konsoli, który jest przydatny w celu rozwiązywania różnych błędów połączenia. Dane wyjściowe zawierają następujące informacje dotyczące certyfikatów:Details for SQL Server Instance: This Certificate row in this section provides more details regarding the certificate being used by SQL Server (Self-generated, hard-coded thumbprint value, etc.). Certificates in the Local Computer MY Store: This section shows detailed information regarding all the certificates found in the computer certificate store.
Aby uzyskać więcej informacji na temat możliwości narzędzia i instrukcji pobierania, zobacz Welcome to the CSS_SQL_Networking_Tools wiki.
narzędzie certutil:
certutil.exe
jest programem wiersza polecenia zainstalowanym w ramach Usług Certyfikatów. Możesz użyć certutil.exe, aby zrzucić i wyświetlić informacje o certyfikacie. Użyj opcji-v
, aby uzyskać szczegółowe informacje. Aby uzyskać więcej informacji, zobacz certutil.przystawki Certyfikaty: możesz również użyć okna certyfikatów, aby wyświetlić więcej informacji o certyfikatach w różnych magazynach certyfikatów na komputerze. Jednak to narzędzie nie wyświetla informacji
KeySpec
. Aby uzyskać więcej informacji na temat wyświetlania certyfikatów za pomocą przystawki MMC, zobacz Instrukcje: wyświetlanie certyfikatów za pomocą przystawki MMC.
Więcej informacji
Wygasłe certyfikaty
Program SQL Server sprawdza tylko ważność certyfikatów w momencie konfiguracji. Na przykład nie można użyć programu Configuration Manager w programie SQL Server 2019 (15.x) i nowszych wersjach, aby aprowizować wygasły certyfikat. Program SQL Server nadal działa bez problemów, nawet jeśli certyfikat wygaśnie po jego wdrożeniu. Jednak niektóre aplikacje klienckie, takie jak Power BI, sprawdzają ważność certyfikatu w każdym połączeniu i zgłaszają błąd, jeśli wystąpienie programu SQL Server jest skonfigurowane do używania wygasłego certyfikatu do szyfrowania. Zalecamy, aby nie używać wygasłego certyfikatu na potrzeby szyfrowania programu SQL Server.
Powiązana zawartość
- obsługa protokołu TLS 1.3
- Konfigurowanie protokołu TLS 1.3