mgulsoy.github.io

Bir Kişisel Blog

Openssl ile kullanılabilecek bazı komutlar

12 Nov 2019

Bu yazıda pratik bazı openssl komutları bulunmaktadır. Bu komutlar aracılığı ile OpenSSL kullanıp aracın sağladığı işlemler yapılabilir. Burada yer alan komutlar OpenSSL aracını linux, macos gibi sistemlerin komut satırı (terminal) aracılığı ile kullanmayı sağlar. Windows işletim sistemi ile de kullanılabilir. Fakat bunun için windows işletim sistemine bu aracın kurulması gereklidir!

Komutlar

Bir private-key (gizli anahtar) oluşturma işlemi:

Bu komut ile 4096 bitlik bir rsa gizli anahtar oluşturulur ve server.key adlı dosyaya kaydedilir.

openssl genrsa -out server.key 4096

Kendinden imzalı bir sertifika oluşturma:

Bu komut ile 4096 bitlik rsa sertifikası oluşturulur. Bu sertifika 365 gün -days 365 geçerlidir. Yeni Private-key server.key dosyasında, sertifika ise server.crt dosyasında yer alır.

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout server.key -out server.crt

Daha önceden var olan bir private-key için sertifika imza isteği (CSR) oluşturma:

Daha önceden var olan bir private-key (gizli anahtar) için sertifika imza isteği oluşturur. Varolan private-key -key server.key parametresi ile server.key adlı dosydan okunur. Sertifika isteği dosyası ise -out server.csr parametresi ile server.csr dosyasına konur.

openssl req -out server.csr -key server.key -new

Önceden var olanbir sertifika için imza isteği oluşturma:

Daha önceden var olan bir sertifika için imza isteği oluşturur. Varolan sertifika -in server.crt parametresi ile server.crt dosyasından okunur. Bu işlem için sertifikanın private-key bileşenine de ihtiyaç vardır. -signkey server.key parametresi ile private-key server.key dosyasından okunur. Sertifika isteği dosyası ise -out server.csr parametresi ile server.csr dosyasına konur.

openssl x509 -x509toreq -in server.crt -out server.csr -signkey server.key

Bir private-key üzerinden parola korumasını kaldırma:

Bu işlem parola ile korunan bir private-key dosyasındaki korumayı kaldırır. Bu işlem için tabiki parolayı bilmek gereklidir. Yoksa bedavaya köfte yok. Parola ile korunan dosya pem formatındadır. Komutu çalıştırdığınızda size varolan parolayı sorar. -in server.pem parametresi ile alınan private-key -out newserver.pem parametresi ile newserver.pem dosyasına aktarılır.

openssl rsa -in server.pem -out newserver.pem

Revoke işlemi yapılan sertifika seri numaralarının listesini okuma:

Sertifika hakları elinden alınan (revoke) sertifikaların seri numaralarının bulunduğu listeyi okur. -inform DER parametresi ile giriş dosyasının DER formatında olduğu belirtilir.

openssl crl -inform DER -text -noout -in list.crl

Bir sertifika imzalama isteğini kontrol etme:

Bu komut ile birlikte daha önceden oluşturulmuş (veya başka bir yerden gelen) sertifika imzalama isteği dosyası kontrol edilir. -in server.csr parametresi ile server.csr dosyasından okunur -text ve -noout parametreleri ile ekrana bilgi olarak basılır.

openssl req -text -noout -verify -in server.csr

Bir private-key kontrol etme:

Private-key dosyasının kontrolü sağlanır. -in server.key parametresi ile server.key dosyasından private-key okunur. -check parametresi ile kontrol sağlanır. İşlem rsa ile gerçekleştirilir.

openssl rsa -in server.key -check

Bir public-key (açık anahtar) kontrol etme:

Bu komut ile bir public-key (açık anahtar) kontrol edilir ve sonuç ekrana bilgi olarak basılır. -in pub.key parametresi ile public-key pub.key dosyasından okunur. public-key dosyası PEM formatındadır.

openssl rsa -inform PEM -pubin -in pub.key -text -noout
openssl pkey -inform PEM -pubin -in pub.key -text -noout

Bir sertifika kontrol etme:

openssl x509 -in server.crt -text -noout
openssl x509 -in server.cer -text -noout

Bir PKCS#12 dosyası (.pfx ya da .p12) kontrol etme:

Bu dosya türü sertifika veya public-key, private-key içerebilir. -in server.p12 parametresi ile server.p12 adlı dosyadan bilgi okunur.

openssl pkcs12 -info -in server.p12

Bir private-key’in bir sertifika ile eşleşiyor mu kontrol etme:

Bu komutlar .crt, .key ve .csr uzantılarında 3 dosya üzerinde işlem yapar ve modulus bileşenin MD5 hash (özet) bilgisini ekrana basar. Bu hash (özet) bilgileri karşılaştırılarak eşleşme kontrol edilebilir. Hash (özet) bilgisi aynı ile eşleşme var demektir.

openssl x509 -noout -modulus -in server.crt | openssl md5
openssl rsa -noout -modulus -in server.key | openssl md5
openssl req -noout -modulus -in server.csr | openssl md5

Ara sertifikalar dahil bütün sertifikaları görüntüle:

Bu komut ile -connect www.paypal.com:443 parametresinde belirtilen bir https sunucusuna bağlanılır ve sunucunun verdiği sertifika zinciri ekrana basılır.

openssl s_client -connect www.paypal.com:443

Bir DER dosyasını PEM dosyasına çevirme:

Bir DER dosyasını (.crt .cer .der) bir PEM dosyasına çevirme işlemi yapar.

openssl x509 -inform der -in server.cer -out server.pem

Bir PEM dosyasını DER dosyasına çevirme:

openssl x509 -outform der -in server.pem -out server.der

İçinde private-key ve sertifikaların bulunduğu bir PKCS#12 file (.pfx .p12) dosyasını PEM formatına çevirme

-in server.pfx parametresi ile server.pfx dosyasından pkcs12 formatında veri okunara server.pem dosyasına yazılır.

openssl pkcs12 -in server.pfx -out server.pem -nodes

Bir PEM formatında sertifika ve private-key’i PKCS#12 (.pfx .p12) formatına çevirme:

Bu komut ile PEM formatında ayrı ayrı dosyalarda depolanan server.crt sertifikası ve server.key private-key server.pfx dosyasına pkcs12 formatında konur. Bu işlem yapılırken bu sertifikanın kök sertifikasının CACert.crt olduğu belirtilir.

openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile CACert.crt

Bir Diffie Hellman anahtarı oluşturma:

openssl dhparam -out dhparam.pem 2048

rsautl aracı ile bir dosya şifreleme:

Bir plaintext.txt dosyası encrypted.txt dosyasına pubkey.pem public-key kullanılarak şifrelenir. Bunu çözmek için, şifreleme işlemi için kullanılan public-key ile eşleşen private-key kullanılır.

openssl rsautl -encrypt -in plaintext.txt -out encrypted.txt -pubin -inkey pubkey.pem

rsautl aracı ile bir dosya şifre çözme:

Önceden şifrelenen encrypted.txt dosyası privkey.pem private-key kullanılarak şifresi çözülür ve plaintext.txt dosyasına kaydedilir.

openssl rsautl -decrypt -in encrypted.txt -out plaintext.txt -inkey privkey.pem