Birisi bana sertifika .crt
ve özel anahtar .key
dosyalarını bir .pem
dosyadan ayıklamak / dönüştürmek için doğru yolu / komutu söyleyebilir ? Sadece değiştirilebilir olduklarını okudum, ama nasıl değil.
Birisi bana sertifika .crt
ve özel anahtar .key
dosyalarını bir .pem
dosyadan ayıklamak / dönüştürmek için doğru yolu / komutu söyleyebilir ? Sadece değiştirilebilir olduklarını okudum, ama nasıl değil.
Yanıtlar:
Bunu kullanarak prt crt dönüştürmek mümkün:
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
openssl pkey -in mumble.pem -out mumble-key.pem
OpenSSL sürümü 1.0.0'dan daha eskiyse, anahtarı RSA anahtarı olarak ayıklamak için:openssl rsa -in mumble.pem -out mumble-key.pem
unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Expecting: ANY PRIVATE KEY
hata veriyor .
OpenSSL Kullanarak Dönüştürme
Bu komutlar, sertifikaları ve anahtarları belirli sunucu veya yazılım türleriyle uyumlu hale getirmek için farklı biçimlere dönüştürmenize olanak tanır.
Bir DER dosyasını (.crt .cer .der) PEM'e dönüştürme
openssl x509 -inform der -in certificate.cer -out certificate.pem
PEM dosyasını DER'e dönüştürme
openssl x509 -outform der -in certificate.pem -out certificate.der
Özel anahtar ve sertifikalar içeren bir PKCS # 12 dosyasını (.pfx .p12) PEM'e dönüştürme
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
PEM sertifika dosyasını ve özel anahtarı PKCS # 12'ye (.pfx .p12) dönüştürme
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
PEM'i CRT'ye dönüştürün (.CRT dosyası)
openssl x509 -outform der -in certificate.pem -out certificate.crt
OpenSSL Convert PEM
PEM birimini DER birimine dönüştür
openssl x509 -outform der -in certificate.pem -out certificate.der
PEM birimini P7B birimine dönüştür
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
PEM'i PFX'e Dönüştür
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
OpenSSL Dönüştürme DER
DER'i PEM birimine dönüştür
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL Convert P7B
P7B birimini PEM birimine dönüştür
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
P7B birimini PFX birimine dönüştür
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
OpenSSL Dönüştürme PFX
PFX'i PEM birimine dönüştür
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
OpenSSL ile rsa anahtarları oluşturma
Öncelikle genel ve özel bir anahtar oluşturmanız gereken komut satırında OpenSSL kullanarak, -passout bağımsız değişkenini kullanarak bu dosyayı parola korumalı yapmanız gerekir, bu bağımsız değişkenin alabileceği birçok farklı form vardır, bu nedenle OpenSSL belgelerine bakın.
openssl genrsa -out private.pem 1024
Bu, 1024 bit kullanan private.pem adlı bir anahtar dosyası oluşturur. Bu dosya aslında hem özel hem de genel anahtarlara sahiptir, bu nedenle genel olanı bu dosyadan ayıklamanız gerekir:
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
or
openssl rsa -in private.pem -pubout > public.pem
or
openssl rsa -in private.pem -pubout -out public.pem
Artık yalnızca genel anahtarınızı içeren public.pem'e sahip olacaksınız, bunu 3. taraflarla özgürce paylaşabilirsiniz. Sadece genel anahtarınızı kullanarak kendiniz bir şey şifreleyerek ve sonra özel anahtarınızı kullanarak şifresini çözerek hepsini test edebilirsiniz, önce şifrelemek için biraz veriye ihtiyacımız var:
Örnek dosya:
echo 'too many secrets' > file.txt
Artık file.txt dosyasında bazı verileriniz var, bunu OpenSSL ve ortak anahtar kullanarak şifreleyelim:
openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
Bu, file.ssl adını veren şifreli bir file.txt sürümü oluşturur, bu dosyaya bakarsanız, sadece ikili önemsizdir, herkes için çok yararlı bir şey değildir. Artık özel anahtarı kullanarak şifresini kaldırabilirsiniz:
openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
Şimdi decrypted.txt dosyasında şifrelenmemiş bir dosyanız olacak:
cat decrypted.txt
|output -> too many secrets
OpenSSL'deki RSA ARAÇLARI Seçenekleri
ADI
rsa - RSA anahtar işleme aracı
ÖZET
openssl rsa [-help] [-inform PEM | NET | DER] [-out PEM | NET | DER] [-in dosyaadı] [-passin arg] [-çıkış adı] [-passout arg] [-aes128] [- aes192] ( [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-motor kimliği]
AÇIKLAMA
Rsa komutu RSA anahtarlarını işler. Çeşitli formlar ve basılan bileşenleri arasında dönüştürülebilirler. Bu komutun özel anahtar şifrelemesi için geleneksel SSLeay uyumlu biçimi kullandığını unutmayın: yeni uygulamalar pkcs8 yardımcı programını kullanarak daha güvenli PKCS # 8 biçimini kullanmalıdır.
KOMUT SEÇENEKLERİ
-help
Bir kullanım mesajı yazdırın.
-inform DER|NET|PEM
Bu, giriş biçimini belirtir. DER seçeneği, PKCS # 1 RSAPrivateKey veya SubjectPublicKeyInfo biçimiyle uyumlu bir ASN1 DER kodlu form kullanır. PEM formu varsayılan biçimdir: ek üstbilgi ve altbilgi satırlarıyla kodlanmış DER biçimindeki base64 öğesinden oluşur. Giriş PKCS # 8 formatında özel anahtarlar da kabul edilir. NET formu NOTLAR bölümünde açıklanan bir formattır.
-outform DER|NET|PEM
Bu çıktı biçimini belirtir, seçenekler -inform seçeneğiyle aynı anlama gelir.
-in filename
Bu seçenek, bir anahtarın okunacağı girdi dosya adını veya bu seçenek belirtilmezse standart girdi belirtir. Anahtar şifrelenirse, bir parola istenir.
-passin arg
giriş dosyası şifre kaynağı. Arg biçimi hakkında daha fazla bilgi için openssl'deki PASS PHRASE ARGUMENTS bölümüne bakın.
-out filename
Bu, bir anahtarın yazılacağı çıktı dosya adını veya bu seçenek belirtilmezse standart çıktıyı belirtir. Herhangi bir şifreleme seçeneği ayarlanmışsa, parola istenir. Çıktı dosya adı, giriş dosya adıyla aynı olmamalıdır.
-passout password
çıktı dosyası şifre kaynağı. Arg biçimi hakkında daha fazla bilgi için openssl'deki PASS PHRASE ARGUMENTS bölümüne bakın.
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
Bu seçenekler, çıkıştan önce özel anahtarı belirtilen şifre ile şifreler. Bir geçiş ifadesi istenir. Bu seçeneklerin hiçbiri belirtilmezse, anahtar düz metin olarak yazılır. Bu, şifreleme seçeneği olmayan şifreli bir anahtarda okumak için rsa yardımcı programının kullanılması, bir anahtardan geçiş deyimini kaldırmak için kullanılabileceği veya şifreleme seçeneklerini ayarlayarak geçiş deyimini eklemek veya değiştirmek için kullanılabilir. Bu seçenekler yalnızca PEM biçimindeki çıktı dosyalarıyla kullanılabilir.
-text
kodlanmış sürüme ek olarak çeşitli genel veya özel anahtar bileşenlerini düz metin olarak yazdırır.
-noout
bu seçenek anahtarın kodlanmış sürümünün çıkışını önler.
-modulus
bu seçenek anahtar modülünün değerini yazdırır.
-check
bu seçenek bir RSA özel anahtarının tutarlılığını kontrol eder.
-pubin
varsayılan olarak giriş dosyasından özel bir anahtar okunur: bu seçenekle bunun yerine ortak bir anahtar okunur.
-pubout
varsayılan olarak özel bir anahtar verilir: bu seçenekle bunun yerine ortak bir anahtar verilir. Giriş bir ortak anahtarsa bu seçenek otomatik olarak ayarlanır.
-RSAPublicKey_in, -RSAPublicKey_out
RSAPublicKey biçimi dışında -pubin ve -pubout gibi kullanılır.
-engine id
bir motorun (benzersiz id dizgisiyle) belirtilmesi, rsa'nın belirtilen motora işlevsel bir referans almayı denemesine neden olur, böylece gerekirse onu başlatır. Ardından motor, mevcut tüm algoritmalar için varsayılan olarak ayarlanacaktır.
NOTLAR
PEM özel anahtar biçimi üstbilgi ve altbilgi satırlarını kullanır:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
PEM ortak anahtar biçimi üstbilgi ve altbilgi satırlarını kullanır:
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
PEM RSAPublicKey biçimi üstbilgi ve altbilgi satırlarını kullanır:
-----BEGIN RSA PUBLIC KEY-----
-----END RSA PUBLIC KEY-----
NET formu, eski Netscape sunucuları ve Microsoft IIS .key dosyalarıyla uyumlu bir biçimdir, şifrelemesi için tuzsuz RC4 kullanır. Çok güvenli değildir ve bu nedenle sadece gerektiğinde kullanılmalıdır.
IIS'nin bazı yeni sürümlerinde dışa aktarılan .key dosyalarında ek veriler bulunur. Bunları yardımcı programla kullanmak için dosyayı bir ikili düzenleyiciyle görüntüleyin ve "private-key" dizesini arayın, ardından 0x30, 0x82 bayt dizisine kadar izleyin (bu bir ASN1 SEQUENCE). Bu noktadan sonraki tüm verileri başka bir dosyaya kopyalayın ve bunu -inform NET seçeneğiyle rsa yardımcı programına girdi olarak kullanın.
ÖRNEKLER
RSA özel anahtarındaki geçiş deyimini kaldırmak için:
openssl rsa -in key.pem -out keyout.pem
Özel bir anahtarı üçlü DES kullanarak şifrelemek için:
openssl rsa -in key.pem -des3 -out keyout.pem
Özel bir anahtarı PEM'den DER biçimine dönüştürmek için:
openssl rsa -in key.pem -outform DER -out keyout.der
Özel anahtarın bileşenlerini standart çıktıya yazdırmak için:
openssl rsa -in key.pem -text -noout
Özel bir anahtarın herkese açık kısmını çıkarmak için:
openssl rsa -in key.pem -pubout -out pubkey.pem
Özel anahtarın ortak kısmını RSAPublicKey biçiminde çıktılar:
openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
Anahtarı bir pem dosyasından ayıklamak için:
openssl pkey -in foo.pem -out foo.key
Anahtarı çıkartmanın başka bir yöntemi ...
openssl rsa -in foo.pem -out foo.key
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
openssl x509 -in foo.pem -outform DER -out first-cert.der
0. Önkoşul : openssl
kurulmalıdır. Windows'ta, Git Bash
yüklüyse, deneyin! Alternatif ikili dosyalar burada bulunabilir.
1. Özü .key
gelen .pem
:
openssl pkey -in cert.pem -out cert.key
2. Özü .crt
den .pem
:
openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
Bir .crt sertifikayı .. pem formatında saklar. Bir .pem, aynı zamanda bir csr (Sertifika imzalama isteği), özel bir anahtar, bir ortak anahtar veya diğer sertifikalar gibi başka şeylere sahip olsa da, sadece bir sertifikayı saklarken, .crt ile aynı şeydir.
Bir pem, her bölüm arasında bir üstbilgi ve bir altbilgi bulunan temel 64 kodlu bir dosyadır.
Belirli bir bölümü ayıklamak için aşağıdakine benzer bir perl betiği tamamen geçerlidir, ancak bazı openssl komutlarını kullanmaktan çekinmeyin.
perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem
burada == 1 istediğiniz bölüme değiştirilebilir. Açıkçası tam olarak ihtiyacınız olan üstbilgi ve altbilgiyi biliyorsanız ve dosyadakilerden yalnızca biri varsa (genellikle sadece sertifikayı ve anahtarı orada tutarsanız), basitleştirebilirsiniz:
perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem