Ściśle mówiąc, nigdy nie potrzebujesz łańcucha, aby protokół SSL działał.
Co zawsze trzeba to SSLCertificateFile
z SSLCertificateKeyFile
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:
- Osadzony w tym samym pliku, który ustawiłeś dla swojego
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, co SSLCertificateFile
.
- W osobnym pliku skonfigurowanym w
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.
/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).