Mam problem ze skonfigurowaniem SSL na 32-bitowym serwerze Debiana 6.0. Jestem stosunkowo nowy z SSL, więc proszę o wyrozumiałość. Uwzględniam jak najwięcej informacji.
Uwaga: Prawdziwa nazwa domeny została zmieniona w celu ochrony tożsamości i integralności serwera.
Konfiguracja
Serwer działa przy użyciu nginx. Jest skonfigurowany w następujący sposób:
ssl_certificate /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_verify_depth 2;
Przykręciłem swój certyfikat metodą opisaną tutaj
cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt
gdzie mysite.ca.crt
jest certyfikat wydany mi przez organ podpisujący, a bundle.crt
jest to certyfikat CA przesłany mi również przez mój organ podpisujący. Problem polega na tym, że nie kupiłem certyfikatu SSL bezpośrednio od GlobalSign, ale za pośrednictwem mojego dostawcy hostingu, firmy Singlehop.
Testowanie
Certyfikat jest poprawnie weryfikowany w przeglądarce Safari i Chrome, ale nie w przeglądarce Firefox. Wstępne poszukiwania ujawniły, że może to być problem z CA.
Zbadałem odpowiedź na podobne pytanie , ale nie mogłem znaleźć rozwiązania, ponieważ nie bardzo rozumiem, czemu służy każdy certyfikat.
Użyłem s_client openssl do przetestowania połączenia i otrzymałem dane wyjściowe, które wydają się wskazywać na ten sam problem, co podobne pytanie . Błąd jest następujący:
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1
Można znaleźć pełny opis odpowiedzi openssl (z obciętymi certyfikatami i niepotrzebnymi informacjami) tutaj .
Widzę też ostrzeżenie:
No client certificate CA names sent
Czy to możliwe, że to jest problem? Jak mogę się upewnić, że nginx wysyła te nazwy urzędów certyfikacji?
Próby rozwiązania problemu
Próbowałem rozwiązać problem, pobierając główny urząd certyfikacji bezpośrednio z GlobalSign, ale otrzymałem ten sam błąd. Zaktualizowałem główne CA na moim serwerze Debian za pomocą update-ca-certificates
polecenia, ale nic się nie zmieniło. Dzieje się tak prawdopodobnie dlatego, że CA wysłany od mojego dostawcy był poprawny, więc doprowadziło to do podwójnego powiązania certyfikatu w łańcuch, co nie pomaga.
0 s:/OU=Domain Control Validated/CN=*.mysite.ca
i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
Następne kroki
Daj mi znać, jeśli jest coś, co mogę spróbować, lub jeśli po prostu mam nieprawidłową konfigurację.
AlphaSSL CA - SHA256 - G2
. Jednak Twoja sieć dostarcza półproduktyAlphaSSL CA - G2
. Uważam, że musisz usunąć bieżący certyfikat pośredni (AlphaSSL CA - G2
) i zastąpić go certyfikatem z odciskami palcówae:bf:32:c3:c8:32:c7:d7...
(AlphaSSL CA - SHA256 - G2
). Ponadto, nie trzeba wysyłaćGlobalSign Root CA
. Klient musi zakorzenić swoje zaufanie (lub na pośredniku).