Wyszukiwanie w witrynie

Jak utworzyć certyfikaty i klucze SSL z podpisem własnym dla Apache w RHEL/CentOS 7.0


SSL (Secure Sockets Layer) to protokół kryptograficzny umożliwiający bezpieczny przepływ danych pomiędzy serwerem a jego klientami przy użyciu kluczy symetrycznych/asymetrycznych przy użyciu certyfikatu cyfrowego podpisanego przez urząd certyfikacji (Kalifornia).

Wymagania

  1. Podstawowa instalacja LAMPY w RHEL/CentOS 7.0

W tym samouczku przedstawiono podejście do konfigurowania protokołu kryptograficznego komunikacji Secure Sockets Layer (SSL) na serwerze Apache Web Server zainstalowanym w Red Hat Enterprise Linux/CentOS 7.0< i generuj certyfikaty i klucze z podpisem własnym za pomocą skryptu bash, co znacznie upraszcza cały proces.

Krok 1: Zainstaluj i skonfiguruj Apache SSL

1. Aby włączyć SSL na serwerze Apache HTTP Server, użyj następującego polecenia w celu zainstalowania modułu SSL i zestawu narzędzi OpenSSL, które są potrzebne do obsługi SSL/TLS.

yum install mod_ssl openssl

2. Po zainstalowaniu modułu SSL zrestartuj demona HTTPD i dodaj nową regułę zapory sieciowej, aby mieć pewność, że port SSL – 443 – jest otwarty dla połączenia zewnętrzne na komputerze w stanie nasłuchiwania.

systemctl restart httpd
firewall-cmd --add-service=https   ## On-fly rule

firewall-cmd --permanent  --add-service=https   ## Permanent rule – needs firewalld restart

3. Aby przetestować połączenie SSL, otwórz zdalną przeglądarkę i przejdź do adresu IP swojego serwera za pomocą protokołu HTTPS na https://server_IP.

Krok 2: Utwórz certyfikaty i klucze SSL

4. Poprzednia komunikacja SSL pomiędzy serwerem a klientem odbywała się przy użyciu domyślnego certyfikatu i klucza generowanego automatycznie podczas instalacji. Aby wygenerować nowe pary kluczy prywatnych i certyfikatów z podpisem własnym, utwórz następujący skrypt bash w wykonywalnej ścieżce systemowej (&96 PATH).

W tym samouczku wybrano ścieżkę /usr/local/bin/, upewnij się, że skrypt ma ustawiony bit wykonywalny, a następnie użyj go jako polecenia do utworzenia nowych par SSL w /etc/ httpd/ssl/ jako domyślna lokalizacja certyfikatów i kluczy.

nano /usr/local/bin/apache_ssl

Użyj następującej zawartości pliku.

#!/bin/bash
mkdir /etc/httpd/ssl
cd /etc/httpd/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Apache SSL Certificate and Key!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The Certificate and Key for $cert has been generated!\nPlease link it to Apache SSL available website!"
ls -all /etc/httpd/ssl
exit 0

5. Teraz uczyń ten skrypt wykonywalnym i uruchom go, aby wygenerować nową parę certyfikatu i klucza dla wirtualnego hosta Apache SSL.

Wypełnij go swoimi informacjami i zwróć uwagę na wartość Nazwy zwyczajowej, aby odpowiadała nazwie FQDN Twojego serwera lub, w przypadku hostingu wirtualnego, aby odpowiadała adresowi internetowemu, do którego będziesz mieć dostęp, łącząc się z bezpieczną witryną internetową.

chmod +x /usr/local/bin/apache_ssl
apache_ssl

6. Po wygenerowaniu certyfikatu i klucza skrypt wyświetli długą listę wszystkich par Apache SSL przechowywanych w lokalizacji /etc/httpd/ssl/.

7. Inne podejście do generowania certyfikatów i kluczy SSL polega na zainstalowaniu pakietu crypto-utils w swoim systemie i wygenerowaniu par za pomocą polecenia genkey, które może stwarzać pewne problemy, zwłaszcza gdy jest używany na ekranie terminala Putty.

Sugeruję więc używanie tej metody tylko wtedy, gdy jesteś bezpośrednio podłączony do monitora ekranowego.

yum install crypto-utils
genkey your_FQDN

8. Aby dodać nowy certyfikat i klucz do swojej witryny SSL, otwórz plik konfiguracyjny witryny i zastąp instrukcje SSLCertificateFile i SSLCertificateKeyFile nowymi parami lokalizację i odpowiednio nazwy.

9. Jeżeli Certyfikat nie jest wystawiony przez zaufany urząd certyfikacji – urząd certyfikacji lub nazwa hosta z certyfikatu nie odpowiada nazwie hosta, który nawiązał połączenie, w przeglądarce powinien pojawić się błąd i należy ręcznie zaakceptować certyfikat.

Otóż to! Teraz możesz użyć apache_ssl jako wiersza poleceń w RHEL/CentOS 7.0, aby wygenerować dowolną liczbę par certyfikatów i kluczy z podpisem własnym, których potrzebujesz, a wszystkie będą przechowywane w /etc/httpd/ ssl/ z plikiem klucza chronionym uprawnieniami 700.