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.
- Wygeneruj klucz prywatny serwera.
openssl genrsa -out server.key 4096
- Użyj klucza prywatnego serwera, aby wygenerować żądanie generowania certyfikatu.
openssl req -new -key server.key -out server.req -sha256
- 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
- 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.
- 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/
- 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
- Aktywuj moduł SSL w Apache.
a2enmod ssl
- Aktywuj witrynę SSL w Apache i wyłącz witrynę HTTP.
a2ensite default-ssla2dissite default
- 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
- 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
- Generowanie klucza prywatnego dla klienta SSL.
openssl genrsa -out client.key 4096
- użyj klucza prywatnego klienta, aby wygenerować żądanie cert.
openssl req -new -key client.key -out client.req
- 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
- 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
- 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!