.Pem dosyasını .crt ve .key'ye dönüştürün


Yanıtlar:


500

Bunu kullanarak prt crt dönüştürmek mümkün:

openssl x509 -outform der -in your-cert.pem -out your-cert.crt

13
Metin editörü kullanmak en iyi yaklaşım değildir. Anahtarı PKCS8 biçiminde ayıklamak için: 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
Andron

131
Komutunu denedim ama:unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Damien Carol

15
anahtar komutu (openssl pkey -in mumble.pem -out mumble-key.pem) şunu verir: 129051320116880 anahtarı yüklenemiyor: hata: 0906D06C: PEM yordamları: PEM_read_bio: başlangıç ​​satırı yok: pem_lib.c: 703: Bekleniyor: ANY ÖZEL ANAHTAR
mylord

2
openssl rsa -in-cert.pem -outform pem -out your-key.pem
troyfolger

3
@ Hem pkey hem de rsa bana Expecting: ANY PRIVATE KEYhata veriyor .
Aero Wang

393

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
    

32
Yine de bu , (dışa aktarılan) ikili sertifikadan özel anahtarın nasıl alınacağı sorusuna cevap vermez .
bbaassssiiee

teşekkür ederim, özel anahtar ve sertifikalar içeren bir PEM'im olup olmadığını merak ediyorum, sadece sertifikaları nasıl alabilirim? Sertifika kısmını metin düzenleyicisini kullanarak kopyalayabileceğimi biliyorum, ancak herhangi bir openssl komutu olduğunu bilmek istiyorum, teşekkürler
workplaylifecycle

46

Anahtarı bir pem dosyasından ayıklamak için:

Anahtar çıkar

openssl pkey -in foo.pem -out foo.key

Anahtarı çıkartmanın başka bir yöntemi ...

openssl rsa -in foo.pem -out foo.key

CA Zinciri de dahil olmak üzere tüm sertifikaları çıkarın

openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert

Metinsel olarak ilk sertifikayı DER olarak çıkarın

openssl x509 -in foo.pem -outform DER -out first-cert.der

7
openssl x509 -outform der -in C: \ Kullanıcılar \ Greg \ .ssh \ e360_stork_listener.pem -out C: \ Kullanıcılar \ Greg \ .ssh \ e360_stork_listener.crt 4294956672: hata: 0906D06C: PEM yordamları yüklenemiyor: PEM_read_bio: başlangıç ​​çizgisi yok: pem_lib.c: 708: Bekleyen: GÜVENİLİR SERTİFİKA
user3217883

5

0. Önkoşul : openssl kurulmalıdır. Windows'ta, Git Bashyüklüyse, deneyin! Alternatif ikili dosyalar burada bulunabilir.

1. Özü .keygelen .pem:

openssl pkey -in cert.pem -out cert.key

2. Özü .crtden .pem:

openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt

1

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

0

Bu soruyu kullandığınız mkcertiçin sorduysanız, hile, .pemdosyanın sertifika ve -key.pemdosya anahtarı olmasıdır.

(Dönüştürmenize gerek yok, sadece çalıştırın mkcert yourdomain.dev otherdomain.dev)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.