Jak utworzyć samopodpisany certyfikat SSL?

64

Skonfigurowałem SSL na moim serwerze internetowym, teraz potrzebuję dwóch plików:

  • certyfikat
  • klucz certyfikatu

Jak utworzyć samopodpisany certyfikat do celów testowych?

Stefano Palazzo
źródło

Odpowiedzi:

93

Ubuntu, nawet ten „minimalny” smak, ma ssl-certfabrycznie zainstalowany pakiet, co oznacza, że ​​nie musisz nic robić.

Pliki, których szukasz, są już w twoim systemie:

/etc/ssl/certs/ssl-cert-snakeoil.pem
/etc/ssl/private/ssl-cert-snakeoil.key


Zaawansowane:

Jeśli z jakiegoś powodu musisz utworzyć nowy certyfikat, możesz uruchomić

sudo make-ssl-cert generate-default-snakeoil --force-overwrite 

Jeśli chcesz zmienić datę ważności certyfikatu, możesz manipulować skryptem make-ssl-cert pod adresem /usr/sbin/make-ssl-cert. Około 124 ma linię podobną do tej:

openssl req -config $TMPFILE -new -x509 -nodes \ 

Gdzie możesz zmienić datę ważności, dodając -daysargument:

openssl req -config $TMPFILE -new -days 365 -x509 -nodes \ 

Więcej opcji można znaleźć na stronie podręcznikareq .

Stefano Palazzo
źródło
10
Ubuntu-server 12.04 (obraz w chmurze AMI) nie ma domyślnie zainstalowanego ssl-cert. Ale po zainstalowaniu ssl-cert - /etc/ssl/certs/ssl-cert-snakeoil.pem staje się automatycznie dostępny.
Stann
make-ssl-cert bierze długość klucza (i inne ustawienia) do użycia /usr/share/ssl-cert/ssleay.cnf.
Tim Smith
Próbując przetestować witrynę w lokalnej instancji wirtualnej maszyny wirtualnej, chciałem, aby Google Chrome działał tak, jakby był to zupełnie normalny certyfikat. Musiałem najpierw ustawić nazwę hosta maszyny wirtualnej, aby pasowała do testowego adresu URL (np. www.test.mydomain.com), Używając hostnamepolecenia w interfejsie CLI maszyny wirtualnej. Następnie ponownie wygeneruj klucz, tak jak sugerujesz, za --force-overwritepomocą Common Name (CN) klucza, a następnie dopasuj adres URL testu. Wreszcie na komputerze hosta instalacja klucza jako zaufanego głównego urzędu certyfikacji (w Ustawieniach Chrome / Zaawansowane) dała mi pożądany zielony pasek adresu.
Buttle Butkus,
1
mój 9-letni certyfikat przestał działać z moją aktualizacją do debian 10, więc make-ssl-certpolecenie uratowało mi dzień!
Jayen
23

Jak już wspomniano, Ubuntu Server zawiera niezbędne narzędzia. W zależności od wersji serwera musisz sprawdzić konkretną dokumentację . Spróbuję podsumować proces generowania samopodpisanego certyfikatu bieżącego LTS (12.04) .

Najpierw wygeneruj klucze dla żądania podpisania certyfikatu (CSR):

openssl genrsa -des3 -out server.key 2048

To od Ciebie zależy, czy wpiszesz hasło, czy nie. Jeśli to zrobisz, za każdym razem, gdy ponownie uruchomisz usługę przy użyciu tego certyfikatu, musisz podać hasło. Możesz utworzyć „niezabezpieczony” klucz bez hasła z bezpiecznego:

openssl rsa -in server.key -out server.key.insecure
# shuffle the key names to continue without passphrases
mv server.key server.key.secure
mv server.key.insecure server.key

A teraz stworzysz CSR z klucza. Za pomocą CSR i klucza można wygenerować samopodpisany certyfikat:

openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Ostatni krok polega na zainstalowaniu certyfikatu i klucza, w Debian / Ubuntu zwykle w /etc/ssl:

sudo cp server.crt /etc/ssl/certs
sudo cp server.key /etc/ssl/private

Wreszcie aplikacje korzystające z certyfikatu / klucza muszą zostać odpowiednio skonfigurowane.

nietonfir
źródło