Generowanie certyfikatów openssl x509

Transkrypt

Generowanie certyfikatów openssl x509
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
Generowanie certyfikatów openssl x509
W debianie należy zainstalować sobie pakiet openssl
apt-get install openssl
W openwrt należy zainstalować sobie pakiet openssl-util
opkg install libopenssl openssl-util
Jednakże jeśli chodzi o openwrt należy sie mała uwaga. Zainstalowany jest podstawowy pakiet
bez skryptów. Plik openssl.cnf jest umiesczony w /etc/ssl/openssl.cnf. Skrypty są poniżej
możesz sobie pobrać i wykorzystać w openwrt lub przeanalizowac i wyciągnąć odpowiednie
komendy.
Plik shellowy zmodyfikowałem troszkę tak, że teraz ma te same funkcje co perlowy. Do
pobrania CA.sh .
Można go teraz używać jako zamiennik CA.pl
1 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
Założenia
Nazwa dns naszego servera np. apache, openvpn, exim: vpn.dyndns.org
Nazwa dns naszego clienta : iyy99.internetdsl.tpnet.pl
Nazwa e-mail naszego clienta: [email protected]
Jeśli chcesz aby certyfikat był ważny dłużej niż 1 rok (365dni) to zmień poniższy parametr np.
na:
default_days=3650
w pliku
/usr/lib/ssl/openssl.cnf
W/w plik jest linkiem symbolicznym do pliku /etc/ssl/openssl.cnf
1. Tworzenie własnego centrum certyfikacji PKI
Przechodzimy do katalogu
cd /usr/lib/ssl/misc
2 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
i wykonujemy komendę:
./CA.pl -newca
debian:/usr/lib/ssl/misc# ./CA.pl -newca
CA certificate filename (or enter to create)
Making CA certificate ...
Generating a 1024 bit RSA private key
....++++++
.++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
----You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Mazowieckie
Locality Name (eg, city) []:Warszawa
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Firma Sp. z o.o.
Organizational Unit Name (eg, section) []:Firma
Common Name (eg, YOUR name) []:Firma ROOT CA
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
e4:52:49:85:36:f1:5c:87
3 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
Validity
Not Before: Oct 26 18:51:43 2009 GMT
Not After : Oct 25 18:51:43 2012 GMT
Subject:
countryName = PL
stateOrProvinceName = Mazowieckie
organizationName = Firma Sp. z o.o.
organizationalUnitName = Firma
commonName = Firma ROOT CA
emailAddress = [email protected]
X509v3 extensions:
X509v3 Subject Key Identifier:
FB:93:5A:14:F1:52:F2:77:A5:DB:70:DF:35:AE:DF:28:F9:40:CA:C1
X509v3 Authority Key Identifier:
keyid:FB:93:5A:14:F1:52:F2:77:A5:DB:70:DF:35:AE:DF:28:F9:40:CA:C1
DirName:/C=PL/ST=Mazowieckie/O=Firma Sp. z o.o./OU=Firma/CN=Firma ROOT
CA/[email protected]
serial:E4:52:49:85:36:F1:5C:87
X509v3 Basic Constraints:
CA:TRUE
Certificate is to be certified until Oct 25 18:51:43 2012 GMT (1095 days)
Write out database with 1 new entries
Data Base Updated
W wyniku wykonania w/w komendy zostanie utworzony katalog demoCA.
Zawartością będzie minnymi klucz prywatny (w katalogu private) musisz go pilnować i nikomu
nie wolno udostępniać.
Możemy przygotować sobie plik der do wczytania do przeglądarek IE, Firefox poniższym
poleceniem:
openssl x509 -setalias "Firma Sp. z o.o. Root CA" -outform DER -in demoCA/cacert.pem -out
cacert.der
Plikiem cacert.der informujesz przeglądarki, iż dla później wygenerowanych certyfikatów i
podpisanych przez nasze CA o tym, że ty jesteś dla tych certyfikatów centrum certyfikacji.
Wtedy przeglądarki nie będą się buntowały. Musisz zainstalować plik cacert.der jako zaufane
centrum certyfikacji w swojej przeglądarce.
4 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
2. Tworzenie certyfikatu serwera np. apacha, openvpn, exim.
Edytujemy plik
vi /usr/lib/ssl/openssl.conf
szukamy wiersza : nsCertType w sekcji [usr_cert] i ustawiamy (odremowujemy) wartość server
czyli
nsCertType = server
inne wiersze z nsCertType mają być zaremowane
Wywołujemy komendę:
./CA.pl -newreq-nodes
mała uwaga dodajemy nodes ponieważ niechcemy aby serwer np. apach, openvpn czy exim w
czasie uruchomienia pytał się o hasło (jeśli jednak chcemy to wystarczy tylko -newreq)
Zwróć uwagę na pole Common Name. Ważne aby to była nazwa DNS serwera
debian:/usr/lib/ssl/misc# ./CA.pl -newca
CA certificate filename (or enter to create)
Making CA certificate ...
Generating a 1024 bit RSA private key
....++++++
.++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:
5 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
Verifying - Enter PEM pass phrase:
----You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Mazowieckie
Locality Name (eg, city) []:Warszawa
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Firma Sp. z o.o.
Organizational Unit Name (eg, section) []:Firma
Common Name (eg, YOUR name) []:Firma ROOT CA
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
e4:52:49:85:36:f1:5c:87
Validity
Not Before: Oct 26 18:51:43 2009 GMT
Not After : Oct 25 18:51:43 2012 GMT
Subject:
countryName = PL
stateOrProvinceName = Mazowieckie
organizationName = Firma Sp. z o.o.
organizationalUnitName = Firma
commonName = Firma ROOT CA
emailAddress = [email protected]
X509v3 extensions:
X509v3 Subject Key Identifier:
FB:93:5A:14:F1:52:F2:77:A5:DB:70:DF:35:AE:DF:28:F9:40:CA:C1
X509v3 Authority Key Identifier:
keyid:FB:93:5A:14:F1:52:F2:77:A5:DB:70:DF:35:AE:DF:28:F9:40:CA:C1
DirName:/C=PL/ST=Mazowieckie/O=Firma Sp. z o.o./OU=Firma/CN=Firma ROOT
CA/[email protected]
serial:E4:52:49:85:36:F1:5C:87
6 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
X509v3 Basic Constraints:
CA:TRUE
Certificate is to be certified until Oct 25 18:51:43 2012 GMT (1095 days)
Write out database with 1 new entries
Data Base Updated
Podpisywanie wyżej wygenerowanego certyfikatu serwera
wywołujemy komendę
./CA.pl -sign
po wywołaniu podajemy hasło nadane podczas tworzenia centrum certyfikacji PKI CA i
potwierdzamy. Potem na dwa pytania odpowiadamy "y" czyli zgadzamy się.
Wynik wywołania polecenia wygląda następująco:
debian:/usr/lib/ssl/misc# ./CA.pl -newca
CA certificate filename (or enter to create)
Making CA certificate ...
Generating a 1024 bit RSA private key
....++++++
.++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
----You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Mazowieckie
Locality Name (eg, city) []:Warszawa
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Firma Sp. z o.o.
Organizational Unit Name (eg, section) []:Firma
Common Name (eg, YOUR name) []:Firma ROOT CA
7 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
e4:52:49:85:36:f1:5c:87
Validity
Not Before: Oct 26 18:51:43 2009 GMT
Not After : Oct 25 18:51:43 2012 GMT
Subject:
countryName = PL
stateOrProvinceName = Mazowieckie
organizationName = Firma Sp. z o.o.
organizationalUnitName = Firma
commonName = Firma ROOT CA
emailAddress = [email protected]
X509v3 extensions:
X509v3 Subject Key Identifier:
FB:93:5A:14:F1:52:F2:77:A5:DB:70:DF:35:AE:DF:28:F9:40:CA:C1
X509v3 Authority Key Identifier:
keyid:FB:93:5A:14:F1:52:F2:77:A5:DB:70:DF:35:AE:DF:28:F9:40:CA:C1
DirName:/C=PL/ST=Mazowieckie/O=Firma Sp. z o.o./OU=Firma/CN=Firma ROOT
CA/[email protected]
serial:E4:52:49:85:36:F1:5C:87
X509v3 Basic Constraints:
CA:TRUE
Certificate is to be certified until Oct 25 18:51:43 2012 GMT (1095 days)
Write out database with 1 new entries
Data Base Updated
Pliki
8 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
newcert.pem - certyfikat publiczny
newkey.pem - klucz prywatny certyfikatu
newreq.pem - request
to nasze wygenerowane pliki certyfikatu
3. Generowanie imiennego certyfikatu clienta np. dla openvpn, mail
Edytujemy plik
vi /usr/lib/ssl/openssl.conf
szukamy wiersza : nsCertType w sekcji [usr_cert] i ustawiamy (odremowujemy) wartość client
czyli
nsCertType = client, email
inne wiersze z nsCertType mają być zaremowane
Wywołujemy komendę:
./CA.pl -newreq
I podajemy hasło do certyfikatu imiennego usera któremu generujemy certyfikat
Zwróć uwagę na pole Common Name. Ważne aby to była nazwa imię i nazwisko usera a w polu
Email Address był prawdziwy adres e-mail usera.
9 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
debian:/usr/lib/ssl/misc# ./CA.pl -newreq
Generating a 1024 bit RSA private key
...........++++++
...........................++++++
writing new private key to 'newkey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
----You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Mazowieckie
Locality Name (eg, city) []:Warszawa
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Firma Sp. z o.o.
Organizational Unit Name (eg, section) []:Firma
Common Name (eg, YOUR name) []:Imie i Nazwisko
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Request is in newreq.pem, private key is in newkey.pem
Podpisujemy certyfikat clienta:
debian:/usr/lib/ssl/misc# ./CA.pl -sign
Using configuration from /usr/lib/ssl/openssl.cnf
10 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
e4:52:49:85:36:f1:5c:89
Validity
Not Before: Oct 26 19:06:45 2009 GMT
Not After : Oct 24 19:06:45 2019 GMT
Subject:
countryName = PL
stateOrProvinceName = Mazowieckie
localityName = Warszawa
organizationName = Firma Sp. z o.o.
organizationalUnitName = Firma
commonName = Imie i Nazwisko
emailAddress = [email protected]
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
0E:52:58:81:AE:AC:19:A8:C4:79:60:C4:90:A2:CE:BF:9D:50:C5:DB
X509v3 Authority Key Identifier:
keyid:FB:93:5A:14:F1:52:F2:77:A5:DB:70:DF:35:AE:DF:28:F9:40:CA:C1
Certificate is to be certified until Oct 24 19:06:45 2019 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Signed certificate is in newcert.pem
Pliki
newcert.pem - certyfikat publiczny
newkey.pem - klucz prywatny certyfikatu
newreq.pem - request
to nasze wygenerowane pliki certyfikatu
11 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
Jeśli chcemy mieć certyfikat w formie pkcs12 to wykonujemy jeszcze polecenie
./CA.pl -pkcs12
podajesz 2 razy hasło dostępu do pliku certyfikatu
4. Generowanie certyfikatu clienta dla np.routera - ipsec
Edytujemy plik
vi /usr/lib/ssl/openssl.conf
szukamy wiersza : nsCertType w sekcji [usr_cert] i ustawiamy (odremowujemy) wartość client
czyli
nsCertType = client, email
inne wiersze z nsCertType mają być zaremowane
Zwróć uwagę na pole Common Name. Ważne aby to była nazwa DNS clienta
Wywołujemy polecenie:
./CA.pl -newreq-nodes
debian:/usr/lib/ssl/misc# ./CA.pl -newreq-nodes
Generating a 1024 bit RSA private key
12 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
........................++++++
........................++++++
writing new private key to 'newkey.pem'
----You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----Country Name (2 letter code) [AU]:PL
State or Province Name (full name) [Some-State]:Mazowieckie
Locality Name (eg, city) []:Warszawa
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Firma Sp. z o.o.
Organizational Unit Name (eg, section) []:Firma
Common Name (eg, YOUR name) []:iyy99.internetdsl.tpnet.pl
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Request is in newreq.pem, private key is in newkey.pem
i podpisujemy wyżej utworzony certyfikat (podając hasło centrum certyfikacji CA i dwa
razy akceptując "y")
debian:/usr/lib/ssl/misc# ./CA.pl -sign
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
e4:52:49:85:36:f1:5c:8a
Validity
Not Before: Oct 26 19:16:47 2009 GMT
Not After : Oct 24 19:16:47 2019 GMT
Subject:
13 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
countryName = PL
stateOrProvinceName = Mazowieckie
localityName = Warszawa
organizationName = Firma Sp. z o.o.
organizationalUnitName = Firma
commonName = iyy99.internetdsl.tpnet.pl
emailAddress = [email protected]
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
58:EB:7C:1A:C9:75:83:2B:BF:AA:E0:7E:DB:B4:0C:0B:53:8A:73:AA
X509v3 Authority Key Identifier:
keyid:FB:93:5A:14:F1:52:F2:77:A5:DB:70:DF:35:AE:DF:28:F9:40:CA:C1
Certificate is to be certified until Oct 24 19:16:47 2019 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Signed certificate is in newcert.pem
Pliki
newcert.pem - certyfikat publiczny
newkey.pem - klucz prywatny certyfikatu
newreq.pem - request
to nasze wygenerowane pliki certyfikatu
5. Generowanie listy CRL - czyli lista certyfikatów unieważnionych
14 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
openssl ca -gencrl -out demoCA/crl/crl.pem
openssl crl -in demoCA/crl/crl.pem -outform der -out demoCA/crl/cert.crl
6. Anulowanie ważności certyfikatu - potem wygeneruj nowe lsty CRL
openssl ca -revoke userCert.pem
7. Polecenie podające sumę kontrolną certyfikatu publicznego
openssl dgst certyfikat.publiczny
Wynikiem polecenia może być:
MD5(upstairs.public)= 78a3bddafb4d681c1ca8ed4d23da4ff1
Jeżeli nie korzystasz z list CRL w/w komenda pozwoli zweryfikować czy otrzymany certyfikat
jest prawidłowy.
8.Konwersja certyfikatu z PEM->DER
openssl x509 -in /usr/lib/ssl/demoCA/cacert.pem -inform PEM -out
/usr/lib/ssl/demoCA/cacert.der -outform DER
15 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
Przyda się jeśli chcemy np. wczytać klucz do przeglądarki IE
9.Przykład wygenerowanych certyfikatów
Wygenerowałem przykładowe certyfikaty. Możesz sobie je pobrać i obejrzeć.
Wszędzie hasło to: certyfikat
10. Generowanie certyfikatów dla radius client i serwer
Certyfikat dla radius server musi być odpowiednio przygotowany. Urząd wystawiający certyfikat
MUSI w certyfikacie serwera dodać rozszerzenie TLS Web Server Authentication. W pliku /etc/s
sl/openssl.cnf
należy odremować wiersze lub jeśli ich nie ma utworzyć w sekcji [usr_cert]:
nsCertType = server
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
Certyfikat dla clienta radius musi być odpowiednio przygotowany. Jeżeli używamy
uwierzytelniania EAP-TLS klient musi się dysponować certyfikatem zawierającym rozszerzenie
TLS Web Client Authentication. W pliku /etc/ssl/openssl.cnf należy odremować wiersze lub jeśli
ich nie ma utworzyć:
16 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
nsCertType = client, email
extendedKeyUsage = 1.3.6.1.5.5.7.3.2
11. Umieszczenie ścieżki CRL w certyfikacie
Edytujemy plik /etc/ssl/openssl.cnf w sekcji [usr_cert] umieszczamy
nsCaRevocationUrl = http://vpn.dyndns.org/crl/crl.pem
co oznacza, iż lista crl znajduje się pod podanym adresem. Musimy pod podanym adresem na
serwerze www umieścić aktualną listę crl.pem
12. Konwersja certyfikatu na format PKCS8
Możemy go sobie wygenerować następująco:
openssl pkcs12 -in newcert.p12 -out certyfikat.pem
openssl pkcs8 -topk8 -in certyfikat.pem -out newcert.p8
17 / 18
Generowanie certyfikatów openssl x509
Wpisany przez rpc
poniedziałek, 26 października 2009 22:41 - Poprawiony wtorek, 18 stycznia 2011 19:00
lub z pliku prywatnego
openssl pkcs8 -topk8 -nocrypt -in key.pem -inform PEM -out newkey.p8
14. Generowanie pliku (Diffie Hellman parameters).
Plik może być potrzebny w openvpn czy w freeradius2 możemy go generować następująco:
openvpn:
openssl dhparam -out /etc/openvpn/dh1024.pem 1024
freeradius2:
openssl dhparam -out /etc/certs/dh 1024
.
18 / 18