Wygeneruj samopodpisany certyfikat SSL dla apache

10

Chcę utworzyć samopodpisany certyfikat dla witryny. Stary certyfikat wygasł kilka dni temu. W systemach jest więcej niż jeden NameVirtualHosts. Polecenia, których używam do utworzenia certyfikatu, pochodzą z jednej witryny z samouczkami i są to:

openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr 
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Następnie w pliku ssl.conf podałem w sekcji VirtualHost wraz ze starymi ustawieniami dokonanymi przez innego administratora

SSLEngine on
SSLCertificateFile <full_path>/server.crt
SSLCertificateKeyFile <full_path>/server.key

Po uruchomieniu serwera otrzymuję następujące komunikaty w pliku dziennika i serwer nie uruchamia się.

W pliku dziennika błędów znajduje się komunikat

 [Mon Jun 01 23:52:46 2009] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)

W pliku ssl_error_log są wiadomości

 [Mon Jun 01 23:52:46 2009] [error] Init: Private key not found
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218710120 error:0D094068:asn1 encoding routines:d2i_ASN1_SET:bad tag
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218529960 error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218595386 error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error
 [Mon Jun 01 23:52:46 2009] [error] SSL Library Error: 218734605 error:0D09A00D:asn1 encoding routines:d2i_PrivateKey:ASN1 lib

Byłbym bardzo wdzięczny, gdyby ktoś potrafił wyjaśnić, jak to rozwiązać. Wypróbowałem już kilka innych witryn z samouczkami na temat certyfikatów SSL z podpisem własnym, ale żaden ze wspomnianych kroków nie działa.

Saurabh Barjatiya
źródło

Odpowiedzi:

21

Użyj tego jednego linera, aby wygenerować certyfikat i klucz w jednym pliku

openssl req -new -x509 -days 999 -nodes -out apache.pem -keyout apache.pem

Zatem jedyną potrzebną konfiguracją jest

SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
Hayalci
źródło
masz na myśli dodanie powyższej linii sslengine on i sslcertificatefile / etc / ssh
Rajat
dotyczy konfiguracji apache, a nie ssh.
hayalci
1
To polecenie pozostawi klucz prywatny w systemie plików bez zmian, w przeciwieństwie do pierwotnego polecenia OP. Pominięcie -nodesopcji szyfrowania klucza za pomocą Triple-DES. (Hasło klucza należy oczywiście podać przy każdym uruchomieniu serwera). reqPolecenie OpenSSL nie obsługuje generowania silniej zaszyfrowanych kluczy, ale może używać wcześniej wygenerowanych silnie zaszyfrowanych kluczy.
Calrion
4

Może się to wydawać nieco trywialne, ale sprawdź uprawnienia do pliku .key

Jeff Hengesbach
źródło
+1 Czasami trywialne rzeczy są najmniej uważane.
Burkhard
0

Możesz użyć, openssl req -newkey rsa:1024 -keyout privkey.pemaby zaoszczędzić wygenerowany klucz SSL, na wypadek, gdyby generowanie klucza nie było w porządku.

davenpcj
źródło