Jak ustawić dostęp do strony www na podstawie certyfikatu ? (działa z Androidem)

Całość realizowana na Apache2.

Na początek generujemy certyfikaty:

Generowanie CA:

openssl genrsa -out ca.key 2048
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

Generowanie Certyfikatu dla klienta:

openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr

Podpisywanie Certyfikatu Klienta certyfikatem CA:

openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial -in client.csr -out public_client.crt

Certyfikat końcowy podpisany przez nasze ca i zabezpieczony hasłem:

openssl pkcs12 -export -clcerts -in public_client.crt -inkey client.key -out public_client.p12

W pliku konfiguracyjnym ssl wskazujemy gdzie leży nasze CA.

I włączamy weryfikacje certyfikatu po stronie serwera czyli wrzucamy poniższe linie do sekcji naszego virtualhosta:

SSLCACertificateFile /etc/ssl/private/ca.crt
SSLRequireSSL
SSLVerifyClient require
SSLVerifyDepth 10

 

Następnie instalujemy w przeglądarce końcowy certyfikat „public_client.p12”

i sprawdzamy czy mamy dostęp do zabezpieczonej strony.