web-gelistirme-sc.com

X.509 ve PKCS # 7 Sertifikası arasındaki fark nedir?

  1. Windows'da 'Şifreleme İleti Sözdizimi Standardı - PKCS # 7 Sertifikaları (.P7B)' - 'PKCS # 7 sertifikası' olarak kaydedilmiş .p7b dosya uzantısına sahip arama dosyasını düzeltir miyim? Yoksa daha iyi 'PKCS # 7 formatında kaydedilen X.509 sertifikası' mı?

  2. Ne zaman bir sertifika biçimi diğerine göre seçilir? Bu biçimlerin belirli güçlü ve zayıf yanları var mı?

  3. Bu soruyu ilk iki düzenlememden sonra ekliyoruz. PKCS # 7 formatı DER/PEM dosya formatlarına göre nasıl farklıdır?

Teşekkürler


Düzenleme # 1: Linux altında Firefox bana bazı web sitelerinin sertifikalarını şu şekilde dışa aktarma olanağı sunuyor:

  • X.509 Sertifikası (PEM)
  • X.509 Sertifikası (DER)
  • X.509 Sertifikası (PKCS # 7)

Bu PKCS # 7'nin sadece DER'e benzeyen ancak DER'den farklı bir ikili dosya formatı olduğu anlamına mı geliyor? True olursa, .p7b dosyası yalnızca PKCS # 7 biçiminde (PEM veya DER biçimlerinin aksine) kaydedilen bir X.509 sertifikasıdır.


Edit # 2: İlk düzenlememi takip et. Bu sayfa OpenSSL: Documents, pkcs7 , PKCS # 7'nin DER veya PEM'de şifrelenebileceğini göstermektedir. Bundan PKCS # 7'nin ayrı bir ikili dosya formatı olmadığını düşünüyorum. Şimdi tamamen kafam karıştı.


Edit # 3: Tamam, PEM ve DER formatları arasındaki ilişkiyi anladım. PEM dosyasının Base64 kodlu yükü aslında DER biçimindeki verilerdir. Bu nedenle başlangıçta X.509 sertifikası DER biçiminde kodlanır ve daha sonra isteğe bağlı olarak ortaya çıkan 'DER kodlu sertifikayı' 'PEM kodlu sertifikayı' kodlayabilirsiniz. Hala yapbozun PKCS # 7 parçasını takmakta zorlanıyorum.


Edit # 4: Başka bir bilgi parçası. PKCS # 7, birkaç X.509 sertifikasını DER biçiminde kodlamadan önce bir araya getirmeye izin veren bir kapsayıcı gibi görünüyor (bu, sertifikaları aynı dosyada birbiri ardına yapıştırarak bir araya getirebileceğiniz PEM biçiminden farklıdır) .

56
golem

Çoğunlukla sağa doğru evrildiniz, ancak birkaç nokta eklemek ve @CoverosGene'i genişletmek için cevap bir düzenlemede rahat hissetmekten daha fazlası:

X.509 ASN.1'de,tanımlanmış çeşitli kodlamaları olan (çok!) Bir genel veri yapılandırma yöntemi olan bir sertifikayı (ve burada ilgili olmayan bazı şeyleri) tanımlar. [~ # ~] der [~ # ~]Seçkin Kodlama Temsili oldukça yaygındır ve burada kullanılır.

PEM format - bir sertifikası yalnızca bir olan birkaç veri türü için - sadece kodlanmış ikili (DER) veriler dediğiniz kadar base64(değiştir)normalde her 64 karakterde bir satırlara bölünür (ancak varyasyonlar vardır), artı tire + BEGIN veya END + veri türünden oluşan başlık ve römork satırları, bu durumda CERTIFICATE + tire. Bu çizgiler bir insana gereksiz görünür, ancak yazılım tarafından beklenen ve çoğunlukla gereklidir. PEM (Gizliliği Artırılmış Posta) aslında şifreleme biçimi için çoğunlukla unutulan (aşağıya bakınız) hariç güvenli e-posta için tam bir standarttı.(değiştir)2015 itibarıyla RFC 7468 ayrıntılarıyla açıklayan çoğ modern kripto verileri için 'PEM' formatlarının kullanımı var.

PKCS # 7, RSA (algoritma değil şirket) tarafından şifrelenmiş ve/veya imzalanmış veriler için çok amaçlı bir format olarak tanımlanmıştır. IETF'ye çevrildi veCMS Şifreleme Mesajı Sözdizimiolarak RFC 26 , sonra RFC 3369 , sonra RFC) haline geldi 3852 , sonra RFC 5652 , dolayısıyla Windows (inetopt) İstemi ifadesi. "PKCS # 7" genellikle orijinal RSA PKCS # 7 ve IETF halefi CMS'yiher ikisi deanlamında kullanılır, aynı şekilde "SSL" hem orijinal Netscape protokolü hem de IETF halefi TLS Ulaştırma Seviyesi Güvenliği.

.P7b veya .p7cbiçimi, PKCS # 7/CMS'nin özel bir halidir: "içerik" ve sıfır SignerInfos içermeyen bir SignedData yapısı, ancak bir veya daha fazla sertifika (genellikle) ve/veya CRL'ler (nadiren). Bu,(düzenle)birzincirioluşturmak için gereken sertifika kümesini (sırayla değil) işlemek için standart bir yol sağladığında geri dönüş.

PKCS # 7/CMS de ASN.1'dir ve koşullara bağlı olarak DER veya BER olabilir. DER kod çözücülerin çoğunun üstesinden geldiği bazı küçük farklılıklar.

PKCS # 7/CMS herhangi bir DER veya BER nesnesi gibi can PEM formatlı olsa da, Openssl dışında bir uygulama görmedim (değiştir)certs için nadirdir. (Java CertificateFactory, PKCS7/CMS sertifikalarını yalnızca DER veya PEM'den okuyabilir, ancak CertPath.getEncoded bunu yalnızca DER'e yazar.) Buna karşılık tek bir sertifika için hem DER hem de PEM biçimleri yaygındır.

PKCS # 7/CMS,S/MIMEgüvenli e-posta (5751'den başlayan birden fazla rfcs) için de temel olarak kullanılır. Temel olarak PEM, PKCS # 7'yi ASCII 1980'lerin e-posta sistemlerinin kolayca işleyebileceği metne kodladı; S/MIME, CMS'yi birkaç şekilde modern olarak kodlanan MIME varlıkları olarak temsil ediyor e-posta sistemleri işleyebilir.

OpenSSLsırayla uygulayarak karışık konular: apkcs7komut tam PKCS # 7 değil sadece certs-CRLs durumda işleyen komut; acrl2pkcs7komutu aslında CRL'leri ve sertifikaları işliyor, ancak yine PKCS # 7'nin geri kalanını işlemiyor; şifreli ve/veya imzalı mesajların çoğu için hem S/MIME hem de PKCS # 7/CMS'yi işleyensmimekomutu; ve daha eksiksiz bir vakalar kümesi için hem S/MIME hem de PKCS # 7/CMS'yi işleyen bircmskomutu.

Bu yüzden seçenekleri şöyle tarif ederim: PEM veya DER formatında bir sertifika; bir PKCS # 7 konteynerinde veya sadece kısa p7 için (tek) bir sertifika ve PEM'den sadece nadir durumlarda geçerlidir; veya PKCS # 7 veya p7'de bir sertifika zinciri. Tek bir sertifika ve bir sertifika zinciri arasındaki anlamsal fark, en azından bir sertifika veya tek başına bir sertifika arasındaki format farkı kadar önemlidir.

Ve bu bile bir sertifikayı kendi başına (başka bir varlık için, çoğunlukla bir CA kökü veya çapası) ve kendi kanıtlamak için kullandığınız privatekey PLUS sertifikasının (veya genellikle zincirinin) kombinasyonu arasındaki yaygın karışıklığa bile ulaşmaz. SSL/TLS sunucusu olarak veya S/MIME e-postasını imzalarken kimlik. That, orijinal olarak Microsoft PFX Kişisel Bilgi Değişimi biçimini veya standart form PKCS # 12 veya "p12" yi kullanır.

60

PKCS # 7, DER veya PEM kodlu birden çok sertifikanın birlikte paketlenmesine izin veren bir biçim olarak düşünülebilir ve sertifikalar ve sertifika iptal listeleri (CRL'ler) içerebilir.

Başına RFC2315 , PKCS # 7

a general syntax for data that may have
cryptography applied to it, such as digital signatures and digital
envelopes. The syntax admits recursion, so that, for example, one
envelope can be nested inside another, or one party can sign some
previously enveloped digital data.
9
CoverosGene