12 marca, 2022

make then make install

podstawową funkcją SSL w Internecie jest ułatwianie szyfrowania i zaufania, które pozwala przeglądarce internetowej potwierdzić autentyczność strony internetowej. Jednak SSL działa również na odwrót-certyfikaty SSL klienta mogą być używane do uwierzytelniania klienta na serwerze WWW. Pomyśl o parach klucza publicznego/prywatnego SSH, jeśli jest ci to znane. W tym poście na blogu przedstawię kroki tworzenia certyfikatu urzędu certyfikacji, podpisania certyfikatu serwera i zainstalowania go w Apache oraz utworzenia certyfikatu klienta w formacie używanym przez przeglądarki internetowe.

instalacja systemu operacyjnego i Apache jest poza zakresem posta na blogu i zakładam, że masz działającą instalację Apache zanim zaczniemy. Używam systemu Ubuntu 12.04.4 w tym poście na blogu.

generowanie certyfikatu urzędu certyfikacji

pierwszym krokiem jest wygenerowanie certyfikatu urzędu certyfikacji. Ten certyfikat CA nie musi być generowany na twoim serwerze WWW – może być umieszczony na dowolnej maszynie używanej do generowania certyfikatów SSL. Po utworzeniu certyfikat CA będzie działał jako zaufany organ zarówno dla certyfikatów serwera, jak i klienta. Jest to odpowiednik Verisign lub Comodos w prawdziwym świecie SSL, jednak nie chciałbyś używać swojego certyfikatu CA dla dużej publicznej strony internetowej, ponieważ jego zaufanie nie będzie wbudowane w przeglądarki wszędzie.

Wygeneruj certyfikat CA za pomocą tego polecenia:

openssl req -newkey rsa:4096 -keyform PEM -keyout ca.key -x509 -days 3650 -outform PEM -out ca.cer

więc zachowaj je w sekrecie-chroń je. Gdyby ktoś miał zdobyć te pliki, byłby w stanie wygenerować certyfikaty serwera i klienta, który byłby zaufany przez nasz serwer WWW, ponieważ zostanie skonfigurowany poniżej.

Wygeneruj klucz SSL serwera Apache i certyfikat

teraz, gdy mamy nasz certyfikat CA, możemy wygenerować certyfikat SSL, który będzie używany przez Apache.

  1. Wygeneruj klucz prywatny serwera.
    openssl genrsa -out server.key 4096
  2. Użyj klucza prywatnego serwera, aby wygenerować żądanie generowania certyfikatu.
    openssl req -new -key server.key -out server.req -sha256
  3. użyj żądania generowania certyfikatu i certyfikatu CA do wygenerowania certyfikatu serwera.
    openssl x509 -req -in server.req -CA ca.cer -CAkey ca.key -set_serial 100 -extensions server -days 1460 -outform PEM -out server.cer -sha256
  4. Wyczyść-Teraz, gdy cert został utworzony, nie potrzebujemy już żądania.
    rm server.req

Zainstaluj certyfikat serwera w Apache

mój serwer działa na Ubuntu 12.04.4, więc wszystkie ścieżki i polecenia wymienione tutaj są dla tego systemu operacyjnego.

  1. skopiuj certyfikat CA na stałe. Będziemy musieli określić nasz certyfikat CA w Apache, ponieważ jest to samo wygenerowany certyfikat CA, a nie taki, który jest zawarty w systemach operacyjnych wszędzie.
    cp ca.cer /etc/ssl/certs/
  2. skopiuj cert serwera i klucz prywatny na stałe miejsce.
    cp server.cer /etc/ssl/certs/server.crtcp server.key /etc/ssl/private/server.key
  3. Aktywuj moduł SSL w Apache.
    a2enmod ssl
  4. Aktywuj witrynę SSL w Apache i wyłącz witrynę HTTP.
    a2ensite default-ssla2dissite default
  5. Edytuj / etc / apache2 / sites-enabled / 000-default-ssl (plik konfiguracyjny dla witryny obsługującej SSL) i dodaj:
    SSLCACertificateFile /etc/ssl/certs/ca.cerSSLCertificateFile /etc/ssl/certs/server.crtSSLCertificateKeyFile /etc/ssl/private/server.key
  6. Zastosuj konfigurację w Apache.
    service apache2 restart

w tej chwili, jeśli odwiedzisz witrynę https, pojawi się błąd SSL podobny do ” SSL peer nie był w stanie wynegocjować akceptowalnego zestawu parametrów bezpieczeństwa.”To dobrze-oznacza to, że Twoja strona nie zaakceptuje połączenia, chyba że twoja przeglądarka korzysta z certyfikatu zaufanego klienta. Teraz go wygenerujemy.

generowanie certyfikatu SSL klienta

  1. Generowanie klucza prywatnego dla klienta SSL.
    openssl genrsa -out client.key 4096
  2. użyj klucza prywatnego klienta, aby wygenerować żądanie cert.
    openssl req -new -key client.key -out client.req
  3. wydaje certyfikat klienta za pomocą żądania cert i klucza/certyfikatu CA.
    openssl x509 -req -in client.req -CA ca.cer -CAkey ca.key -set_serial 101 -extensions client -days 365 -outform PEM -out client.cer
  4. Konwertuj certyfikat klienta i klucz prywatny na format pkcs#12 do użytku w przeglądarkach.
    openssl pkcs12 -export -inkey client.key -in client.cer -out client.p12
  5. Clean up – Usuń klucz prywatny klienta, Certyfikat klienta i pliki żądań klienta, ponieważ pkcs12 ma wszystko, co potrzebne.
    rm client.key client.cer client.req

wygląda to na podobny proces do generowania certyfikatu serwera, co?

na koniec import .plik p12 w przeglądarce. W systemie Windows możesz dwukrotnie kliknąć plik, aby zaimportować go do keystore systemu operacyjnego, który będzie używany przez IE i Chrome. W przeglądarce Firefox otwórz Opcje – > zaawansowane – > Certyfikaty – > wyświetl Certyfikaty – > swoje certyfikaty i zaimportuj certyfikat.

teraz odwiedź swoją witrynę za pomocą przeglądarki, z której zaimportowałeś certyfikat klienta. Prawdopodobnie zostanie wyświetlony monit o to, którego certyfikatu klienta użyć – wybierz go. Wtedy zostaniesz uwierzytelniony i wpuszczony!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.