Nie mogę skonfigurować SSL. Wyszukałem w Google i znalazłem kilka rozwiązań, ale żadne z nich nie zadziałało. Potrzebuję pomocy, proszę ...
Oto błąd, który otrzymuję, gdy próbuję ponownie uruchomić nginx:
root@s17925268:~# service nginx restart
Restarting nginx: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/ssl/ssl.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: configuration file /etc/nginx/nginx.conf test failed
Mój certyfikat pochodzi ze StartSSL i jest ważny przez 1 rok.
Oto, co przetestowałem:
- Certyfikat i klucz prywatny nie mają końcowych spacji.
- Nie używam domyślnego pliku server.key.
- Sprawdziłem nginx.conf i dyrektywy wskazują na poprawny klucz prywatny i certyfikat.
Sprawdziłem też moduł i otrzymałem inny moduł dla klucza i certyfikatu.
Dziękuję za pomoc. :)
modulus' and the
publicznego wykładnika w kluczu i certyfikacie muszą być zgodne. Bez wątpienia pliki są różne. Klucz jest generowany dla jednego konkretnego certyfikatu.Gdy już ustalisz, że nie pasują, nadal masz problem - co z tym zrobić. Często certyfikat może być po prostu nieprawidłowo złożony. Kiedy urząd certyfikacji podpisuje twój certyfikat, wysyła ci blok, który wygląda podobnie
wyślą ci również pakiet (często dwa certyfikaty), które reprezentują ich uprawnienia do wydania certyfikatu. to będzie wyglądać jak
poza tym, niestety, nie będą one tak wyraźnie oznaczone.
powszechną praktyką jest więc łączenie ich w jeden plik - certyfikat, a następnie certyfikaty podpisu. Ponieważ jednak niełatwo je rozróżnić, zdarza się, że ktoś przypadkowo układa je w innej kolejności - podpisując certyfikaty, potem ostateczny certyfikat - nie zauważając. W takim przypadku Twój certyfikat nie będzie pasował do Twojego klucza.
Możesz przetestować, co według certyfikatu reprezentuje, uruchamiając
U góry powinieneś zobaczyć „Temat:”, a następnie coś, co wygląda jak Twoje dane. Jeśli zamiast tego wygląda jak Twój urząd certyfikacji, Twój pakiet jest prawdopodobnie w złej kolejności; możesz spróbować wykonać kopię zapasową, a następnie przenieść ostatni certyfikat na początek, mając nadzieję, że to ten, który jest Twoim certyfikatem.
Jeśli to nie zadziała, może być konieczne ponowne wystawienie certyfikatu. Kiedy tworzę CSR, lubię wyraźnie oznaczyć, do jakiego serwera jest przeznaczony (zamiast po prostu ssl.key lub server.key) i zrobić jego kopię z datą w nazwie, np. Mydomain.20150306.key itp. W ten sposób. jest mało prawdopodobne, aby pary kluczy prywatny i publiczny zostały pomieszane z innym zestawem.
źródło
Sprawdź skrót MD5 klucza publicznego, aby upewnić się, że jest zgodny z tym, co znajduje się w kluczu prywatnym
źródło
Miałem ten problem, ponieważ dodawałem pakiet i certyfikat w złej kolejności, więc może to mogłoby pomóc komuś innemu.
Przed (co jest błędne):
Po (co jest słuszne)
I proszę, nie zapomnij zaktualizować odpowiedniego ustawienia conf (ssl_certificate musi teraz wskazywać na połączony crt) jako
Ze strony podręcznika nginx :
źródło
Jeśli tak się stanie, a używasz Let's Encrypt / certbot, najprawdopodobniej użyłeś
chain.pem
zamiastfullchain.pem
.Powinno wyglądać mniej więcej tak:
Zobacz dokumentację certbot „Gdzie są moje certyfikaty?”
źródło
Miałem ten sam problem i ostatecznie rozwiązałem go, zmieniając kolejność bloków pem w pliku certyfikatu.
Blok certyfikatu należy umieścić na początku pliku, następnie bloki pośrednie, a następnie blok główny.
Zrozumiałem ten problem, porównując problematyczny plik certyfikatu z działającym plikiem certyfikatu.
źródło
Moje 5 centów w tej sprawie:
Miałem ten sam problem. Po około 1 godzinie opiekowania się nim stwierdziłem, że wkleiłem certyfikat nieprawidłowo.
Jeśli masz taki błąd, sprawdź swój certyfikat.
źródło
W moim przypadku chciałem zmienić certyfikat SSL, ponieważ zmieniłem serwer, więc musiałem utworzyć nowy CSR za pomocą tego polecenia:
Wysłałem plik mysite.csr do firmowego dostawcy SSL i po otrzymaniu certyfikatu crt, a następnie zrestartowałem nginx i mam ten błąd
Po wielu badaniach błąd polegał na tym, że moduł z pliku klucza nie był tym samym, co ten z pliku crt
Aby więc działało, utworzyłem nowy plik csr, ale muszę zmienić nazwę pliku za pomocą tego polecenia
Następnie otrzymałem nowy plik crt od dostawcy firmy, zrestartowałem nginx i zadziałało.
źródło
Może się to również zdarzyć, gdy urząd certyfikacji wystawia certyfikat pośredni
Natknąłem się na ten problem (dwukrotnie) z nginx i żadne z rozwiązań w tym poście nie wyjaśniło problemu. Wpis na blogu napisany tutaj przez miłego dżentelmena o imieniu Marco dotarł do tego miejsca i wklejam go tutaj dla każdego, kto również napotka to, co widziałem. https://medium.com/@mrkdsgn/steps-to-install-a-go-daddy-ssl-certificate-on-nginx-on-ubuntu-14-04-ff942b9fd7ff
W moim przypadku go-daddy był urzędem certyfikacji i dotyczy to sposobu wydawania certyfikatów i pośrednich pakietów certyfikatów.
Oto fragment wpisu na blogu Marco
W przypadku Nginx, jeśli Twój urząd certyfikacji zawiera certyfikat pośredni, musisz utworzyć pojedynczy łańcuchowy plik certyfikatu, który zawiera Twój certyfikat i certyfikaty pośrednie CA.
Możesz użyć tego polecenia, aby utworzyć połączony plik o nazwie example.com.chained.crt:
cat example.com.crt intermediate.crt > example.com.chained.crt
źródło
W moim przypadku problem polegał na tym, że tworzyłem certyfikaty bez wprowadzania danych w interfejsie CLI. Kiedy odrodziłem kretyfikaty i wszedłem na wszystkie pola: miasto, stan itp., Wszystko było w porządku.
źródło
Zdarzyło mi się to, gdy połączyłem pakiet bundle.crt i główny cert. Powodem było skopiowanie głównego certyfikatu poniżej pliku bundle.crt. Powinno być na odwrót
1 / główny cert 2 / bundle.crt
źródło
Dla Nginx:
openssl req -newkey rsa:2048 -nodes -keyout domain.com.key -out domain.com.csr
Plik
domain_com.crt
idomain_com.ca-bundle
pliki SSL, a następnie skopiuj nowy plik wklejdomain.com.chained.crt
.3: Dodaj pliki nginx:
ssl_certificate /home/user/domain_ssl/domain.com.chained.crt;
ssl_certificate_key /home/user/domain_ssl/domain.com.key;
Późny restart Nginx.
źródło
Ten błąd może się zdarzyć, gdy klucz prywatny certyfikatu (
ssl_certificate_key
np..key
Lub.pem
plik) nie pasuje do pliku certyfikatu publicznego (ssl_certificate
) w konfiguracji Nginx (sprawdźnginx.conf
lub wsites-enabled/
). Upewnij się, że oba pliki są zgodne.Sprawdź dzienniki błędów Nginx, aby uzyskać dalsze szczegóły (np
/var/log/nginx/error.log
.).źródło
W moim przypadku muszę połączyć certyfikaty mojej domeny.
Oraz w pliku konfiguracyjnym /etc/nginx/nginx.conf
Uruchom ponownie usługę i wszystko w porządku.
Krok 2 źródła: https://www.namecheap.com/support/knowledgebase/article.aspx/9781/2238/nginx-ssl-error0b080074x509-certificate-routines-x509checkprivatekeykey-values-mismatch
źródło