Zwykle w przypadku hosta wirtualnego ssl jest konfigurowany zgodnie z następującymi dyrektywami:
Listen 443
SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt
Jaka jest różnica między SSLCertificateFile
i SSLCertificateChainFile
? Klient kupił klucz CA od GoDaddy. Wygląda na to, że GoDaddy zapewnia tylko SSLCertificateFile
(plik .crt) i SSLCertificateKeyFile (plik .key), a nie na SSLCertificateChainFile
.
Czy mój ssl nadal będzie działać bez SSLCertificateChainFile
określonej ścieżki?
Czy istnieje również ścieżka kanoniczna, w której należy umieścić te pliki?
apache-2.2
ssl
chrisjlee
źródło
źródło
/etc/ssl
,/usr/local/etc/ssl
lub wssl
podkatalogu specyficzne dla strony internetowej (np/home/www/example.com/data
został następnie stronahome/www/example.com/ssl
posiada certyfikatów).Odpowiedzi:
Ściśle mówiąc, nigdy nie potrzebujesz łańcucha, aby protokół SSL działał.
Co zawsze trzeba to
SSLCertificateFile
zSSLCertificateKeyFile
zawierający poprawny klucz dla tego certyfikatu.Problem polega na tym, że jeśli wszystko, co dajesz Apache, to certyfikat, to wszystko, co musisz dać łączącym się klientom, to certyfikat - który nie opowiada całej historii o tym certyfikacie SSL. Mówi: „Jestem podpisany przez kogoś, ale nie powiem ci o nich”.
Zwykle działa to dobrze, ponieważ większość systemów klienckich ma duży magazyn certyfikatów CA (zarówno root, jak i pośrednich), które może sprawdzić pod kątem pasujących relacji podpisywania w celu ustanowienia zaufania. Czasami jednak to nie działa; najczęściej napotykasz problem z klientem, który nie posiada certyfikatu dla pośredniego urzędu certyfikacji, który podpisał twój certyfikat.
Tam właśnie wchodzi łańcuch; pozwala Apache pokazać klientowi dokładnie, jak wygląda relacja zaufania, co może pomóc klientowi wypełnić puste pola między twoim certyfikatem, zaufanym rootem i półproduktem, o którym nie wiedzą. Łańcuch można włączyć do konfiguracji na jeden z dwóch sposobów:
SSLCertificateFile
, w nowych wierszach po certyfikacie serwera w kolejności (katalog główny powinien znajdować się na dole). Jeśli skonfigurujesz go w ten sposób,SSLCertificateChainFile
wskaż dokładnie ten sam plik, coSSLCertificateFile
.SSLCertificateChainFile
dyrektywie; certyfikat CA, który wystawił certyfikat serwera, powinien znajdować się w pliku jako pierwszy, a następnie w katalogu głównym.Sprawdź plik certyfikatu, który masz teraz - założę się, że nie zawiera on danych łańcucha. Co zwykle działa dobrze, ale ostatecznie spowoduje problem z niektórymi przeglądarkami.
źródło
SSLCertificateChainFile
.SSLCertificateFile
iSSLCertificateChainFile
wskazać ten sam połączony plik, który działa - zredagowałem moją odpowiedź, aby to poprawić.Oto całkiem dobre wyjaśnienie różnic, a także możliwych do zaobserwowania skutków między wyborem jednego a drugiego:
https://stackoverflow.com/questions/1899983/difference-between-sslcacertificatefile-and-sslcertificatechainfile
źródło
W rzeczywistości GoDaddy oferuje łańcuch pośredni:
http://support.godaddy.com/help/5238
Oto więcej dyskusji.
http://support.godaddy.com/help/868/what-is-an-intermediate-certificate
Wiadomość e-mail od GoDaddy z informacją, jak pobrać nowy certyfikat, zawiera również informacje na temat pliku certyfikatu pośredniego. Jest gdzieś u dołu, być może po tym, jak twoje oczy błyszczą od verbage i sprzedają.
Jeśli chodzi o to, co się stanie, jeśli nie uwzględnisz właściwej dyrektywy SSLCertificateChainFile: zobaczysz duże czerwone ostrzeżenie w przeglądarce, ponieważ witryna SSL nie będzie sprawdzana w przeglądarkach, ponieważ nie mogą one podążać za łańcuchem certyfikatów z witryny certyfikat do jednego z ośrodków certyfikacji, o których wie przeglądarka.
źródło
Chciałbym dodać do poprzednich dobrych odpowiedzi na temat SSLCertificateChainFile, że kolejność certyfikatów w tym pliku jest również ważna. Klienci z OpenSSL sami uporządkują zamówienie, ale klienci z gnutls nie będą działać w łańcuchu z nieprawidłową kolejnością.
Przetestuj kolejność za pomocą gnutls-cli, like
gdzie /etc/ssl/certs/ca-certificates.crt to lokalizacja, w której dystrybucja umieszcza połączone certyfikaty.
źródło