.CER'yi Apache SSL sertifikaları için .CRT'ye dönüştürmem gerekir mi? Öyleyse nasıl?


121

SSL ile bir Apache 2 sunucusu kurmam gerekiyor.

* .Key dosyam var, ancak çevrimiçi olarak bulduğum tüm belgeler, * .crt dosyaları belirtildi ve CA'm bana yalnızca bir * .cer dosyası sağladı.

* .Cer dosyaları * .crt ile aynı mıdır? Değilse, CER'yi CRT formatına nasıl dönüştürebilirim?


11
CERve CRTuzantılar hiçbir şey ifade etmiyor. Farklı PKI satıcıları aynı şey için farklı uzantılar kullanır. Dosya ikili ise, muhtemelen ASN.1 / DER kodludur. Dosya insan tarafından okunabiliyorsa -----BEGIN CERTIFICATE-----, PEM kodlanmıştır. Neye sahipsiniz (DER veya PEM) ve neye ihtiyacınız var (DER veya PEM)?
jww

Yanıtlar:


107

Kriptografik sertifikalar için dosya uzantıları, beklediğiniz kadar standartlaştırılmamıştır. Windows varsayılan .crtolarak bir dosyayı çift ​​tıklatmayı sertifikayı Windows Kök Sertifika deposuna alma .ceristeği olarak kabul eder, ancak bir dosyayı yalnızca sertifikayı görüntülemek için bir istek olarak kabul eder . Bu nedenle, Windows'un her dosya türünü çift tıkladığınızda ne olacağı konusunda bazı doğal farklı anlamları olması açısından farklıdırlar.

Ancak, bunları çift tıkladığınızda Windows'un bunları işleme biçimi, ikisi arasındaki tek farkla ilgilidir. Her iki uzantı da bir genel sertifika içerdiğini gösterir. Gördüğüm herhangi bir sistem veya yapılandırma dosyasında bir uzantıyı diğerinin yerine kullanmak için bir sertifika dosyasını yeniden adlandırabilirsiniz. Ve Windows olmayan platformlarda (ve hatta Windows'ta), kullanıcılar hangi uzantıyı kullandıkları konusunda özellikle dikkatli değiller ve dosyanın içeriği doğru olduğu sürece aralarında bir fark olmadığı için ikisine de birbirinin yerine muamele ediyorlar.

İşleri daha kafa karıştırıcı hale getirmek, sertifika verilerini bir dosyada saklamanın iki standart yolu olmasıdır: Biri "ikili" X.509 kodlaması, diğeri ise genellikle " -----BEGIN CERTIFICATE-----" ile başlayan bir "metin" base64 kodlamasıdır . Bunlar aynı verileri ancak farklı şekillerde kodlar. Çoğu sistem her iki formatı da kabul eder, ancak gerekirse, openssl veya diğer araçlar aracılığıyla birini diğerine dönüştürebilirsiniz. Bir sertifika dosyasındaki kodlama, birinin dosyaya verdiği uzantıdan gerçekten bağımsızdır.


Anladığım kadarıyla ikisi de X.509 kodlaması. Aksini söylemiyorsunuz, ancak yukarıdaki x.509'un asimetrik kullanımı okuyucuya aksini önerebilir. Okuyucu için, sertifikaların bu 2 kodlama arasında ileri geri dönüştürülebileceğini belirtmekte fayda var, çünkü bu cevapta bahsedildiği gibi, aynı bilgiyi taşıyorlar. Openssl x509 -inform komutlarıyla diğer yanıta bakın.
FreeText

55

Belgelere göre mod_ssl :

SSLCertificateFile: 
   Name: SSLCertificateFile
   Description: Server PEM-encoded X.509 certificate file

Sertifika dosyası PEM kodlu X.509 Sertifika dosyası olmalıdır:

openssl x509 -inform DER -in certificate.cer -out certificate.pem

Bu , güvenilir kök sertifikalarımızı serseri kutuya yükleyerek ( ) üzerinde zscalerçalışırken ssl sertifika hatalarını çözecek mi? Onları yaptım , sonra dönüştürmenizi kullandım ve onları sembolik bağla bağladım ve yeniden yapılandırmadan önce içeriği dosyaya kopyaladım ve hala dev kutusunda bir hata alıyorum . vagrantwinvbox homesteadscp/etc/ssl/certsca-certificates.crtgoogle-recaptcha tls sslfile_get_contents
2017'yi

54

Temel olarak iki CER sertifikası kodlama türü vardır, DER ve Base64. DER tipi bir sertifika yükleme hatası döndürdüğünde (asn1 kodlama rutinleri), PEM'i deneyin ve çalışacaktır.

openssl x509 -inform DER -in certificate.cer -out certificate.crt

openssl x509 -inform PEM -in certificate.cer -out certificate.crt


3
DER formatı, düzenlemeye çalıştığımda cer dosyam ikili gibi göründüğünde benim için çalıştı ... teşekkürler!
Brad Parks

1
Okuyucu için openssl man sayfasını faydalı buldum. Komutlardan hangisinin ne yaptığı benim için muğlaktı (yani dönüştürme hangi yoldu). -İnform parametresi, sezgisel olan -in girdi dosyasının biçimini belirtir, ancak zaten kafanız biraz karıştıysa, açıkça bilmek güzel. Bkz openssl.org/docs/manmaster/man1/openssl-x509.html
FREETEXT

32

PKCS # 7 kodlu sertifika verilerini içeren bir .cer dosyanız olduğunu ve bunu PEM kodlu sertifika verilerine (tipik olarak bir .crt veya .pem dosyası) dönüştürmek istediğinizi varsayıyorum. Örneğin, PKCS # 7 kodlu verileri içeren bir .cer dosyası şuna benzer:

----- PKCS7 BAŞLAT -----
MIIW4gYJKoZIhvcNAQcCoIIW0zCCFs8CAQExADALBgkqhkiG9w0BBwGggha1MIIH
...
POI9n9cd2cNgQ4xYDiKWL2KjLB + 6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G
+ bKhADEA
----- PKCS7 SONU -----

PEM sertifika verileri şu şekildedir:

----- SERTİFİKAYA BAŞLA -----
MIIHNjCCBh6gAwIBAgIQAlBxtqKazsxUSR9QdWWxaDANBgkqhkiG9w0BAQUFADBm
...
nv72c / OV4nlyrvBLPoaS5JFUJvFUG8RfAEY =
----- SON SERTİFİKA -----

.Cer dosyalarını (PKCS # 7 verileriyle) karşılaşmayı beklediğiniz PEM verilerine ( BEGIN CERTIFICATEyukarıdaki örnekteki blok ) dönüştürecek bir OpenSSL komutu vardır . Sertfile.cer olarak adlandıracağımız bir dosya üzerinde PKCS # 7 verilerini PEM formatına zorlayabilirsiniz:

openssl pkcs7 -text -in certfile.cer -print_certs -outform PEM -out certfile.pem

Bir .cer veya .pem dosyasının bir veya daha fazla sertifika (muhtemelen sertifika zincirinin tamamı) içerebileceğini unutmayın.


1
Bu varsayımın bir kaynağına sahip olsaydınız kullanışlı olurdu. Bence insanlar (muhtemelen yanlış) .cer, .crt, .pem'i birbirinin yerine kullanıyorlar, bu yüzden bir doğruluk kaynağına sahip olmak yanlış anlamaları düzeltecektir.
PhilT

30

CER , DER kodlu ikili biçimde bir X.509 sertifikasıdır .
CRT , metin ( taban-64 ) kodlamasıyla kapsüllenmiş ikili bir X.509 sertifikasıdır .

Aynı kodlama değil.


13
Bu cevap çok yanlış. Hem .CER hem de .CRT, DER veya PEM (metin) kodlamasını kullanıyor olabilir. .Pem ve .der uzantıları kodlamayı yansıtırken .cer ve .crt uzantıları bunu yansıtmaz. Daha fazla ayrıntı .
eis

1
Aslında tam tersi olmalı . Ancak tüm bu uzantılar uzun süredir karıştırılıyor, bu yüzden onlara güvenmemelisiniz.
Claudio Floreani

16

Bir .cer dosyasını bir .crt dosyasına nasıl dönüştüreceğiniz sorusunun cevabı (bunlar farklı şekilde kodlanmıştır!):

openssl pkcs7 -print_certs -in certificate.cer -out certificate.crt

5
Bu benim için işe yaramadı! Kullandım:openssl x509 -inform der -in certificate.cer -out certificate.pem
sj59

Bu hata mesajını alıyorum:unable to load PKCS7 object
friederbluemle

@friederbluemle bu yanıtı kontrol ettiniz mi? serverfault.com/questions/417140/…
Alexander Presber

PositiveSSL sertifikamı Azure'da kullanım için PKCS12'ye dönüştürülmeye hazır hale getirmek için yapmam gereken şey buydu.
Owen

16

Şu komutu kullanıyorum:

openssl x509 -inform PEM -in certificate.cer -out certificate.crt

Ancak CER, DER kodlu ikili biçimde bir X.509 sertifikasıdır. CRT, metin (taban-64) kodlamasıyla kapsüllenmiş ikili bir X.509 sertifikasıdır.

Bu nedenle, belki kullanmalısınız:

openssl x509 -inform DER -in certificate.cer -out certificate.crt

Ve sonra sertifikanızı içe aktarmak için:

CA'nızı dizine kopyalayın:

/usr/local/share/ca-certificates/

Komutu kullanın:

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

CA deposunu güncelleyin:

sudo update-ca-certificates


5

Cer dosyanızın ikili biçimi varsa, onu şu şekilde dönüştürmelisiniz:

openssl x509 -inform DER -in YOUR_CERTIFICATE.cer -out YOUR_CERTIFICATE.crt

3

.Cer ve .crt dosyası, bir anahtar deposuna içe aktarıldığı sürece birbiriyle değiştirilebilir olmalıdır.

.Cer dosyasının içeriğine bir göz atın. Satırdan önce -----BEGIN CERTIFICATE-----ve sonra her şeyi silin -----END CERTIFICATE-----. BEGIN / END satırları arasında Base64 kodlu bir sürü şey kalacak.

-----BEGIN CERTIFICATE-----
MIIDQTCCAqqgAwIBAgIJALQea21f1bVjMA0GCSqGSIb3DQEBBQUAMIG1MQswCQYD
...
pfDACIDHTrwCk5OefMwArfEkSBo/
-----END CERTIFICATE-----

Ardından, anahtar aracını kullanarak onu anahtar dosyanıza aktarın.

keytool -import -alias myalias -keystore my.keystore -trustcacerts -file mycert.cer

Bana yardımcı olan şey BASE-64 KODLAMA yorumunuzdu. Normal bir sertifika, görünüşe göre özel kodlamadır ve düz metin okunabilir değildir. Teşekkürler.
DRapp

-2

Sadece yap

openssl x509 -req -days 365 -in server.cer -signkey server.key -out server.crt

8
Bu satırın tam olarak ne yaptığını ve bu parametreleri tam olarak neden kullandığınızı açıklamak ister misiniz? Bu cevap oldukça kısadır ve daha az deneyime sahip kişiler için anlaşılması zor olabilir.
GameDroids
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.