Niedawno miałem ciekawy problem (LS Protocol Stack event 14501 i 14428), dotyczący koegzystencji serwerów Lync z infrastrukturą Cisco CUCM/VCS. Pomimo faktu wygenerowania certyfikatów przez ten sam wewnętrzny urząd połączenia TLS pomiędzy serwerami zgłaszały błędy. Znalazłem w sieci podobny przypadek, jednak przygotowanie certyfikatu dla takiego scenariusza (domyślnie certyfikat serwera Lync jest konfigurowany tylko dla certyfikacji serwerowej (OID 1.3.6.1.5.5.7.3.1), a w tym wypadku jest wymagana dodatkowo certyfikacja kliencka (OID 1.3.6.1.5.5.7.3.2). Jak to zrobić najprościej? Domyślne metody nie pozwalają na taką operację – ani kreator certyfikatów z Lync Deployment Wizarda ani tym bardziej zawarty w IIS, formatka webowa urzędu certyfikacyjnego również nie pozwala na utworzenie takiego certyfikatu. Jednak narzędzia linii komend certreq/certutil mają bogate możlwości, które nam to ułatwią. W tym celu musimy sobie przygotować plik inf, zgodnie z artykułem “How to request a certificate with a Custom SAN”. Pik powinien zawierać wpisy jak poniżej:
[Version]
Signature="$Windows NT$"[NewRequest]
Subject = "CN=lync.pepug.org"
Exportable = TRUE ; Private key is exportable
KeyLength = 2048 ; Common key sizes: 512, 1024, 2048, 4096, 8192, 16384
KeySpec = 1 ; AT_KEYEXCHANGE
KeyUsage = 0xA0 ; Digital Signature, Key Encipherment
MachineKeySet = True ; The key belongs to the local computer account
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = CMC[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ;Server Authentication
OID=1.3.6.1.5.5.7.3.2 ;Client Authentication[Extensions]
2.5.29.17 = "{text}"
_continue_ = "dns=lync.pepug.org&"
_continue_ = "dns=fe1.lab.pepug.org&"
_continue_ = "dns=fe2.lab.pepug.org&"
_continue_ = "dns=lsweb.pepug.org&"
_continue_ = "dns=lyncdiscover.pepug.org&"
_continue_ = "dns=lyncdiscoverinternal.pepug.org&"
_continue_ = "dns=dialin.pepug.org&"
_continue_ = "dns=meet.pepug.org&"
_continue_ = "dns=sip.pepug.org"[RequestAttributes]
CertificateTemplate = WebServer1
Dwa słowa komentarza – w sekcji EnhancedKeyUsageExtension wskazujemy, że ma być obsługiwana zarówno opcja Server jak i client Authentication. Ponieważ chcemy certyfikat zainstalować na kilku serwerach w puli, więc wybieramy opcję zezwolenia na eksport klucza prywatnego. W sekcji RequestAttributes wskazujemy wykorzystywany w naszej firmie szablon tworzenia certyfikatu, jednak najciekawszy zapis zawiera sekcja Extensions – ponieważ certyfikat serwera Lync musi zawierać zarówno nazwy hostów jak i szereg innych nazw wykorzystywanych przez Lynca, więc wykorzystujemy specyficzny zapis z użyciem konkretnego identyfikatora dla certyfikatów SAN (zapis działa począwszy od Windows 2008).
Wygląda to trochę nietypowo, ale działa. Teraz tylko pozostaje utworzenie certyfikatu z użyciem narzędzia certreq:
Na jednym z serwerów wykonujemy komendę:
certreq –new certLync.inf certLync.req
Następnie po skopiowaniu pliku (ewentualnie zdalnie, jeżeli jest taka możliwość) na serwer z urzędem certyfikacji generujemy certyfikat:
certreq –submit certLync.req certLync.cer
Teraz pozostaje tylko zainstalowanie certyfikatu:
certreq -accept certLync.cer
i przypisanie go do usług serwera FrontEndowego (no i po wyeksportowaniu do pfx-a instalacja na drugim serwerze w puli).
Po restarcie usług komunikacja pomiędzy systemami zaczyna działać poprawnie.
Brak komentarzy:
Prześlij komentarz