Self signed certificate üretmek için kullanılabilecek araçlardan birisi de openssl req komutu. Açıklaması şöyle.
This option outputs a self signed certificate instead of a certificate request. This is typically used to generate a test certificate or a self signed root CA.
Üretilen sertifika x509 formatında. Bu sertifikanın içine bakmak için "openssl x509" komutu kullanılabilir.
Java'daki keytool İle Karşılaştırması
Java'daki keytool private key ve sertifikayı tek bir dosya içinde kolayca topluyor. Bu dosya java uygulamalarından rahatça kullanılıyor.
Ancak "openssl req" aracı iki tane farklı dosya üretiyor.
Komut Çıktısı
İki tane dosya çıktısı olur "cert.pem" ve "privatekey.pem". Bu dosyalara bezen ".crt" ve ".key" uzantıları da veriliyor. Bir tanesi sertifika, diğeri de private key dosyasıdır.Private key dosyasında modulus + public exponent + private exponent bilgisi vardır. Private key dosyasını incelemek için openssl rsa aracı kullanılabilir.
Pem Formatında Sertifikanın İçi
cert.pem şöyledir.
-----BEGIN CERTIFICATE-----...
-----END CERTIFICATE-----
Pem Formatında Private Key Dosyasının İçi
privatekey.pem şöyledir.-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,58E20DDB682C7B7A
...
-----END RSA PRIVATE KEY-----
Açıklaması şöyle
encoded and created in a Base-64 based PEM format which is not human-readable
Seçenekler
days :seçeneği ile sertifikanın kaç gün geçerli olacağı belirtilir.newkey :seçeneği ile kullanılacak algoritma belirtilir. Genellikle rsa:1024 , rsa:2048 , rsa:4096 seçilir.
sha256 : Sertifika içinde kullanılacak Signature Algorithm 'in ne olacağını belirtir. Bu parametre mecburi değildir. Basit bir açıklama şöyle
... the server sends a chain of certificates. Each certificate in the chain contains a public key, a name (a domain for the server, an organization name for a CA), some extra information, and a signature covering all that. The signature was created by the private key of the next certificate in the chain, and can be verified by that certificate's public key.
nodes : Açıklaması şöyle. Private key dosyasının şifrelenmemesini sağlar.
The option -nodes is not the English word "nodes", but rather is "no DES". When given as an argument, it means OpenSSL will not encrypt the private key in a PKCS#12 file.keyout :seçeneği ile private key dosyası belirtilir.
out : seçeneği ile sertifika dosyası belirtilir.
x509: openssl req ile CSR veya sertifika üretilebilir. Sertifika üreteceğimizi belirtir.
1. -new seçeneği
Burada sadece -new seçeneği belirtiliyor. -newkey belirtilmiyor yani kullanılacak algoritmayı seçmiyoruz.
Örnek
Şöyle yaparız
openssl req -nodes -new -x509 -keyout private.pem -out server.cert
Çıktı olarak şunu alırız
Generating a 2048 bit RSA private key..................................+++..................................................................+++writing new private key to 'private.pem'-----You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields, but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) []:USState or Province Name (full name) []:INLocality Name (eg, city) []:ZionsvilleOrganization Name (eg, company) []:JVCOrganizational Unit Name (eg, section) []:DevelopmentCommon Name (eg, fully qualified host name) []:Planning PokerEmail Address []:<my-email-address-was-entered-here>
2. -newkey seçeneği
Kullanılacak algoritmayı seçiyoruz
Örnek - rsa:4096
Şöyle yaparızopenssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out
MyCertificate.crt -keyout MyKey.key
Örnek rsa:2048Şöyle yaparız.
openssl req -x509 -nodes -days 1825 -newkey rsa:2048 \
-keyout private/vsftpd.key \
-out certs/vsftpd.crt
Örnek - rsa:2048Şöyle yaparız.
openssl req -x509 -newkey rsa:2048 -keyout privatekey.pem -out cert.pem -days XXX
Örnek - rsa:2048
Şöyle yaparız.
Örnek - rsa:1024
openssl req -x509 -newkey rsa:2048 -keyout privatekey.pem -out cert.pem -days 30
Örnek - rsa:2048
Şöyle yaparız
openssl req -x509 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' \-keyout localhost-privatekey.pem -out localhost-certificate.pem
Host ismi vermek için şöyle yaparız.
openssl req -x509 -newkey rsa:1024 -keyout privatekey.pem -out cert.pem -days 999
-subj "/CN=localhost"
3. -keyout seçeneği
Örnek
Şöyle yaparız
openssl req -new \ -newkey rsa:4096 \ # Kullanılacak algoritma -nodes \ # Private key dosyasını şifreleme -x509 \ # Self signed sertifika üret -days 3650 \ # 10 yıl geçerli olsun -keyout self_signed.key \ #Private key dosyası -out self_signed.pem \ # Sertifika dosyası -subj '/CN=TestCertificate/C=US/ST=CA/L=SF/O=Test' # Sertifikaya girdi
4. -key seçeneği
Örnek
Örnek
Normalde private key vermeye gerek yoktur. Eğer kendimiz vermek istersek şöyle yaparız
# Generate private key openssl genrsa -des3 -out myCA.key 2048 # Generate root certificate openssl req -x509 -new -nodes -key myCA.key -sha256 -days 825 -out myCA.pem # Convert to Botan Format openssl pkcs8 -topk8 -in myCA.key > myCAKey.pkcs8.pem
Hiç yorum yok:
Yorum Gönder