„Certyfikat klucza publicznego i klucz prywatny nie są zgodne” w przypadku korzystania z certyfikatu wydanego przez GoDaddy [zamknięte]

86

Próbuję zainstalować certyfikat SSL GoDaddy na nowym module równoważenia obciążenia, który konfiguruję w Amazon AWS. Pierwotnie certyfikat utworzyłem w GoDaddy przy użyciu programu keytool do bezpośredniej instalacji na serwerze Glassfish 3.1 (Amazon linux ami). Nie miałem problemów z uzyskaniem tej konfiguracji bezpośrednio na serwerze. Teraz muszę przenieść certyfikat z serwera WWW do nowego modułu równoważenia obciążenia. Amazon wymaga, aby klucz prywatny i certyfikaty były w formacie PEM, więc do tworzenia nowych certyfikatów użyłem narzędzia „rekey” w GoDaddy. Kiedy ładuję je na ekranie konfiguracji modułu równoważenia obciążenia w konsoli AWS Mgmt, pojawia się komunikat o błędzie: „Certyfikat klucza publicznego i klucz prywatny nie są zgodne”.

Oto jak tworzę klucze:

$ openssl genrsa -des3 -out private.key 2048
$ openssl req -new -key private.key -out apps.mydomain.com.csr

Następnie przesyłam plik .csr do GoDaddy podczas procesu „ponownego klucza”. Po zakończeniu aktualizacji klucza pobieram 2 nowo utworzone certyfikaty (apps.mydomain.com.crt i gd_bundle.crt). Pobieram je wybierając (Apache) jako typ serwera (próbowałem też "inne" i "Cpanel", ale wszystkie wyglądają na takie same).

W tym momencie usuwam szyfrowanie z pliku private.key za pomocą następującego polecenia:

$ openssl rsa -in private.key -out private.pem

W tym momencie wracam do konsoli AWS Mgmt, tworzę równoważenie obciążenia, dodaję przekierowanie bezpiecznego serwera i umieszczam zawartość następujących plików w odpowiednich polach na ekranie, gdzie prosi o skonfigurowanie certyfikatu ssl:

private.pem --> Private Key
apps.mydomain.com.crt --> Public Key Certificate
gd_bundle.crt --> Certificate Chain

Po kliknięciu przycisku „Kontynuuj” pojawia się komunikat o błędzie „Błąd: Certyfikat klucza publicznego i klucz prywatny nie są zgodne”.

- Czy istnieje sposób, w jaki mogę sprawdzić, czy otrzymuję prawidłowy komunikat o błędzie od Amazon? Wydaje mi się dziwne, że klawisze nie pasują do siebie, gdy postępuję zgodnie z instrukcjami GoDaddy.

Próbowałem utworzyć plik private.key bez szyfrowania RSA przed utworzeniem pliku .csr i nie wydaje się to robić żadnej różnicy.

Zakładam również, że pliki .crt, które pobieram z GoDaddy, są w formacie .PEM, ale nie jestem pewien, jak to zweryfikować.

Jakieś pomysły?

Felby
źródło
1
Stack Overflow to witryna zawierająca pytania dotyczące programowania i programowania. To pytanie wydaje się być niezwiązane z tematem, ponieważ nie dotyczy programowania ani programowania. Zobacz, o jakie tematy mogę zapytać w Centrum pomocy. Być może Super User byłby lepszym miejscem do zadawania pytań. Zobacz też Gdzie mogę zadawać pytania dotyczące operacji deweloperskich? .
jww
Ten post ma ponad 3 lata, po co teraz go przenosić?
Felby
1
Felby - ludzie często mówią: „... ale zobacz ten post i tamten post”. Więc nie wystarczy utrzymywać porządek w nowych postach - musimy przynajmniej otrzymać wiadomość na starych postach. I jak to jest warte, nie sądzę, że to złe pytanie. To trochę nie na temat dla przepełnienia stosu.
jww
@Felby powinieneś rozważyć tę odpowiedź do akceptacji. Jest to ten, którego większość programistów szuka, gdy pojawia się ten problem w AWS.
Noel Baron

Odpowiedzi:

61

Dla mnie to był łatwy dwuetapowy:

  1. Zamień klucz prywatny na PEM:

    openssl rsa -in yourdomain.key -outform PEM

  2. Konwertuj certyfikat i pakiet certyfikatów na PEM :

    openssl x509 -inform PEM -in yourdomain.crt

    openssl x509 -inform PEM -in bundle.crt

Jonathon Hill
źródło
1
Ta konkretna odpowiedź naprawdę mi pomogła. Dzięki Jonathan. Dla przypomnienia, twojadomena.crt to klucz publiczny, certyfikat, który otrzymałeś od swojego dostawcy (może to być również plik .cer)
user_v
Ciągle otrzymuję błądWARNING: can't open config file: /etc/pki/tls/openssl.cnf
tq
2
@tq - niektóre polecenia OpenSSL również mają -configopcję. Użyj go, aby określić ścieżkę do pliku konfiguracyjnego, którego używasz.
jww
@felby Należy oznaczyć tę odpowiedź jako zaakceptowaną odpowiedź. To jedyna odpowiedź, która nie powoduje problemu zaufania SSL na urządzeniach z systemem iOS.
Noel Baron
Ta odpowiedź jest bardzo pomocna w przypadku Wildcard SSL. Musisz przekonwertować zarówno plik domain.crt, jak i gd_bundle.crt.
Ducle
40

Dla przypomnienia i dla każdego, kto próbuje to rozgryźć:

twojadomena.klucz -> polecenie terminala: sudo openssl rsa -in yourdomain.key -outform PEM -out yourdomain.pem -> klucz prywatny

twojadomena.crt -> klucz publiczny

gd_bundle.crt -> łańcuch certyfikatów

i jesteś gotowy do pracy :)

Chris J
źródło
2
OMG, straciłem tyle godzin z problemem, właśnie mnie uratowałeś! Kupiłem certyfikat RapidSSL: sztuka polegała na 1) przekonwertowaniu klucza prywatnego, jak sugerujesz tutaj, i 2) odwróceniu kolejności certyfikatów w łańcuchu certyfikatów dostarczonym przez RapidSSL. Dzięki!
MiniQuark
ciągle prosi mnie o hasło, ale mój rapidssl cert został utworzony bez niego
tq
Polecenie sudo poprosi o hasło administratora, chyba że konto jest skonfigurowane tak, aby nie wymagało hasła za pomocą kilku różnych metod. Czy to też hasło, o którym mówisz?
Chris J
Aby dodać coś, gdzie może go znaleźć ktoś, kto tego potrzebuje, otrzymaliśmy od klienta certyfikat Host Gator i wydawało się, że jest całkiem dobrze skonfigurowany - bez konwersji PEM, a pakiet CA był już połączony razem. Jednak nie wszedłbym do Amazon. Tak samo było z kolejnością certyfikatów w pakiecie. Odwracając kolejność, wszedł i zadziałał.
CargoMeister
23

Wygląda na to, że problem polegał na sposobie, w jaki kopiowałem zawartość klucza i certyfikatów do konsoli zarządzania AWS. Używałem pulpitu Ubuntu działającego w Virtual Box na pulpicie Windows 7; skopiuj i wklej wartości z ekranu gedit do przeglądarki działającej w oknie Windows. Po otwarciu klucza i plików certyfikatów w tym samym pudełku co przeglądarka internetowa (w tym przypadku Windows) certyfikaty przeszły pomyślnie. Zgaduję, że niektóre części pliku nie są poprawnie przetwarzane podczas korzystania ze wspólnej tablicy schowka między klientem Virtual Box a hostem. Sprawa zamknięta.

Felby
źródło
Czy możesz zaakceptować swoją odpowiedź, aby ludzie wiedzieli, że to zostało rozwiązane?
Phil Sturgeon,
2
Dziwne, myślałem, że już to zaakceptowałem ...
Felby
7

Znaleźliśmy alternatywne rozwiązanie tego problemu. Mieliśmy te same objawy z tym samym błędem.

Następnie spróbowaliśmy ponownie wprowadzić kody pem jeszcze raz, ale tym razem upewniliśmy się, że raz wciśnięto enter i upewniliśmy się, że kursor znajduje się w pustej linii na końcu każdego okna. Potem to uratowaliśmy. ZADZIAŁAŁO.

To rozwiązało nasz problem, więc może rozwiązać go dla innych.

PlateSpinner
źródło
1

Jeden mały chwyt. Używam skrzynki Windows (Win 7 Pro) i kiedy korzystałem z portu Windows OpenSSL, pliki wyjściowe miały znaki końca linii w stylu Unix (LF).

Musiałem przekonwertować plik do stylu Windows (CRLF), aby przesłać klucz prywatny.

Christopher Stevenson
źródło
0

Mogę zaproponować alternatywne rozwiązanie i informacje. Generalnie wszystkie certyfikaty mają format pliku PEM. Możesz po prostu otworzyć notatnik lub dowolny edytor tekstu i przeciągnąć pliki, które otrzymałeś w formacie .crt. Zwykle nazywany jest plikiem .PEM.Jeśli certyfikat jest załadowany do twojego narzędzia, możesz wyeksportować certyfikat jako plik pfx z keytool. Następnie możesz oddzielić plik pfx od klucza prywatnego od pliku pfx. Ponieważ plik pfx jest połączeniem twojego certyfikatu i klucza prywatnego, możesz więc osobno pobrać plik klucza prywatnego i użyć go na swoim Amazon AWS.

Podejrzewam, że może istnieć inny sposób zainstalowania certyfikatu. Być może możesz skontaktować się z urzędem certyfikacji i czy jest jakiś sposób na ponowne wydanie certyfikatu.

Rajan
źródło