Soru Pem dosyası nedir ve diğer OpenSSL Tarafından Oluşturulan Anahtar Dosya Biçimleri'nden nasıl farklıdır?


İki Debian sunucusunu sürdürmekten sorumluyum. Her defasında güvenlik sertifikalarıyla ilgili bir şey yapmalıyım, dersler için Google'ım ve nihayet işe yaramaya başlayana kadar yendim.

Ancak, aramalarımda sıklıkla farklı dosya biçimleriyle karşılaşıyorum (.key, .csr, .pem) Ama her dosya formatının amacının ne olduğuna dair iyi bir açıklama bulamadım.

ServerFault'daki iyi milletlerin bu konuda bir miktar açıklama yapıp yapamayacağını merak ediyordum?


1179
2018-05-19 02:24


Menşei


stackoverflow.com/a/45886431/1599699 - Andrew


Cevaplar:


SSL yeterince uzun zamandır var olmuştur, konteyner formatları üzerinde anlaşmaya varılacağını düşünürdünüz. Ve haklısın, var. Olduğu kadar çok standart var. Yani, bildiğim şey bu, ve eminim ki diğerleri diğerlerinin içinde olacak.

  • .csr - Bu bir Sertifika İmzalama İsteği. Bazı uygulamalar sertifika yetkililerine sunulmak için bunları üretebilir. Gerçek format, içinde tanımlanmış olan PKCS10'dur. RFC 2986. İstenen sertifikanın konu, organizasyon, devlet, neyin yanı sıra Genel anahtar sertifikanın imzalanması. Bunlar CA tarafından imzalanır ve bir sertifika iade edilir. İade sertifikası halka sertifika (kendi özel anahtarını içerir, ancak özel anahtarı içermez), kendisinin bir çift biçiminde olabilmesi.
  • .pem - RFC'lerde tanımlı 1421 vasitasiyla 1424Bu, yalnızca kamu sertifikasını (Apache yüklemeleri ve CA sertifika dosyaları gibi) içerebilen bir kapsayıcı biçimidir /etc/ssl/certs) veya ortak anahtar, özel anahtar ve kök sertifikaları dahil olmak üzere tüm sertifika zincirini içerebilir. Kafa karıştırıcı bir şekilde, bir CSR'yi (örneğin, kullanıldığı şekliyle) kodlayabilir. İşte) PKCS10 formatı PEM'e çevrilebilir. Adı Gizlilik Gelişmiş Posta (PEM)Güvenli e-posta için başarısız bir yöntemdi, ancak kullandığı kap biçimi üzerinde yaşıyor ve x509 ASN.1 anahtarlarının bir base64 çevirisi.
  • .key - Bu, belirli bir sertifikanın sadece özel anahtarını içeren ve yalnızca geleneksel bir ad olan ve standartlaştırılmış olmayan bir PEM formatlı dosyadır. Apache yüklemelerinde, bu sık sık /etc/ssl/private. Bu dosyalardaki haklar çok önemlidir ve bazı programlar yanlış ayarlanmışsa bu sertifikaları yüklemeyi reddeder.
  • .pkcs12 .pfx .p12 - Başlangıçta RSA tarafından tanımlanmış Genel Anahtar Şifreleme Standartları (kısaltılmış PKCS), "12" varyantı başlangıçta Microsoft tarafından geliştirilmiştir ve daha sonra RFC 7292. Bu, hem genel hem de özel sertifika çiftlerini içeren parolalı bir kap biçimidir. .Pem dosyalarından farklı olarak, bu kapsayıcı tamamen şifrelenir. Openssl bunu hem genel hem de özel anahtarlı bir .pem dosyasına dönüştürebilir: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes 

Zaman zaman ortaya çıkan diğer birkaç biçim:

  • .der - ASN.1 sözdizimini ikili olarak kodlamanın bir yolu, bir .pem dosyası sadece Base64 kodlu bir .der dosyasıdır. OpenSSL, bunları .pem'e dönüştürebiliropenssl x509 -inform der -in to-convert.der -out converted.pem). Windows bunları Sertifika dosyaları olarak görür. Varsayılan olarak, Windows sertifikaları .DER biçimli dosyalar olarak farklı bir uzantıyla dışa aktarır. Sevmek...
  • .cert .cer .crt - Farklı bir uzantıya sahip bir .pem (veya nadiren .der) biçimlendirilmiş bir dosya, bir sertifika olarak Windows Gezgini tarafından tanınan .pem değil.
  • .p7b .keystore - Tanımlanmış RFC 2315 PKCS numarası 7 olarak, bu sertifika değişimi için Windows tarafından kullanılan bir biçimdir. Java bunları doğal olarak anlar ve sıklıkla kullanır .keystore bunun yerine bir uzantı olarak. .Pem stil sertifikalarından farklı olarak, bu biçim tanımlanmış sertifika yolu sertifikalarını dahil etme yolu.
  • .crl - Sertifika iptal listesi. Sertifika Yetkilileri, sertifikaları sona ermeden önce yetkilendirmenin bir yolu olarak üretirler. Bunları bazen CA web sitelerinden indirebilirsiniz.

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

  • PEM - RFC'ler tarafından yönetilir, tercihen açık kaynaklı yazılımlar tarafından kullanılır. Ç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 standarttır. Özel anahtar malzeme içermez.
  • PKCS12 - Daha sonra RFC'de düz metin PEM biçimine karşı geliştirilmiş güvenlik sağlayan bir Microsoft özel standardı. Bu özel anahtar malzeme içerebilir. Tercihen Windows sistemleri tarafından kullanılır ve openssl kullanımıyla serbestçe PEM formatına dönüştürülebilir.
  • DER - PEM'in ana formatı. Base64 kodlu PEM dosyasının bir ikili versiyonu olarak düşünmek faydalıdır. Windows dışında rutin olarak çok fazla kullanılmaz.

Umarım bu yardımcı olur.


1456
2018-05-19 02:49



Standartlar hakkında en iyi şey, seçim yapabileceğiniz çok şey var ... - squillman
.crt .cert ve .cer için başka bir yaygın eklentidir - David Pashley
PEM, bir sertifika (genel anahtar), özel bir anahtar veya her ikisi de birlikte birleştirilmiş bir dosya biçimidir. Dosya uzantısına çok fazla önem vermeyin; Bu Gizlilik Geliştirilmiş Posta, çok kullanım görmediği bir kullanım ama dosya biçimi etrafında sıkışmış anlamına gelir. - Dan Carley
Çok yararlı bir yanıt, ancak bunun tarafından oluşturulan .pub biçimini kapsamaz. ssh-keygen. Geri kalanıyla nasıl bağlandığını bilmek faydalı olacaktır. - Jez
"Gizlilik Geliştirilmiş E-posta" mesajının "PEM" in tersine "PEE" kısaltmasını fark etmesine yardımcı olamıyorum. RFC'ler "Gizlilik Gelişmiş Posta" ifadesini kullanma eğilimindedir - aidan


PEM kendi başına bir sertifika değildir, sadece veriyi kodlamanın bir yoludur. X.509 sertifikaları, PEM kullanılarak yaygın olarak kodlanmış bir veri türüdür.

PEM, ASN.1 DER (ayırt edici kodlama kuralları) kullanılarak kodlanmış bir X.509 sertifikası olup, daha sonra Base64 kodlaması ile çalıştırılır ve düz metin çapa çizgileri arasında sıkışır (BEGIN SERTİFİKASI ve END SERTİFİKASI ).

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

PEM'in belirgin faydaları, bir e-posta mesajının gövdesine yapıştırmanın güvenli olması ve bağlantı hatlarına sahip olması ve 7-bit temiz olmasıdır.

RFC1422, anahtarlar ve sertifikalarla ilgili PEM standardı hakkında daha fazla bilgi içerir.


124
2018-06-06 15:19



Bunu "openssl komut satırını kullanarak" nasıl yapıyorsunuz? - Samik R
DER dosyasını (.crt .cer .der) PEM'e dönüştürmek için: openssl x509 -inform der -in cert.cer -out cert.pem. PEM dosyasını DER'ye dönüştürmek için: openssl x509 -outform der -in cert.pem -out certi.der. Özel anahtar ve sertifika içeren PKCS # 12 dosyasını (.pfx .p12) PEM'e dönüştürmek için: openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes. PEM sertifika dosyasını ve özel anahtarı PKCS # 12'ye (.pfx .p12) dönüştürmek için: openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crt itibaren İşte - mpeac


Bazen bir .crt dosya zaten bir .pem. Görmek: https://stackoverflow.com/questions/991758/openssl-pem-key


51
2018-03-15 00:24



Gerçekten doğru, bugün bunu fark ettim. Rackspace yükleyicide bir PEM sertifikası girmem gerekiyordu ve oluşturulan crt'in bu formatta olup olmadığını merak ediyordum. Ama böyle çalıştı, bu benim de bir sonucumdu, bunların çoğu .crt'ın göründüğü PEM formatında geldi. - Glenn Plas