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

Generera, hantera och transformera SSL-certifikat med OpenSSL

OpenSSL är ett av de mest använda kommandoradsverktygen inom SSL-hantering, för att skapa, konvertera och administrera SSL-certifikat.

Du kommer att stöta på många situationer där du behöver interagera med OpenSSL på varierande sätt. Jag har därför sammanställt en praktisk lista med vanliga kommandon för att underlätta ditt arbete.

I den här artikeln kommer jag att gå igenom frekvent använda OpenSSL-kommandon, avsedda att hjälpa dig i praktiska situationer.

Här är några förkortningar som är relaterade till certifikat:

  • SSL – Secure Socket Layer
  • CSR – Certificate Signing Request (Certifikatsigneringsbegäran)
  • TLS – Transport Layer Security
  • PEM – Privacy Enhanced Mail
  • DER – Distinguished Encoding Rules
  • SHA – Secure Hash Algorithm
  • PKCS – Public-Key Cryptography Standards

Obs: En kurs om SSL/TLS-drift kan vara till stor hjälp om du inte är bekant med dessa termer.

Skapa en ny privat nyckel och en certifikatsigneringsbegäran

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

Detta kommando genererar en CSR-fil och en 2048-bitars RSA-nyckelfil. Om du planerar att använda certifikatet med Apache eller Nginx, måste du skicka den här CSR-filen till en certifikatutfärdare. De kommer att returnera ett signerat certifikat, oftast i DER- eller PEM-format, som du sedan konfigurerar i din webbserver.

Generera ett självsignerat certifikat

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

Ovanstående kommando skapar ett självsignerat certifikat samt en nyckelfil med 2048-bitars RSA-kryptering. SHA256 är också inkluderat, eftersom det anses vara den säkraste metoden i nuläget.

Tips: Som standard har ett självsignerat certifikat en giltighetstid på en månad. Överväg att använda parametern ‘–days’ för att förlänga giltighetstiden.

Exempel: Ett självsignerat certifikat giltigt i två år:

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

Verifiera innehållet i en CSR-fil

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

Verifiering är essentiellt för att säkerställa att CSR-filen du skickar till utfärdaren innehåller korrekt information.

Skapa en privat RSA-nyckel

openssl genrsa -out private.key 2048

Om du enbart behöver skapa en privat RSA-nyckel kan du använda kommandot ovan. Jag har inkluderat 2048 för att få en starkare kryptering.

Ta bort lösenordsfras från en nyckel

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

Om du använder en lösenordsfras för din nyckelfil, och använder Apache, behöver du ange lösenordet vid varje omstart. Om du vill slippa detta kan du använda kommandot ‘openssl rsa -in adminvista.com.key -check’ för att ta bort lösenordsfrasen från en befintlig nyckel.

Verifiera en privat nyckel

openssl rsa -in certkey.key –check

Om du är osäker på din nyckelfil, kan du använda detta kommando för att utföra en verifiering.

Verifiera en certifikatfil

openssl x509 -in certfile.pem -text –noout

För att validera certifikatdata, som CN och OU, kan du använda ovanstående kommando. Det visar detaljer om certifikatet.

Verifiera certifikatutfärdare

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

Varje certifikat är signerat av en utfärdare. Använd detta kommando för att verifiera information om utfärdaren.

Kontrollera hashen för ett certifikat

openssl x509 -noout -hash -in bestflare.pem

Konvertera DER-format till PEM-format

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

Certifikatutfärdare skickar ofta SSL-certifikat i .der-format. Om du behöver använda dem i Apache, eller .pem-format generellt, är det här kommandot användbart.

Konvertera PEM-format till DER-format

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

Använd detta kommando om du behöver konvertera .pem till .der-format.

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 en Java-applikation, eller annat som endast accepterar PKCS#12-format, kan du använda detta kommando. Det genererar en .pfx-fil som inkluderar både certifikat och nyckel.

Tips: Du kan även inkludera kedjecertifikat genom att ange ‘–chain’ enligt nedan:

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

Skapa en CSR med en befintlig privat nyckel

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

Om du inte vill skapa en ny privat nyckel, utan hellre använda en befintlig, är det här kommandot användbart.

Granska innehållet i PKCS12-formaterade certifikat

openssl pkcs12 –info –nodes –in cert.p12

PKCS12 är ett binärt format och du kan inte granska dess innehåll i en vanlig textredigerare. Det här kommandot hjälper dig att se informationen i PKCS12-filen.

Konvertera PKCS12-format till PEM-certifikat

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

Om du vill använda en existerande PKCS12-fil med Apache, eller helt enkelt i PEM-format, kan du använda det här kommandot.

Testa ett SSL-certifikat mot en viss URL

openssl s_client -connect yoururl.com:443 –showcerts

Jag använder detta kommando frekvent för att validera SSL-certifikat mot en specifik URL. Det är ett praktiskt sätt att validera protokoll, chiffer och certifikatdetaljer.

Ta reda på OpenSSL-versionen

openssl version

En av de första sakerna du förmodligen bör göra för att se till att OpenSSL är säkert är att verifiera versionen.

Kontrollera utgångsdatumet för ett PEM-certifikat

openssl x509 -noout -in certificate.pem -dates

Detta är användbart om du vill lägga till någon typ av övervakning. Det visar ‘notBefore’ och ‘notAfter’-datum. ‘notAfter’ är det datum du behöver kontrollera för att se om ett certifikat har gått ut, eller fortfarande är giltigt.

Exempel:

[[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 utgångsdatumet för ett SSL-certifikat för en URL

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

Ett annat användbart kommando om du vill övervaka utgångsdatumet för SSL-certifikat för en specifik URL.

Exempel:

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

Verifiera om SSL V2 eller V3 accepteras för en 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 har ansvar för att säkra en webbserver och behöver verifiera om SSL V2/V3 är aktiverat eller inte kan du använda de här kommandona. Om de är aktiverade får du meddelandet ”CONNECTED”, annars får du ”handshake failure”.

Verifiera om en specifik krypteringsmetod accepteras av en URL

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

Om du arbetar med säkerhetsresultat eller penntest-resultat som visar att vissa svaga krypteringsmetoder accepteras, kan du använda det här kommandot för att verifiera.

Självklart behöver du ändra krypteringsmetoden och URL:en för att matcha din testmiljö. Om metoden accepteras får du ”CONNECTED”, annars ”handshake failure”.

Jag hoppas att de här kommandona hjälper dig att lära dig mer om OpenSSL och hantera SSL-certifikat för din webbplats.