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.
Innehållsförteckning
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.