Pem dosyası nedir ve diğer OpenSSL Tarafından Oluşturulan Anahtar Dosya Biçimlerinden farkı nedir?


1342

İki Debian sunucusunun bakımından sorumluyum. Ne zaman güvenlik sertifikaları ile bir şey yapmam gerekiyorsa, öğreticiler için Google’ı ve sonunda çalışana kadar yeniyorum.

Ancak, benim aramalarda ben genellikle farklı dosya biçimlerine rastlamak ( .key, .csr, .pem) ama her dosya biçimini amacı ne olduğuna dair iyi bir açıklama bulmak mümkün olmamıştım.

ServerFault'daki iyi insanların bu konuda biraz netlik sağlayıp sağlayamayacağını merak ediyordum.


Yanıtlar:


1654

SSL, konteyner formatları üzerinde mutabık kalınacağını düşündüğünüz süre boyunca buralarda. Ve haklısın, var. Olduğu gibi çok fazla standart. Yani bildiğim bu, ve başkalarının çalacağından eminim.

  • .csr - Bu bir Sertifika İmzalama İsteğidir . Bazı başvurular sertifika yetkililerine sunulmak üzere bunları oluşturabilir. Gerçek format, RFC 2986'da tanımlanan PKCS10'dur . İstenilen sertifikanın bazılarının / hepsinin, konu, organizasyon, devlet, ne olursa olsun, ve imzalanacak sertifikanın ortak anahtarı gibi bazı detaylarını içerir . Bunlar CA tarafından imzalanır ve bir sertifika döndürülür. Döndürülen sertifika, kendisinin birkaç biçimde olabileceği genel sertifikadır (genel anahtarı içerir, ancak özel anahtarı içermez).
  • .pem - 1421 - 1424 arasındaki RFC'lerde tanımlanmıştır , bu yalnızca genel sertifikayı (Apache kurulumları ve CA sertifikası dosyaları gibi /etc/ssl/certs) içerebilen veya genel anahtar, özel anahtar ve kök sertifikaları. Şaşırtıcı bir şekilde, PKCS10 formatı PEM'e çevrilebildiği için bir CSR'yi (örneğin burada kullanıldığı gibi) kodlayabilir. Bu ad, güvenli e-posta için başarısız bir yöntem olan ancak kullanılan kap biçimi olan Privacy Enhanced Mail'den (PEM) gelmektedir ve x509 ASN.1 anahtarlarının base64 çevirisidir.
  • .key - Bu, belirli bir sertifikanın sadece özel anahtarını içeren PEM formatlı bir dosyadır ve sadece standart bir isim değildir. Apache kurulumlarında bu sıklıkla bulunur /etc/ssl/private. Bu dosyalardaki haklar çok önemlidir ve bazı programlar yanlış yapılırsa bu sertifikaları yüklemeyi reddeder.
  • .pkcs12 .pfx .p12 - Başlangıçta Açık Anahtar Şifreleme Standartlarında (kısaltılmış PKCS) RSA tarafından tanımlanan "12" çeşidi, ilk olarak Microsoft tarafından geliştirilmiştir ve daha sonra RFC 7292 olarak gönderilmiştir . Bu, hem genel hem de özel sertifika çiftlerini içeren şifreli bir kap biçimidir. .Pem dosyalarının aksine, bu kapsayıcı tamamen şifrelenmiştir. Openssl bunu hem genel hem de özel anahtarlarla bir .pem dosyasına dönüştürebilir:openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

Zaman zaman ortaya çıkan birkaç başka format:

  • .der - ikilik sistemde ASN.1 sözdizimi kodlamak için bir yolu, bir .pem dosyası sadece bir Base64 .der dosyayı kodlanmış. OpenSSL bunları .pem ( openssl x509 -inform der -in to-convert.der -out converted.pem) dosyasına dönüştürebilir . Windows bunları Sertifika dosyaları olarak görür. Varsayılan olarak, Windows sertifikaları farklı bir uzantıya sahip .DER formatlı dosyalar olarak dışa aktarır. Sevmek...
  • .cert .cer .crt - Windows Gezgini tarafından .pem olmayan bir sertifika olarak tanınan, farklı bir uzantıya sahip .pem (veya nadiren .der) biçimlendirilmiş bir dosya.
  • .p7b .keystore - RFC 2315'te PKCS numarası 7 olarak tanımlanmıştır , bu, Windows tarafından sertifika değişimi için kullanılan bir formattır. Java bunları yerel olarak anlar ve .keystorebunun yerine çoğunlukla bir uzantı olarak kullanır. .Pem tarzı sertifikalardan farklı olarak, bu biçimin sertifika yolu sertifikalarını dahil etmek için tanımlanmış bir yolu vardır .
  • .crl - Bir sertifika iptal listesi. Sertifika Yetkilileri, sertifikaları sona ermeden önce sertifikaların yetkisizleştirilmesinin bir yolu olarak üretir. Bunları bazen CA web sitelerinden indirebilirsiniz.

Özetle, sertifikaları ve bileşenlerini sunmanın dört farklı yolu vardır:

  • PEM - Tercihen açık kaynaklı yazılım tarafından kullanılan RFC'ler tarafından yönetilmektedir. Çeşitli uzantılara sahip olabilir (.pem, .key, .cer, .cert, daha fazlası)
  • PKCS7 - Java tarafından kullanılan ve Windows tarafından desteklenen açık bir standart. Özel anahtar materyal içermez.
  • PKCS12 - Daha sonra düz metin PEM biçimine karşı gelişmiş güvenlik sağlayan bir RFC'de tanımlanmış bir Microsoft özel standardı. Bu özel anahtar materyal içerebilir. Tercihen Windows sistemleri tarafından kullanılır ve openssl kullanımıyla PEM formatına serbestçe dönüştürülebilir.
  • DER - PEM'in ana biçimi. Base64 kodlu PEM dosyasının ikili bir sürümü olarak düşünmek yararlıdır. Windows dışında rutin olarak kullanılmaz.

Umarım bu yardımcı olur.


297
Standartlarla ilgili en güzel şey, aralarından seçim yapabileceğiniz çok fazla şey olması ...
squillman

36
.crt .cert ve .cer için başka bir yaygın uzantıdır
David Pashley

44
PEM bir sertifikadan (yani ortak anahtar), özel bir anahtardan veya bir araya getirilmiş bir dosyadan oluşabilir. Dosya uzantısına çok fazla dikkat etmeyin; Privacy Enhanced Mail (Gizlilik Geliştirilmiş Posta) anlamına gelir, bu kullanım için fazla kullanılmadığını, ancak dosya biçiminin sıkıştığını gösterir.
Dan Carley

20
Çok yararlı bir cevap, ancak tarafından oluşturulan .pub formatını ele aldığınızı sanmıyorum ssh-keygen. Bunun diğerleriyle nasıl bağlantılı olduğunu bilmek faydalı olacaktır.
Jez

24
"Gizlilik Geliştirilmiş E-posta" nın fark edilmesine yardımcı olamaz, "PEM" yerine "PEE" kısaltmasını verir. RFC'ler "Privacy Enhanced Mail"
aidan

141

Kendi başına PEM bir sertifika değil, yalnızca verileri kodlamanın bir yoludur. X.509 sertifikaları, genellikle PEM kullanılarak kodlanan bir tür veridir.

PEM, ASN.1 DER (seçkin kodlama kuralları) kullanılarak kodlanan ve ardından AS64.1 kodunu kullanarak kodlanan ve daha sonra düz metin bağlantı satırları (BEGIN CERTIFICATE ve END CERTIFICATE arasında sıkışmış) Base64 kodlamasıyla çalışan bir X.509 sertifikasıdır (yapısı ASN.1 kullanılarak tanımlanmıştır). ).

PKCS # 7 veya PKCS # 12 gösterimlerini kullanarak aynı verileri temsil edebilirsiniz ve openssl komut satırı yardımcı programı bunu yapmak için kullanılabilir.

PEM'in belirgin yararları, bir e-posta iletisinin gövdesine yapıştırmanın güvenli olması, çünkü bağlantı hatları vardır ve 7 bitlik temizdir.

RFC1422 , PEM standardı hakkında, anahtarlar ve sertifikalarla ilgili daha fazla ayrıntıya sahiptir.


1
Bunu "openssl komut satırını kullanarak" nasıl yaparsınız?
Samik R

2
(.Crt .cer .der) PEM bir DER dosyayı dönüştürmek için: openssl x509 -inform der -in cert.cer -out cert.pem. DER bir PEM dosyası dönüştürmek için: openssl x509 -outform der -in cert.pem -out certi.der. PEM özel anahtarı ve sertifikayı içeren (.pfx .p12) PKCS # 12 dosya dönüştürmek için: openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes. Bir PEM sertifika dosyası ve PKCS # özel anahtarı dönüştürmek için 12 (.pfx .p12): openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crtGönderen burada
mpeac

54

Bazen bir .crtdosya zaten bir .pem. Bkz .: https://stackoverflow.com/questions/991758/openssl-pem-key


4
Gerçekten de, bugün bunu fark ettim. Rackspace loadbalancer'da bir PEM sertifikası girmek zorunda kaldım ve üretilen crt'nin bu formatta olup olmadığını merak ediyordum. Ama bu şekilde çalıştı, bu yüzden de benim sonucumdu.
Glenn Plas,

@GlennPlas adı veya uzantısı yerine dosyanın içeriği yerine odaklanır . .foobarÖnemli olan her şey için çağrılabilir ...
Patrick Mevzek
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.