Konfiguruję protokół SSL Apache 2
. Mój system to Ubuntu Server 10.04 LTS
. Mam następujące ustawienia związane z SSL w mojej konfiguracji vhost:
SSLEngine On
SSLCertificateKeyFile /etc/ssl/private/server.insecure.key
SSLCertificateFile /etc/ssl/certs/portal.selfsigned.crt
(Uwaga dodatkowa: używam .insecure
pliku klucza, ponieważ plik nie jest chroniony hasłem i chcę wyraźnie zobaczyć, że jest to plik klucza niebezpieczny)
Po ponownym uruchomieniu Apache pojawia się następujący komunikat:
Syntax error on line 39 of /etc/apache2/sites-enabled/500-portal-https:
SSLCertificateKeyFile: file '/etc/ssl/private/server.insecure.key' does not exist or is empty
Error in syntax. Not restarting.
Ale plik istnieje i nie jest pusty (w rzeczywistości zawiera klucz prywatny):
sudo ls -l /etc/ssl/private/server.insecure.key
-rw-r----- 1 root www-data 887 2012-08-07 15:14 /etc/ssl/private/server.insecure.key
sudo ls -ld /etc/ssl/private/
drwx--x--- 2 root www-data 4096 2012-08-07 13:02 /etc/ssl/private/
Próbowałem zmienić właściciela, używając dwóch grup www-data i ssl-cert. Nie jestem pewien, który z nich jest właściwy w Ubuntu: domyślnie Ubuntu używa ssl-cert, ale z drugiej strony procesy apache działają z danymi użytkownika www: uruchamiane są przez użytkownika root, ale w niektórych przypadkach zmiany na dane www punkt i nie jestem pewien, kiedy czytane są certyfikaty.
W każdym razie zmiana właściciela grupy nie poprawiła sytuacji. Moje pytania to:
- Co jeszcze mogę spróbować, aby to działało?
- Jak mogę sprawdzić, czy mój plik klucza jest prawidłowy?
- Jak mogę sprawdzić, czy plik klucza i certyfikat (
/etc/ssl/certs/portal.selfsigned.crt
) działają razem?
Myślę, że Apache podaje mylący komunikat o błędzie i chciałbym wskazać błąd.
źródło
service apache2 restart
zamiast**sudo** service apache2 restart
... Uwaga do siebie:sudo make me a sandwich fool
Odpowiedzi:
Znalazłem błąd. Stało się tak, ponieważ używam skryptu do konfigurowania certyfikatów, a jednym z kroków, które wykonuję, jest
apache2ctl configtest
. Błąd pochodził z tego polecenia, a nie od ponownego uruchomienia apache, co mnie wprowadzało w błąd. Ponieważ uruchomiłem polecenie apache2ctl jako zwykły użytkownik, nie miał on dostępu do plików kluczy, a zatem do komunikatu o błędzie.Facit: upewnij się, że wszystkie twoje polecenia apache są uruchamiane z sudo, nawet te, które są przeznaczone tylko do weryfikacji składni (
apache2ctl
), ponieważ one także potrzebują dostępu do kluczy.źródło
Dostaję też wiadomość
podczas gdy
/path/to/file
istnieją i mają odpowiednie uprawnienia, tylko z powodu włączenia SELinux i ten plik był niedostępny dla użytkownika apache.To wygląda tak:
Aby to naprawić, uruchamiam
sudo restorecon -Rv /etc/pki/tls/certs/
- spowoduje to naprawienie właściwości SELinux dla pliku problemu.źródło
sudo: restorecon: command not found
restorecon
jest częściąpolicycoreutils
pakietu. Może w ogóle nie masz SELinux?Zrobiłem to i pomogło mi to w CentOS 5.7
źródło
Otrzymałem podobną wiadomość:
SSLCertificateChainFile: file '/opt/bitnami/apache2/conf/DigiCertCA.crt\xe2\x80\x9d' does not exist or is empty
Mój problem polegał na tym, że edytor tekstu, z którego korzystałem, umieścił ascii 148 „prawidłowy cytat” zamiast zwykłego podwójnego cytatu ascii 34; za pomocą edytora uniksowego (np. TextWrangler) wstaw prawidłowy cytat i naprawiłem problem.
źródło
Uprawnienia są nieprawidłowe, ale zgodnie z odpowiedzią nie była to przyczyna problemu:
drwx--x--- 2 root www-data 4096 2012-08-07 13:02 /etc/ssl/private/
/ etc / ssl / private zwykle należy do grupy ssl-cert w systemach opartych na Debianie.
Właśnie zauważyłem perms 0710 i zastanawiam się, do czego można go użyć.
źródło