- Vygenerovanie kľúčového páru (keypair)
- Privátne kľúče
- Vygenerovanie privátneho kľúča
- Výpis obsahu privátneho kľúča
- Prevod PPK (Putty formát) na PEM
- Odšifrovanie / odstránenie hesla z privátneho kľúča
- Operácie s CSR (Certificate Signing Request)
- Vygenerovanie CSR z privátneho kľúča
- Výpis obsahu CSR
- Operácie s certifikátmi
- Získanie certifikátu z HTTP servera
- Výpis obsahu PEM certifikátu
- Extrakcia verejného kľúča
- Výpis certifikátu v binárnom formáte (DER)
- Import PEM => JKS
- Operácie s verejnými kľúčmi
- Výpis obsahu verejného kľúča
- Prevod PEM => PKCS#12
- Prevod DER => PEM
- Konverzia certifikátov z certifikačnej autority GoDaddy pre Tomcat
- Rýchla certifikačná autorita
- Operácie s privátnymi kľúčmi
- Zistenie informácií o PKCS#8 kľúči
- Prevod PKCS#8 kľúča na nešifrovaný kľúč
- Generovanie verejného kľúča na základe privátneho kľúča
Vygenerovanie kľúčového páru (keypair)
openssl req -new -x509 -keyout privkey.pem -newkey rsa:2048 -days 730
- použije sa 2048bitový RSA
- platnosť certifikátu bude 2 roky
Privátne kľúče
Vygenerovanie privátneho kľúča
Vygenerovanie 1024bitového privátneho kľúča RSA:
openssl genrsa -out private.pem 1024
Vygenerovaný kľúč obsahuje informácie, pomocou ktorých možno odvodiť verejný kľúč (pozri nižšie).
Výpis obsahu privátneho kľúča
Privátny kľúč musí byť vo formáte PEM BEGIN RSA PRIVATE KEY
:
openssl rsa -modulus -text -in private.pem
Prevod PPK (Putty formát) na PEM
puttygen private.ppk -O private-openssh -o private.pem
Predpokladá sa, že na Linuxe / MacOS je nainštalovaný balíček putty
.
Odšifrovanie / odstránenie hesla z privátneho kľúča
Kľúč musí obsahovať príznak ENCRYPTED
:
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
Heslo odstránime cez:
openssl rsa -in private.pem -out private.nopassword.pem
Operácie s CSR (Certificate Signing Request)
Vygenerovanie CSR z privátneho kľúča
Potrebujeme privátny kľúč používateľa, pre ktorého generujeme CSR:
openssl req -key private.pem -new
Výpis obsahu CSR
openssl req -in user1.csr -text
Operácie s certifikátmi
Certifikát je výsledkom podpisu verejného kľúča certifikačnou autoritou.
Získanie certifikátu z HTTP servera
V Linux shelli:
echo | openssl s_client -connect serverik.sk:443 2>&1 |sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
Výpis obsahu PEM certifikátu
Certifikát musí byť v tvare BEGIN CERTIFICATE
openssl x509 -modulus -in certificate.pem
Extrakcia verejného kľúča
openssl x509 -pubkey -noout -in certificate.pem
Na vstupe musí byť certifikát začínajúci na
-----BEGIN CERTIFICATE-----
Na výstupe bude verejný kľúč s hlavičkou
-----BEGIN PUBLIC KEY-----
Výpis certifikátu v binárnom formáte (DER)
openssl x509 -in certificate.der -inform der -text
Import PEM => JKS
Ak máme .pem
súbor, ktorý napr. obsahuje certifikát servera (stiahnutého zo SSL), môžeme ho importnúť do Java keystoru takto:
keytool -importcert -keystore keystore.jks -file certifikat.pem
Nástroj sa spýta na konfiguračné nastavenia: typicky na heslo do keystoru a alias, pod ktorým bude certifikát v keystore uložený.
Prirodzene, certifikát musí byť v tvare BEGIN CERTIFICATE
.
Operácie s verejnými kľúčmi
Výpis obsahu verejného kľúča
Verejný kľúč musí byť vo formáte PEM BEGIN PUBLIC KEY
openssl rsa -in public.pem -pubin -modulus -text
Export certifikátu z Java Keystore
keytool -exportcert -keystore ca_truststore -alias mykey -rfc > ca_cert.pem
Parametre:
ca_truststore
: názov súboru s keystorommykey
: alias verejného kľúča- parameter
-rfc
exportne kľúč v PEM formáte (BEGIN CERTIFICATE
)
Prevod PEM => PKCS#12
Keystory v Jave žiaľ nepodporujú formát PEM. Obvykle je najjednoduchšie previesť ich do formátu PKCS#12 (.p12
, .pfx
), kde v jednom súbore je možné udržiavať i privátny i verejný kľúč.
Ak máme verejný kľúč user_cert.pem
a súkromný kľúč user_key.pem
, konvertovať do PKCS#12 môžeme cez:
openssl pkcs12 -export -in user_cert.pem -inkey user_key.pem -out user.p12 -name mykey
Kľúč sa do PKCS#12 uloží pod aliasom mykey
.
Prevod DER => PEM
Prevod certifikátu v binárnom kódovaní (DER) do textového kódovania PEM:
openssl x509 -in sts-cert_der.cer -inform der -outform pem
Konverzia certifikátov z certifikačnej autority GoDaddy pre Tomcat
Z GoDaddy dostaneme tri súbory:
[číslo].crt
gd_bundle.crt
gd_intermediate.crt
Predpokladáme, že v private.pem
máme privátny kľúč, ktorý sme použili
pri generovaní certifikátu v CA.
Zlepíme všetky súbory do jedného
all.pem
cat 7a2565f3d52f0911.crt gd_bundle.crt gd_intermediate.crt private.pem > all.pem
Vyrobíme
PKCS#12
úložisko cez OpenSSLopenssl pkcs12 -export -chain -CAfile gd_bundle.crt -in all.pem -out keystore.tomcat -name www.mymegaproject.sk
Prevedieme
PKCS#12
na Java úložiskuJKS
keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore tomcat.jks -deststoretype jks -deststorepass changeit
Nakonfigurujeme Tomcat
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="500" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" maxConnections="8192" keystoreFile="/opt/tomcat/conf/tomcat.jks" keystorePass="changeit" />
Rýchla certifikačná autorita
Vytvoríme adresár a v ňom súbor
ca.conf
.[ ca ] default_ca = ca_default [ ca_default ] dir = . certs = . new_certs_dir = new_certs database = database.txt serial = serial.txt RANDFILE = rand certificate = ca_cert.pem private_key = ca_key.pem default_days = 365 default_crl_days = 30 default_md = md5 preserve = no policy = generic_policy [ generic_policy ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional
Získame alebo vygenerujeme dvojicu privátneho a verejného kľúča pre certifikačnú autoritu. Oba nech sú vo formáte PEM — privátny kľúč
ca_cert.pem
, verejný kľúčca_key.pem
. Umiestnime ich do adresára vedľa konfiguráku.- Vytvoríme prázdny súbor
database.txt
, ktorý sa bude postupne plniť vygenerovanými certifikátmi. - Vytvoríme súbor
serial.txt
, v ktorom budú sériové čísla certifikátov. Musí obsahovať hexadecimálne číslo, ktoré sa bude postupne navyšovať. Na začiatok môžeme uviesť hodnotu01
(nula na začiatku indikuje hexa hodnotu.) - Vytvoríme adresár
new_certs
, v ktorom sa budú objavovať vygenerované certifikáty. Spustenie CA: vytvorenie certifikátu na základe CSR súboru
input.csr
:openssl ca -config ca.conf -in input.csr
Operácie s privátnymi kľúčmi
Zistenie informácií o PKCS#8 kľúči
PKCS#8 kľúč obvykle vypadne pri generovaní kľúčového páru. Začína sa
-----BEGIN ENCRYPTED PRIVATE KEY-----
Zistiť informácie môžeme cez
openssl rsa -in privkey.unencrypted.pem -text
Prevod PKCS#8 kľúča na nešifrovaný kľúč
Ak chceme mať výsledok v tvare
-----BEGIN PRIVATE KEY-----
použime:
openssl pkcs8 -in privkey.pem
Generovanie verejného kľúča na základe privátneho kľúča
openssl rsa -in privkey.pem -pubout
Výsledkom je súbor s hlavičkou
-----BEGIN PUBLIC KEY-----