21 OpenSSL-exempel som hjälper dig i verkliga världen

Skapa, hantera och konvertera SSL-certifikat med OpenSSL

Ett av de mest populära kommandona i SSL för att skapa, konvertera, hantera SSL-certifikaten är OpenSSL.

Det kommer att finnas många situationer där du måste hantera OpenSSL på olika sätt, och här har jag listat dem åt dig som ett praktiskt fuskblad.

I den här artikeln kommer jag att prata om ofta använda OpenSSL-kommandon för att hjälpa dig i den verkliga världen.

Några av förkortningarna relaterade till certifikat.

  • SSL – Secure Socket Layer
  • CSR – Begäran om certifikatsignering
  • TLS – Transport Layer Security
  • PEM – Privacy Enhanced Mail
  • DER – Distinguished Encoding Rules
  • SHA – Secure Hash Algorithm
  • PKCS – Public-Key Cryptography Standards

Notera: SSL/TLS driftkurs skulle vara till hjälp om du inte är bekant med termerna.

Skapa en ny begäran om privat nyckel och certifikatsignering

openssl req -out adminvista.com.csr -newkey rsa:2048 -nodes -keyout adminvista.com.key

Ovanstående kommando genererar CSR och en 2048-bitars RSA-nyckelfil. Om du tänker använda detta certifikat i Apache eller Nginx, måste du skicka denna CSR-fil till certifikatutfärdarens myndighet, och de kommer att ge dig ett signerat certifikat mestadels i der- eller pem-format som du behöver konfigurera i Apache- eller Nginx-webbservern .

Skapa ett självsignerat certifikat

openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Ovanstående kommando genererar ett självsignerat certifikat och nyckelfil med 2048-bitars RSA. Jag har även inkluderat sha256 eftersom det anses vara säkrast för tillfället.

Tips: som standard genererar den ett självsignerat certifikat som endast är giltigt i en månad så du kan överväga att definiera parametern –days för att förlänga giltigheten.

Ex: att ha självsignerat giltigt i två år.

openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Verifiera CSR-filen

openssl req -noout -text -in adminvista.com.csr

Verifiering är avgörande för att säkerställa att du skickar CSR till emittentmyndigheten med de nödvändiga uppgifterna.

Skapa privat RSA-nyckel

openssl genrsa -out private.key 2048

Om du bara behöver generera privat RSA-nyckel kan du använda kommandot ovan. Jag har inkluderat 2048 för starkare kryptering.

Ta bort lösenordsfras från nyckel

openssl rsa -in certkey.key -out nopassphrase.key

Om du använder en lösenordsfras i nyckelfilen och använder Apache måste du ange lösenordet varje gång du startar. Om du är irriterad på att ange ett lösenord kan du använda ovanstående openssl rsa -in adminvista.com.key -check för att ta bort lösenfrasnyckeln från en befintlig nyckel.

Verifiera privat nyckel

openssl rsa -in certkey.key –check

Om du tvivlar på din nyckelfil kan du använda kommandot ovan för att kontrollera.

Verifiera certifikatfil

openssl x509 -in certfile.pem -text –noout

Om du vill validera certifikatdata som CN, OU, etc. kan du använda kommandot ovan som ger dig certifikatdetaljer.

Verifiera certifikatundertecknarmyndigheten

openssl x509 -in certfile.pem -noout -issuer -issuer_hash

Certifikatutfärdaren undertecknar varje certifikat och om du behöver kontrollera dem.

Kontrollera hashvärdet för ett certifikat

openssl x509 -noout -hash -in bestflare.pem

Konvertera DER till PEM-format

openssl x509 –inform der –in sslcert.der –out sslcert.pem

Vanligtvis kommer certifikatutfärdaren att ge dig SSL-certifikat i .der-format, och om du behöver använda dem i apache- eller .pem-format så kommer kommandot ovan att hjälpa dig.

Konvertera PEM till DER-format

openssl x509 –outform der –in sslcert.pem –out sslcert.der

Om du behöver ändra .pem-formatet till .der

Konvertera certifikat och privat nyckel till PKCS#12-format

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem

Om du behöver använda ett certifikat med java-applikationen eller med någon annan som endast accepterar PKCS#12-format, kan du använda kommandot ovan, som kommer att generera en enda pfx som innehåller certifikat & nyckelfil.

Tips: du kan också inkludera kedjecertifikat genom att godkänna –kedja enligt nedan.

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem

Skapa CSR med en befintlig privat nyckel

openssl req –out certificate.csr –key existing.key –new

Om du inte vill skapa en ny privat nyckel istället för att använda en befintlig, kan du gå med ovanstående kommando.

Kontrollera innehållet i PKCS12-formatcertifikat

openssl pkcs12 –info –nodes –in cert.p12

PKCS12 är ett binärt format så att du inte kommer att kunna se innehållet i anteckningsblock eller annan redigerare. Ovanstående kommando hjälper dig att se innehållet i PKCS12-filen.

Konvertera PKCS12-format till PEM-certifikat

openssl pkcs12 –in cert.p12 –out cert.pem

Om du vill använda befintligt pkcs12-format med Apache eller bara i pem-format, kommer detta att vara användbart.

Testa SSL-certifikat för en viss URL

openssl s_client -connect yoururl.com:443 –showcerts

Jag använder detta ganska ofta för att validera SSL-certifikatet för en viss URL från servern. Detta är mycket praktiskt för att validera protokoll, chiffer och certifikatdetaljer.

Ta reda på OpenSSL-versionen

openssl version

Om du är ansvarig för att se till att OpenSSL är säkert så är förmodligen en av de första sakerna du måste göra att verifiera versionen.

Kontrollera PEM-filcertifikatets utgångsdatum

openssl x509 -noout -in certificate.pem -dates

Användbart om du planerar att lägga till lite övervakning för att kontrollera giltigheten. Det kommer att visa dig ett datum i syntaxen notBefore och notAfter. notAfter är en du måste verifiera för att bekräfta om ett certifikat har löpt ut eller fortfarande är giltigt.

Ex:

[[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]#

Kontrollera certifikatets utgångsdatum för SSL-URL

openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate

En annan användbar om du planerar att övervaka SSL-certifikatets utgångsdatum på distans eller en viss URL.

Ex:

[[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

Kontrollera om SSL V2 eller V3 accepteras på URL

För att kontrollera SSL V2

openssl s_client -connect secureurl.com:443 -ssl2

För att kontrollera SSL V3

openssl s_client -connect secureurl.com:443 –ssl3

För att kontrollera TLS 1.0

openssl s_client -connect secureurl.com:443 –tls1

För att kontrollera TLS 1.1

openssl s_client -connect secureurl.com:443 –tls1_1

För att kontrollera TLS 1.2

openssl s_client -connect secureurl.com:443 –tls1_2

Om du säkrar en webbserver och behöver verifiera om SSL V2/V3 är aktiverat eller inte, kan du använda kommandot ovan. Om den är aktiverad får du ”CONNECTED” annars ”handshake failure”.

Verifiera om det specifika chiffret är accepterat på URL

openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443

Om du arbetar med säkerhetsfynd och penntestresultat visar att några av de svaga chiffern accepteras, kan du använda kommandot ovan för att validera.

Naturligtvis måste du ändra chiffer och URL, som du vill testa mot. Om nämnda chiffer accepteras kommer du att få ”CONNECTED” annars ”handshake failure.”

Jag hoppas att ovanstående kommandon hjälper dig att veta mer om OpenSSL för att hantera SSL-certifikat för din webbplats.