Czy można samopodpisać certyfikat SSL? W jaki sposób?

18

Jestem całkiem nowy w certyfikatach SSL i chciałbym wiedzieć, czy samopodpisany certyfikat, którego używam dla HTTPS, można odnowić, aby przedłużyć jego datę ważności bez konieczności przechodzenia przez wszystkich klientów witryny procesu „zezwalającego na wyjątek”, który mają zrobić, gdy odwiedzają witrynę po raz pierwszy lub, tak jak w przypadku wydawania nowego samopodpisanego certyfikatu utworzonego od podstaw.

I znaleźć następujące samouczek pokazujący jak odnowić samopodpisany cert użyciu openssl, ale nie był w stanie wykorzystać to taka, że moja przeglądarka milcząco akceptuje je bez pokazywania, że „niezaufanych Site” ekran ostrzegawczy:

  # cd /etc/apache2/ssl
  # openssl genrsa -out togaware.com.key 1024
  # chmod 600 togaware.com.key
  # openssl req -new -key togaware.com.key -out togaware.com.csr
    AU
    ACT
    Canberra
    Togaware
    Data Mining
    Kayon Toga
    [email protected]
    (no challenge password)
  # openssl x509 -req -days 365 -in togaware.com.csr \
            -signkey togaware.com.key -out togaware.com.crt
  # mv apache.pem apache.pem.old
  # cp togaware.com.key apache.pem 
  # cat togaware.com.crt >> apache.pem 
  # chmod 600 apache.pem
  # wajig restart apache2

Moja konfiguracja jest podobna do opisanej w tej odpowiedzi i używam plików CRT i KEY (z tego samouczka ) zamiast pliku PEM, więc może coś pomieszałem, próbując zastosować to w moim przypadku.

Z drugiej strony znalazłem wiele wpisów na forum sugerujących, że odnowienie samopodpisanego certyfikatu jest całkowicie niemożliwe i muszę utworzyć nowy od zera.

Jakakolwiek pomoc byłaby mile widziana ... czy to pytanie byłoby lepiej dostosowane do /server// lub /superuser// ?

FriendFX
źródło
7
Zamiast głosować na to pytanie poniżej, podaj konkretną radę, co w tej sprawie poprawić.
FriendFX

Odpowiedzi:

23

Z definicji samopodpisany certyfikat może być zaufany tylko poprzez bezpośrednie zaufanie , tj. To, co przeglądarki takie jak Firefox pokazują jako proces „zezwalaj na wyjątek”. Jeden bardzo konkretny certyfikat, aż do ostatniego bitu, jest zadeklarowany jako „zaufany”. W certyfikacie nie można nic zmienić bez wychodzenia z tego modelu, aw szczególności data jego ważności, która jest częścią danych zawartych w certyfikacie.

Możesz wyobrazić sobie odnowienie jako coś w rodzaju rodziny: kiedy świadectwo jest „odnawiane”, w rzeczywistości jest zastępowane przez młodsze rodzeństwo. Klienci akceptują nowy certyfikat po cichu, ponieważ ma on takie same pochodzenie jak poprzedni certyfikat. Certyfikaty z podpisem własnym są wewnętrznymi sierotami: nie mają pochodzenia. W związku z tym, nie ma rodzeństwa, a nie automatyczną skrzynią biegów.

(Oprócz tego pochodzenia, odnowienie polega na utworzeniu nowego certyfikatu. Certyfikaty są niezmienne . „Odnowienie” to sposób myślenia o związku między starymi i nowymi certyfikatami.)

Jeśli chcesz mieć możliwość cichego odnawiania, potrzebujesz samopodpisanego certyfikatu urzędu certyfikacji . Emitujesz certyfikaty dla swoich serwerów z tego urzędu certyfikacji i prosisz klientów o zaufanie do tego urzędu certyfikacji. Oczywiście to prosi dużo: urząd certyfikacji, że zaufanie jest CA, które mogą sfałszować w twoich oczach cały Internet. Zasadniczo to rozwiązanie polega na tworzeniu i utrzymywaniu własnego urzędu certyfikacji, co jest obowiązkiem i trochę pracy.


Następnym razem produkować certyfikat z podpisem własnym, sprawiają, że długowieczne. Certyfikaty wygasają głównie w celu umożliwienia unieważnienia (wygaśnięcie certyfikatu zapobiega nieograniczonemu wzrostowi listy CRL). W przypadku certyfikatu z podpisem własnym unieważnienie nie jest możliwe, dlatego certyfikat może być ważny przez 20 lat. Lub przez 2000 lat, jeśli o to chodzi (chociaż problem roku 2038 może się pojawić w pewnym momencie, w zależności od oprogramowania klienckiego).

Tom Leek
źródło
Dzięki za rozległą odpowiedź! Zastanawiam się jednak, co to oznacza w odniesieniu do samouczka , z którym się łączyłem. Czy dotyczy to tylko certyfikatów CA z podpisem własnym ? Wydaje mi się, że po prostu miałem nadzieję (i pomyślałem po przeczytaniu samouczka), że istnieje sposób na odczytanie klucza prywatnego ze starego i utworzenie nowego, „kompatybilnego” ... który wygląda bardziej jak „dziecko” niż "sierota". Ładna analogia, na drodze!
FriendFX,
@FriendFX - To, czego chcesz, nie jest możliwe. Tom ma rację, że ponowne generowanie generuje nowy certyfikat.
Ramhound
@Ramhound - Rozumiem. Jedynym otwartym pytaniem jest: co jest celem tego poradnika wtedy?
FriendFX,
@FriendFX - Zostało napisane przez przypadkowego faceta w Internecie tylko dlatego, że ich blog nie oznacza, że ​​rozumieją, o czym piszą. Autor po prostu nie wyjaśnia, że ​​samouczek przyniesie nowy certyfikat
Ramhound
3
@FriendFX Tak, że poradnik będzie działać tylko do certyfikatów z podpisem własnym CA. Jeśli użyjesz tej samej pary kluczy i podmiotu, możesz utworzyć wiele certyfikatów CA, które będą spełniały rolę ważnego wystawcy wystawionych certyfikatów; Te certyfikaty mogą być nawet wydane przez różne urzędy macierzystych, który nazywany jest „cross-łańcuchowym”.
Calrion
3

Krótka odpowiedź: nie

Ufanie samopodpisanemu certyfikatowi jest jak ufanie indywidualnemu paszportowi zamiast krajowi, który go wydał. Jeśli pojawi się nowy paszport, nie zostanie on automatycznie zaufane przez kogoś zaufanego starą, szczególnie dlatego, że jest inna sprawa z różnymi atrybutami (numer paszportu, daty etc.); nie ma podstaw, aby ktoś wyraźnie ufał staremu paszportowi, aby wiedzieć, że można mu zaufać.

Liam Dennehy
źródło
0

Jeśli używasz samopodpisanych certyfikatów (zalecam używanie xca w systemie Windows), możesz po prostu ustawić datę ważności na 7999-12-31 (To jest maksymalny czas dla UTC), a początkową datę na 1970-01-01 (Dla zgodność ze złej konfiguracji czasu / daty w komputerach PC)

H3LL0
źródło