Noderīgas OpenSSL komandas

Pašparakstīta sertifikāta izveidošana (self signed certificate).
openssl req -x509 -noenc -days <days> \
-newkey rsa:2048 \
-keyout <key file> -out <cert file> \
-subj "/CN=<common name>" \
-addext "subjectAltName=DNS:<subject alternative name>"

Common Name (CN) – resursdatora nosaukums (hostname) kuram sertifikāts tiek izdots.
Subject Alternative Name (SAN) – sertifikāta papildus adreses (domēna vārdi, sub domēna vārdi vai IP adreses).
rsa:2048 – RSA algoritma privātā atslēga 2048 bitu gara.

Piemēram, sertifikāta izveidošana uz 1 gadu:

openssl req -x509 -noenc -days 365 \
-newkey rsa:2048 \
-keyout cert.key -out cert.pem \
-subj "/CN=279.lv" \
-addext "subjectAltName=DNS:279.lv, DNS:www.279.lv"
Sertifikāta eksports no PEM uz PKCS#12 (PFX).
openssl pkcs12 -export -out cert.pfx -inkey cert.key -in cert.pem

PFX fails ar CA (certificate authority) sertifikātiem.

openssl pkcs12 -export -out cert.pfx -inkey cert.key -in cert.pem -certfile cacerts.crt

cert.pfx – PKCS#12 formāta fails, kurā ir privātā atslēga un sertifikāts. PFX fails aizsargāts ar paroli.
cert.key – privātās atslēgas fails.
cert.pem – sertifikāta fails.
cacerts.crt – CA sertifikātu fails.

Sertifikāta eksports no PKCS#12 (PFX) uz PEM.

Privātā atslēga.

openssl pkcs12 -in cert.pfx -nocerts -noenc | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > cert.key

Sertifikāts.

openssl pkcs12 -in cert.pfx -nokeys -clcerts | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > cert.pem

CA sertifikāti. Komanda darbosies, ja PFX fails satur CA sertifikātus.

openssl pkcs12 -in cert.pfx -nokeys -cacerts | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > cacerts.crt

cert.pfx – PKCS#12 formāta fails, kurā ir privātā atslēga un sertifikāts. PFX fails aizsargāts ar paroli.
cert.key – privātās atslēgas fails.
cert.pem – sertifikāta fails.
cacerts.crt – CA sertifikātu fails.

Sertifikāta pieprasījuma izveidošana.

Sertifikāta pieprasījums ar jaunu RSA privāto atslēgu (2048 biti). Interaktīvā veidā ievada papildus informāciju, kuru iekļaut sertifikāta pieprasījumā. Ja ievada “.” (punktu), tad lauks tiks atstāts tukšs. Obligāts ir lauks “Common Name” (CN), kur norāda tīmekļa vietnes adresi (FQDN).

openssl req -new -newkey rsa:2048 -noenc \
-keyout <key file> -out <cert csr file>

Piemēram:

openssl req -new -newkey rsa:2048 -noenc \
-keyout cert.key -out cert.csr

Sertifikāta pieprasījums ar jaunu RSA privāto atslēgu (2048 biti). Komandā norāda tīmekļa vietnes adresi (CN) un timekļa vietnes papildus adreses (subjectAltName).

openssl req -new -newkey rsa:2048 -noenc \
-keyout <key file> -out <cert csr file> \
-subj "/CN=<common name>" \
-addext "subjectAltName=DNS:<subject alternative name>"

Piemēram:

openssl req -new -newkey rsa:2048 -noenc \
-keyout cert.key -out cert.csr \
-subj "/CN=279.lv" \
-addext "subjectAltName=DNS:279.lv, DNS:www.279.lv"

Ja sertifikāta pieprasījumā grib norādīt valsti, tad parametrs “-subj” būs:

-subj "/CN=<common name>/C=<country 2 letter code>"

Parametrā “-subj” var norādīt organizācijas nosaukumu, pilsētu un citu informāciju.

Privātā atslēga saglabāta failā nešifrētā veidā (parametrs -noenc). Ja nepieciešama 4096 bitu RSA atslēga, tad openssl komandā norāda “rsa:4096”.

Informācija par sertifikāta pieprasījumu.

openssl req -in <cert csr file> -text -noout -verify
Informācija par sertifikātu.
openssl x509 -in <cert pem file> -text -noout

openssl pkcs12 -in <cert pfx file> -info -noout
Sertifikāta un privātās atslēgas faila apvienošana vienā failā.
cat <cert file> <key file> > <filename.cer>

Piemēram:

cat cert.pem cert.key > cert.cer

Vairāk par programmas iespējām.

man openssl
man openssl-req
man openssl-pkcs12
man openssl-rsa

Rakstā sniegtā informācija tiek sniegta “tāda, kāda tā ir” (“as is”) bez jebkādas garantijas.


Publicēts