2009-04-28 23 views
29

Oto sytuacja. Wprowadzam zmiany do aplikacji, ale nie mam środowiska testowego. Dla zespołu testującego istnieje serwer QA, ale wolę przetestować aplikację na moim komputerze lokalnym (wdrażanie zmian na tym serwerze może przerwać testowanie). Skonfigurowałem środowisko na mojej lokalnej maszynie, ale jest problem.Dlaczego nie można użyć jednego certyfikatu SSL dla wielu komputerów?

Aplikacja odczytuje dane z aplikacji innej firmy. Potrzebuje certyfikatu SSL, aby połączyć się z firmą zewnętrzną.

Moje pytanie brzmi, dlaczego nie mogę użyć certyfikatu SSL z serwera kontroli jakości na moim komputerze lokalnym?

Zrobiłem pobieżne wyszukiwanie w przepełnieniu stosu i wydaje mi się, że po wydaniu certyfikatu przez urząd certyfikacji może go użyć dowolny komputer. Domyślam się, że źle zrozumiałem jakąś część procesu SSL.

Odpowiedz

31

Certyfikat SSL jest powiązany z rzeczywistą nazwą hosta. Jeśli masz certyfikat SSL dla "qa.example.com", nie będzie działać na Twoim komputerze o nazwie "dev.example.com".

Być może to jest problem, który masz.

+1

sprawia, że sens. Tak więc certyfikat SSL jest specyficzny dla tego komputera. Wyobrażałem sobie, że to było naprawdę długie hasło. Dzięki. –

+27

@kyle: Nie jest tak, że certyfikat jest powiązany z * maszyną * jest przypisany do * nazwy hosta *. Wiele maszyn, które odpowiadają na tę samą nazwę (np. W konfiguracji równoważenia obciążenia), może (i powinno) używać tego samego certyfikatu. – nsayer

+3

Co z certyfikatami wieloznacznymi? – franzlorenzon

0

Wydaje mi się, że trzeba trochę bardziej rozwinąć środowisko, ale być może nie skopiowano części klucza prywatnego do certyfikatu na komputerze lokalnym. Klucz prywatny i publiczny są niezbędne do korzystania z certyfikatu. Zakładam, że pisząc "czytaj od strony trzeciej", używasz certyfikatu klienta.

3

Jest to zdecydowanie możliwe do zrobienia, jak inaczej serwery działają na farmie internetowej? Wszystkie serwery w farmie internetowej mają zainstalowany ten sam certyfikat.

nie mam doświadczenia w Apache, ale dla IIS proces jest udokumentowany tutaj http://support.microsoft.com/kb/313299

+1

Muszą znajdować się w tej samej domenie lub poddomenie, w zależności od konfiguracji certyfikatu. Większość zbalansowanych pod względem obciążenia konfiguracji korzysta z jednej głównej bramy i przekazuje żądania w sieci prywatnej. –

+0

Równowagę można również załadować, używając nazwy hosta (w DNS) do obsługi wielu komputerów, z których każda jest skonfigurowana z tym samym certyfikatem i kluczem prywatnym, z których każdy odpowiada za żądania o tej samej nazwie. To prawda, że ​​w większości instalacji na skalę korporacyjną istnieje zamiast tego serwer proxy kryptograficzny, który hermetyzuje protokół SSL dla całej farmy i przekazuje niezaszyfrowane połączenia w sieci prywatnej z powrotem do maszyn w farmie, ale nie trzeba tego robić to w ten sposób. – nsayer

0

W takich sytuacjach osoba trzecia będzie ogólnie zrobić jedną z dwóch rzeczy. Zapewnij dostęp do piaskownicy kontroli jakości, która nie wymaga certyfikatu. lub możesz wystawić tymczasowy certyfikat, który zaakceptuje, a który nie zostanie zatwierdzony przez urząd certyfikacji. Byłoby dziwne, gdyby dostawca usług internetowych strony trzeciej nie zapewnił potrzeby posiadania różnych QA i prod. środowiska.

23

Zakładam, że to, co opisujesz, wykonuje uwierzytelnianie klienta SSL na zdalnej stronie trzeciej. Twój produkt zainicjował połączenie z trzecimi częściami jako klient, a osoba trzecia decyduje, czy twój certyfikat jest wystarczająco dobry do połączenia.

Certyfikat jest zasadniczo trzy rzeczy:

  • Klucz prywatny - które powinny być posiadane jedynie przez podmiot reprezentowany przez certyfikat
  • klucz publiczny - klucz, które są wspólne ze światem
  • informacje o certyfikacie, które zawierają klucz publiczny oraz czytelne dane identyfikujące posiadacza klucza - jest to podpisane kryptograficznie przez wystawcę certyfikatu.

To ... to coś więcej niż hasło, ale na końcu wszystkie dane.

Odpowiedź na pytanie, czy można zainstalować certyfikat klienta SSL w wielu lokalizacjach, to odpowiedź "tak" i "nie". Głównie zależy to od wymagań bezpieczeństwa systemu zewnętrznego oraz od sposobu przechowywania tego klucza prywatnego.

Istnieje możliwość zapisania pary klucza prywatnego/publicznego i certyfikatu w pliku - jednym standardem jest PKCS #12. PKCS12 są zwykle zabezpieczane hasłem. Wiele narzędzi programowych umożliwia tworzenie pary kluczy, przechowywanie ich w PKCS12 i wykonywanie różnych protokołów certyfikatów potrzebnych do zażądania i zakończenia wydawania certyfikatów od strony trzeciej (podejrzewam, że strona trzecia wymaga podpisania certyfikatu przez jedną osobę). listy zaufanych wystawców). Każdy serwer aplikacji, który widziałem, pozwala następnie skonfigurować plik certyfikatu jako certyfikat po stronie klienta.

Jeśli tak jest przechowywany certyfikat QA SSL, to nie powinno być problemu z zainstalowaniem go na komputerze.

Oto haczyk - czasami polityka bezpieczeństwa nakazuje przechowywanie certyfikatów na tokenie sprzętowym. Jest to zwykle środek bezpieczeństwa gwarantujący, że tylko jeden podmiot może korzystać z certyfikatu. Kopiowanie plików certyfikatów oprogramowania działa dobrze w środowisku testowym, ale jest to dość słaba praktyka bezpieczeństwa w przypadku działającej instalacji produktu. Jeśli serwer kontroli jakości używa tokena sprzętowego, sprzęt prawdopodobnie chroni kopiowanie pary kluczy prywatnych w innej lokalizacji. Bez dostępu do pary kluczy prywatnych nie będzie można wysłać żądania SSL do strony trzeciej - demonstracja dostępu do klucza prywatnego jest częścią protokołu.

W takim przypadku należy poprosić o własny certyfikat i parę kluczy, aby uzyskać dostęp do strony trzeciej, chyba że firma oferuje mechanizm udostępniania tokenów sprzętowych. To nie do końca szaleństwo - niektóre farmy serwerów to robią - wszystkie serwery mają konfigurację pozwalającą na użycie wspólnego, sieciowego HSM (sprzętowego modułu bezpieczeństwa) i użycie pary kluczy. Jest to często prawdziwe w przypadku certyfikatów witryn SSL, więc wszystkie serwery w kolekcji mogą wyglądać na te same serwery. Sztuczka polega na tym, że ten rodzaj sprzętu jest dość wysoki. Jeśli przeprowadzasz szybkie i brudne testy, wydaje mi się, że prawdopodobnie nie będzie dostępu do tego rodzaju systemu.

Chciałbym zapytać o certyfikaty oprogramowania i czy możliwe jest posiadanie kopii. Mogą istnieć powody, dla których zabraniają tego ... ale nie jest trudno je zainstalować, a jeśli robisz tylko testy, naprawdę nic nie ryzykujesz.

+0

Dzięki za szczegółową odpowiedź, otrzymałem lepsze zrozumienie. Zajmę się uzyskiwaniem certyfikatu i jeśli moja firma ma jakieś zasady, które by to uniemożliwiły. –

+0

Problem, który ma, jest prawdopodobnie znacznie, znacznie prostszy niż to, co nakreśliłeś. Próbuje użyć certyfikatu i klucza prywatnego dla komputera A na komputerze B. Nazwy hostów nie są jednak zgodne, więc przeglądarka je odrzuca. – nsayer

+0

Przeglądarka nie musi odrzucać niezgodności nazwy hosta certyfikatu/DNS. W przypadku niektórych ustawień można ręcznie zatwierdzić użycie i rozwiązać ten problem. – bethlakshmi

0

Z technicznego punktu widzenia certyfikat (wyeksportowany z tych narzędzi PKI) nie zawiera klucza prywatnego. Więc nawet w zrównoważonym obciążeniu, zwykłe kopiowanie certyfikatu nie pomoże?

Ponadto, gdy generujemy certyfikaty za pomocą narzędzi PKI, można podać dowolny ciąg dla nazwy wyróżniającej (np. "CN = xyz, OU = ttr, O = x"). Zastanawiam się, jakie byłoby zachowanie, gdyby różne maszyny używały tej samej nazwy wyróżniającej do tworzenia certyfikatów?

2

Certyfikaty SSL są powiązane z nazwą hosta. Aby móc z niego korzystać, należy zmienić nazwę hosta na maszynę deweloperską (np. Przy użyciu pliku hosts).

4

Wiem, że jest to starszy wpis i może czegoś brakuje, ale wydaje się, że wszyscy tęskniłem za prawdziwą odpowiedzią. Jeśli chcesz mieć pojedynczy certyfikat działający na wielu serwerach korzystających z wielu hostów/domen, musisz kupić certyfikat SAN. Robimy to cały czas w pracy ...

2

Zazwyczaj podczas uzgadniania SSL nazwa hosta, która jest częścią certyfikatu, jest zgodna z nazwą hosta drugiej strony połączenia SSL. Właśnie dlatego certyfikat jest powiązany z nazwą hosta.

Istnieje kilka sposobów wyjścia z tego.

  1. Użyj certyfikatu wieloznacznego.
  2. Wyłącz weryfikację nazwy hosta i zaakceptuj zwiększone ryzyko.
  3. Dostosuj weryfikację nazwy hosta.

Zobacz http://support.godaddy.com/help/article/567/what-is-a-wildcard-ssl-certificate i http://docs.oracle.com/javase/7/docs/api/javax/net/ssl/HostnameVerifier.html

1

Certyfikat zawiera informacje: 1) Szczegóły, takie jak nazwa, domena, adres, data wygaśnięcia klucza itp O firmie/indvidual która posiada certyfikat. 2) Posiada klucz publiczny. 3) Niektóre zaszyfrowane dane. To jest sedno.

Te zaszyfrowane dane to wszystkie informacje o użytkowniku, a także klucz publiczny obecny w certyfikacie, który został podpisany kluczem prywatnym urzędu certyfikacji, który wystawił certyfikat.

Gdy przeglądarka otrzymuje certyfikat, próbuje odszyfrować zaszyfrowane dane przy użyciu publicznego klucza urzędu certyfikacji już wbudowanego w przeglądarce. Jeśli więc wszystkie informacje zawarte w certyfikacie są zgodne po wyrenderowaniu, zapewnia to, że właściciel tej domeny wymieniony w certyfikacie ma klucz prywatny odpowiadający kluczowi publicznemu wymienionemu w certyfikacie.

Tak więc, jeśli ktoś publikuje (np. Strony internetowe), że jestem właścicielem certyfikatu, oznacza to, że osoba/firma jest właścicielem odpowiedniej pary kluczy prywatnych.

POWRÓT DO PROBLEMU: Prawdziwy problem polega na tym, że "aplikacja odczytuje dane z aplikacji innej firmy i potrzebuje certyfikatu SSL, aby połączyć się z osobą trzecią."

i do czego służy ten certyfikat. Zasadniczo twoja aplikacja chce nawiązać połączenie SSL z aplikacją innej firmy, a jeśli masz certyfikat, wszystko gotowe. Najpierw zakładam, że umieściłeś certyfikat w złym katalogu, aby twoja aplikacja nie mogła go odczytać i nie mogła nawiązać połączenia SSL z osobą trzecią. Lub istnieje problem z konfiguracją pliku.

Wiem, że odpowiedź jest bezużyteczna, ale myślę, że lepiej napisać to, co czuję.

2

@Kyle Jones - Moje pytanie brzmi, dlaczego nie mogę używać certyfikatu SSL z serwerem QA na moim komputerze lokalnym?

@autonomatt - Sub-pytanie: VeriSign i inne firmy zapytać, jak wiele serwerów instalowania cert SSL na ... coraz dziwne klientowi wywoływanie mówiąc przeglądarkę zgłasza problem w/certyfikatu . ..

Zgodnie z prawem? Możesz zainstalować certyfikat SSL na więcej niż jednym komputerze, ale może nie być tego w stanie legalnie. Firma CA podpisująca, podobnie jak Network Solutions, ma prawne ograniczenia dotyczące zakupu. Kupując certyfikat SSL, kupujesz go do zainstalowania tylko na jednym komputerze. Powinieneś przeczytać warunki podpisującego CA, z którego kupujesz certyfikat.

Technicznie? Technicznie, z wyjątkiem niektórych sprzętowych serwerów z akceleracją SSL, można skopiować klucz KEY i CRT do dowolnego serwera WWW w celu obsługi ważnego połączenia SSL. Należy zauważyć, że niektóre certyfikaty SSL są dostarczane/dostarczane z urzędu certyfikacji za pomocą łańcucha certyfikatów, który musi być również zainstalowany po stronie serwerów.Bez zainstalowanego łańcucha certyfikatów przeglądarka klienta nie może poprawnie sprawdzić poprawności certyfikatu SSL. Powinieneś sprawdzić, czy łańcuch CA jest dostarczony z certyfikatem SSL dostarczonym przez CA podpisującego.

Wymagania dotyczące rozdzielczości IP. Certyfikat SSL jest powiązany z nazwą hosta. Gdy przeglądarka klienta wysyła żądanie do serwera, łączy się z adresem IP rozwiązanym z nazwy domeny, a następnie rozpoczyna proces uzgadniania SSL/TLS. Serwer WWW odpowiadający na ten adres IP musi przedstawić certyfikat SSL o wspólnej nazwie, której przeglądarka klienta żąda za pośrednictwem adresu IP. Oznacza to, że można skonfigurować tylko jeden certyfikat SSL na jeden adres IP. Klient wysyła tylko zaszyfrowane żądania HTTP 1.1, więc serwer nie ma pojęcia, jakie jest rzeczywiste żądanie domeny klienta aż do uzgadniania SSL/TLS.

Nieprodukcyjna rozdzielczość IP. Aby zainstalować w innym miejscu, przeglądarka internetowa musi poprawnie rozpoznać nazwę hosta na adres IP. Jeśli więc znajdujesz się w środowisku nieprodukcyjnym, klient musi rozwiązać adres IP inaczej niż środowisko produkcyjne. Można tego dokonać na alternatywnych serwerach DNS lub w lokalnym pliku hosts wszystkich komputerów potrzebna jest alternatywna translacja DNS.

Proces instalacji technicznej. Aby zainstalować certyfikat SSL na innym komputerze, skopiuj łańcuch KEY, SSL CRT i łańcuch CA w odpowiednich plikach skonfigurowanych dla serwera WWW. Jeśli Apache, może wszystko iść w jednym pliku PEM dla certyfikatu SSL.

Następnie upewnij się, że serwer obsługuje ten plik PEM na adres IP, który rozpoznaje nazwę pospolitą w certyfikacie SSL.

Wildcard SSL Certs. Niektóre ośrodki CA również zapewniają certyfikaty SSL Willdcard, takie jak * .domain.com. Pamiętaj, że przeglądarka internetowa musi rozpoznać ten typ certyfikatu i chroni tylko jeden poziom subdomeny. Więc www.domain.com może być chroniony, ale www.sub1.domena.com spowoduje, że przeglądarka internetowa klienta da użytkownikowi błąd sprawdzania poprawności.

Kilka powodów dlaczego klient przeglądarek internetowych otrzymują SSL cert błędy Walidacja:

  1. jeśli potrzebna jest CA Chain ale nie podana przez serwer WWW.
  2. jeśli urząd certyfikacji podpisu głównego nie jest zaufanym ośrodkiem CA w przeglądarce klienta przeglądarki Uprawnienia SSL - jest tak zawsze w przypadku certyfikatów SSL z własnym podpisem.
  3. , jeśli przeglądarka klienta żąda domeny za pośrednictwem protokołu SSL, która nie jest zgodna z nazwą wspólną certyfikatu SSL.
  4. , jeśli przeglądarka klienta nie może uzyskać dostępu do Punktów dystrybucji CRL x509 z podpisującego urzędu certyfikacji - więc klient w sieci z ograniczeniami lub zamkniętej sieci nie potwierdzi certyfikatu SSL. Adres URL listy CRL jest podawany podczas uzgadniania SSL/TLS. Zobacz także: http://en.wikipedia.org/wiki/Revocation_list#Problems_with_CRLs.
0

rozumiem moja odpowiedź na to pytanie jest zbyt późno w thread..but wpadłem na tym samym numerze dzisiaj podczas instalacji tego samego certyfikatu do 2 serwerów w równoważenia obciążenia konfiguracji, OS = Windows 2008/IIS 7.5 i był w stanie znaleźć rozwiązanie.

Udało mi się zainstalować go na pierwszym serwerze, klikając opcję "Kompletne żądanie certyfikatu" i przechodząc do lokalizacji, w której znajduje się certyfikat "abc.cer" (Zakładając, że masz już certyfikat z sobą). Następnie skopiowałem ten sam plik "abc.cer" na drugim serwerze i wypróbowałem opcję "Kompletne żądanie certyfikatu" i nie zadziałało. Certyfikat pojawi się jako zainstalowany, ale zniknie, gdy tylko odświeżę Menedżera usług IIS.Następnie wypróbowałem opcję "eksportowania" certyfikatu z pierwszego serwera (generuje plik rozszerzenia .pfx), a następnie zaimportowałem to samo na drugim serwerze. Ta metoda zadziałała.

0

To zależy co masz na myśli przez to

jeden certyfikat wildcard mogą być wykorzystywane do wielu hostów z różnymi nagrywa.

Na przykład masz certyfikat wildcard dla domeny *.stackoverflow.com. Można mieć CA zatwierdzony TLS ile nowych serwerach z systemem używasz subdomeny domeny stackoverflow.com

tj mail-server.stackoverflow.com

Powiązane problemy