Lag, håndter og konverter SSL-sertifikater med OpenSSL
Et av de mest brukte verktøyene for å generere, konvertere og administrere SSL-sertifikater er OpenSSL.
Du vil ofte møte situasjoner der du må bruke OpenSSL på forskjellige måter, og her har jeg samlet en oversikt over de viktigste kommandoene.
I denne artikkelen skal vi se nærmere på de mest vanlige OpenSSL-kommandoene for å hjelpe deg i praktiske situasjoner.
Før vi begynner, er det nyttig å kjenne til noen forkortelser:
- SSL – Secure Socket Layer
- CSR – Certificate Signing Request
- TLS – Transport Layer Security
- PEM – Privacy Enhanced Mail
- DER – Distinguished Encoding Rules
- SHA – Secure Hash Algorithm
- PKCS – Public-Key Cryptography Standards
Merk: Et kurs om SSL/TLS operasjoner kan være nyttig hvis du er ny til disse begrepene.
Generer en ny privat nøkkel og sertifikatsigneringsforespørsel
openssl req -out tipsbilk.net.csr -newkey rsa:2048 -nodes -keyout tipsbilk.net.key
Denne kommandoen genererer en CSR-fil og en 2048-bits RSA-nøkkelfil. Hvis du planlegger å bruke dette sertifikatet med Apache eller Nginx, må du sende CSR-filen til en sertifikatutsteder, som deretter vil utstede et signert sertifikat, vanligvis i DER- eller PEM-format. Dette sertifikatet må du så konfigurere i Apache eller Nginx webserveren.
Lag et selvsignert sertifikat
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Denne kommandoen genererer et selvsignert sertifikat og en nøkkelfil med 2048-bit RSA. SHA256 er inkludert da det regnes som den mest sikre hash-algoritmen for øyeblikket.
Tips: Som standard genereres selvsignerte sertifikater med en gyldighet på én måned. Du kan bruke parameteren –days
for å forlenge gyldighetsperioden.
Eksempel: For et selvsignert sertifikat gyldig i to år:
openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Bekreft en CSR-fil
openssl req -noout -text -in tipsbilk.net.csr
Det er viktig å verifisere CSR-filen for å sikre at du sender den til utstedermyndigheten med korrekt informasjon.
Generer en privat RSA-nøkkel
openssl genrsa -out private.key 2048
Dersom du kun trenger å generere en privat RSA-nøkkel, kan du bruke denne kommandoen. 2048 brukes for sterkere kryptering.
Fjern passordfrase fra en nøkkel
openssl rsa -in certkey.key -out nopassphrase.key
Hvis nøkkelfilen din er beskyttet med en passordfrase, vil Apache kreve at du skriver inn passordet hver gang serveren starter. For å unngå dette kan du bruke denne kommandoen for å fjerne passordfrasen fra en eksisterende nøkkel.
Bekreft en privat nøkkel
openssl rsa -in certkey.key –check
Bruk denne kommandoen for å sjekke at en nøkkelfil er i orden.
Bekreft en sertifikatfil
openssl x509 -in certfile.pem -text –noout
Denne kommandoen viser sertifikatdetaljer, som CN (Common Name) og OU (Organizational Unit).
Bekreft sertifikatets utsteder
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
Hvert sertifikat er signert av en sertifikatutsteder, og denne kommandoen viser utstederinformasjonen.
Sjekk hash-verdien til et sertifikat
openssl x509 -noout -hash -in bestflare.pem
Konverter DER til PEM-format
openssl x509 –inform der –in sslcert.der –out sslcert.pem
Sertifikatutstedere leverer ofte SSL-sertifikater i .der-format. Denne kommandoen konverterer dem til .pem-format, som ofte er nødvendig for Apache og andre tjenester.
Konverter PEM til DER-format
openssl x509 –outform der –in sslcert.pem –out sslcert.der
Denne kommandoen konverterer et sertifikat fra .pem-format til .der-format.
Konverter sertifikat og privat nøkkel til PKCS#12-format
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem
For å bruke et sertifikat i Java-applikasjoner eller andre tjenester som krever PKCS#12-format, kan du bruke denne kommandoen. Den genererer en enkelt .pfx-fil som inneholder både sertifikat og nøkkelfil.
Tips: Du kan også inkludere kjedesertifikater ved å bruke parameteren –chain
, som vist nedenfor.
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem
Opprett en CSR med en eksisterende privat nøkkel
openssl req –out certificate.csr –key existing.key –new
Denne kommandoen lar deg opprette en CSR ved hjelp av en eksisterende privat nøkkel.
Sjekk innholdet i et PKCS#12-formatsertifikat
openssl pkcs12 –info –nodes –in cert.p12
PKCS12 er et binært format, så det kan ikke leses i en vanlig tekstredigerer. Denne kommandoen viser innholdet i en PKCS12-fil.
Konverter PKCS12-format til PEM-sertifikat
openssl pkcs12 –in cert.p12 –out cert.pem
Denne kommandoen konverterer et sertifikat fra PKCS12-format til PEM-format, som er brukbart for Apache.
Test SSL-sertifikatet for en spesifikk URL
openssl s_client -connect yoururl.com:443 –showcerts
Denne kommandoen brukes ofte for å validere et SSL-sertifikat for en bestemt URL fra serveren. Det er nyttig for å validere protokoll, chiffer og sertifikatdetaljer.
Finn ut OpenSSL-versjonen
openssl version
Det er viktig å vite hvilken versjon av OpenSSL du bruker for å sikre at den er sikker.
Sjekk utløpsdatoen for en PEM-fil
openssl x509 -noout -in certificate.pem -dates
Denne kommandoen viser start- og sluttdatoen for et sertifikat. Du bør sjekke notAfter
-datoen for å bekrefte at et sertifikat fortsatt er gyldig.
Eksempel:
[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates notBefore=Jul 4 14:02:45 2015 GMT notAfter=Aug 4 09:46:42 2015 GMT [[email protected] opt]#
Sjekk sertifikatets utløpsdato for en SSL-URL
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate
Denne kommandoen viser utløpsdatoen for et SSL-sertifikat eksternt, for en bestemt URL.
Eksempel:
[[email protected] opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate notAfter=Dec 8 00:00:00 2015 GMT
Sjekk om SSL V2 eller V3 er akseptert på en URL
For å sjekke SSL V2:
openssl s_client -connect secureurl.com:443 -ssl2
For å sjekke SSL V3:
openssl s_client -connect secureurl.com:443 –ssl3
For å sjekke TLS 1.0:
openssl s_client -connect secureurl.com:443 –tls1
For å sjekke TLS 1.1:
openssl s_client -connect secureurl.com:443 –tls1_1
For å sjekke TLS 1.2:
openssl s_client -connect secureurl.com:443 –tls1_2
Bruk disse kommandoene for å validere om SSL V2/V3 er aktivert på en webserver. Hvis en protokoll er aktivert, vil du se meldingen «CONNECTED», ellers «handshake failure.»
Bekreft om en bestemt chiffer er akseptert på en URL
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
Denne kommandoen kan brukes til å validere om en spesifikk chiffer er akseptert på en gitt URL. Dette er nyttig ved sårbarhetstesting.
Du må endre chiffer og URL etter behov. Hvis den spesifiserte chifferen aksepteres, vil du se meldingen «CONNECTED», ellers «handshake failure.»
Jeg håper disse OpenSSL-kommandoene hjelper deg med å administrere SSL-sertifikatene for nettstedet ditt.