SSL Hatası - dosyadan sunucu sertifikası okunamıyor


37

Bugün etki alanım için SSL kurdum ve başka bir sorun daha var - Birinin ışık tutabileceğini umuyordum.

Aşağıdaki hata mesajlarını almaya devam ediyorum:

[error] Init: Sunucu sertifikası /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt dosyasından okunamıyor
[error] SSL Kitaplığı Hatası: 218529960 hatası: 0D0680A8: asn1 kodlama yordamları: ASN1_CHECK_TLEN: wrong tag
[error] SSL Kitaplığı Hatası: 218595386 hatası: 0D07803A: asn1 kodlama yordamları: ASN1_ITEM_EX_D2I: iç içe asn1 hatası

Apache 2.2.16 ve Ubuntu 10.10 kullanıyorum. .Crt dosyamda Begin ve End etiketleri var ve aldığım onay e-postasından tam olarak kopyalandı, çok sinir bozucu!

Şerefe!

Düzen >> .crt doğrulamak için çalışırken Çalışıyor gibi görünmüyor:

>> openssl x509 -çoğu -text -in domain.com.crt 
sertifika yüklenemedi
16851: hata: 0906D06C: PEM yordamları: PEM_read_bio: başlangıç ​​satırı yok: pem_lib.c: 650: Bekleniyor: GÜVENİLİR BELGESİ

Ayrıca >>

>> openssl x509 -text - bilgi PEM - domain.crt
sertifika yüklenemedi
21321: hata: 0906D06C: PEM yordamları: PEM_read_bio: başlangıç ​​satırı yok: pem_lib.c: 650: Bekleniyor: GÜVENİLİR BELGESİ
>> openssl x509 -text - bilgi için DER - etki alanı.com
sertifika yüklenemedi
21325: hata: 0D0680A8: asn1 kodlama yordamları: ASN1_CHECK_TLEN: yanlış etiket: tasn_dec.c: 1316:
21325: hata: 0D07803A: asn1 kodlama yordamları: ASN1_ITEM_EX_D2I: iç içe asn1 hatası: tasn_dec.c: 380: Type = X509

Düzenle >> (Bu arada yardımın şerefine)

>> grep '^ -----' domain.com.crt
----- BELGELENDİRME BELGESİ -----
----- SON BELGELERİMİZ -----

Sertifikayı veren firmaya yeni e-posta gönderdim, yanıt verdiler>

Sağladığınız CSR dosyasını kontrol ettim ve bunun doğru bir şekilde oluşturulduğundan emin olabilirim. Şu anda karşılaştığınız hata, CSR'yi yüklemek için yanlış bir komut satırı kullandığınızdan kaynaklanıyor. Bu domain.com.crt dosyasını komut satırınızdan alan adınıza göre değiştirmelisiniz.

  • Şu anda crt mysite.com.crt için ayarlanmış - Örnek olarak domain.com.crt kullandım

Lütfen bize çıktısını gösterebilir misiniz grep '^-----' domain.com.crt?
kuantumların

Williamsowen, bir sertifikanın esas amacı web sunucunuza bağlanan kişilere gösterilecek; bu özel bir şey değil. Bu, verilen tüm sertifikayı buraya eklemeyi ya da göndermeyi düşünür müsün böylece tahmin etmek yerine doğrudan bakabiliriz.
MadHatter,

Bekle, az önce cevabımı kabul ettiğini gördüm. Bu, soruna neden olan terminal Windows hatları olduğu anlamına mı geliyor?
MadHatter,

MadHatter - özür dilerim! Bunun için yeni, ancak daha yeni çalışmaya başladım, aldığım e-postadaki biçimlendirme kapalıydı, size yeterince teşekkür edemedim!
williamsowen

Yanıtlar:


49

Satırların ^ M sonlandırılması mümkün mü? Bu, dosyaları Windows'tan UNIX sistemlerine taşırken olası bir sorundur. Kontrol etmenin kolay bir yolu vi, "bana ikiliyi göster" modunda kullanmaktır vi -b /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt.

Her satır bir control-M ile bitiyorsa, bunun gibi

-----BEGIN CERTIFICATE-----^M
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg^M
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x^M

Windows sonlandırılmış biçimde bir dosyanız var ve apache bunları sevmiyor.

Seçenekleriniz arasında dosyayı tekrar taşımak, daha fazla özen göstermek; veya dos2unixbunları çıkarmak için komutu kullanmak ; Dikkatli olursanız, vi'nin içine de çıkarabilirsiniz.


Düzenleme : bu cevabın artık 2019'da geçerli olmadığını belirten @ dave_thompson_085 sayesinde. Apache / OpenSSL artık ^ M sonlandırmalı satırlara toleranslıdır, bu yüzden sorunlara neden olmazlar. Bununla birlikte, yorumlarında birkaç farklı örneği bulunan diğer biçimlendirme hataları yine de sorunlara neden olabilir; Sertifika sistemler arasında taşındıysa, bunları dikkatlice kontrol edin.


Benim için başlığın ilk iki karakterini göz ardı etmek bir kopyala ve yapıştır hatasıydı -----BE... İlhamınızı kontrol ettiğiniz için teşekkürler!
cfi

Teşekkürler, bu benim sorunumdu! Notepad ++ pencerelerinde doğru LF biçimini ayarlamak için EDIT-EOL dönüşüm iletişim kutusunu kullanabilirsiniz. Pencereleri CR LF satır sonlarını görmek için Sembolü Göster menüsünü kullanabilirsiniz.
Bjørn

1
Sertifikam boş bir dosya olmuştu. Jenerasyonda bir şey kırıldı sanırım. Bu cevap beni açmaya ve bunu görmeye teşvik etti.
flickerfly

Windows kullanıcıları için not: Büyük olasılıkla Windows'ta olsanız bile, hat formatını UNIX'e dönüştürmeniz gerekecektir. DOS2UNIX bir Windows komutu değil, bir Linux komutudur. İyi haber, Git for Windows sağlar. CigWin de muhtemelen öyle, ama bundan emin değil.
Ignacio Segura

Windows kullanıcıları için not: Windows Explorer'ın Özellikler / Güvenlik sekmesindeki izinlerin bir listesi, Cygwin'in cp ile bir ağ paylaşımından kısıtlı izinler dosyası kopyalandıktan sonra dağıldı. Örneğin, bir "NUL SID", engelli bir Herkes ve etki alanı kullanıcıları girişi gördüm.
eel ghEEz

19

Sertifika İmzalama İsteğini (CSR) okumaya çalışırken bu sayfaya benzer bir hatayla ulaşan herkes için (OP'nin bir sertifika okuduğunu unutmayın): Doğru OpenSSL komutunu kullandığınızdan emin olun. x509sertifikalar içindir ve reqCSR'ler içindir:

openssl req -in server.csr -text -noout

vs

openssl x509 -in server.crt -text -noout

17

Sadece bu çevrelerin etrafında dolanıp dolaştı, ve sertifikaları yanlış yoldan aldım - örneğin

SSLCertificateFile    /etc/apache2/ssl/server.key
SSLCertificateKeyFile /etc/apache2/ssl/server.crt

onun yerine:

SSLCertificateFile    /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Bu hatayı alıp almadığınızı kontrol etmek için bir şey.


11
>> openssl x509 -noout -text -in domain.com.crt 
unable to load certificate
16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE

Sertifikanın formatıyla ilgili bir problemin olduğundan şüpheleniyorum.

Aşağıdaki iki komutu da çalıştırın ve bize çıktıyı verin:

openssl x509 -text -inform DER -in domain.com.crt 
openssl x509 -text -inform PEM -in domain.com.crt 

Bu cevap için teşekkürler. SA'larımın ".cer" olarak sağladığı formatı zaten ".pem" olarak belirleyebildim - gizli
javafueled

10

Benim durumumda sertifikamın farklı "-" karakterleri olduğunu gördüm. Certin sunucuya yerleştirildiği yönetici tarafından değiştirilen metin editörü ile birlikte yol boyunca özel bir unicode karakteriyle bir kopyalama / yapıştırma sorunu olmalı.

Bu teşhis koymak için saatler sürdü ve sonunda bunu daha önce tahmin ettim ve sertifikayı vi olarak düzenledim ve mevcut "-" karakterleri sildim ve yeniden yazdım.

Umarım bu birine yardımcı olur.


8

Benim durumumda OP'nin hatalarıyla karşılaştım, çünkü benim için .crt dosyasını kim yarattıysa, ilk başta gerçekten bir .PEM formatlı dosya yarattı ve .crt adını verdi.

Bunu aşağıdaki faydalı rehbere bakarak keşfettim: https://support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how -to-convert-onları

tek yapmam gereken .crt'imi bir .pem olarak yeniden adlandırmaktı ve ben bittim! Kılavuz, OP'nin sorusundaki hataların girdi dosyasının PEM formatlı olduğunu ima ettiğinden, DER formatından .pem dosyasına dönüştürmeye çalışmak yapılamaz ve aslında gereksizdir.


4

Dosyanızın sertifika dosyasında boşluk veya boşluk olmadığından emin olun. Tüm metni seçip yalnızca bir metin düzenleyicisinde boş alanlar arayarak, sertifika dosyanızda boşluk veya boşluk olmadığından emin olun.

Ayrıca, yapılandırılan dosyaların gerçekten olup olmadığını kontrol edin.

Örneğin: Diğer yazınızda, .key dosyanızın domain.com.crt adlı vhost yapılandırmasını yaparken benim domain.com.crt olduğunu söylersiniz.

SSLCertificateFile /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt
SSLCertificateKeyFile /etc/apache2/domain.ssl/domain.ssl.key/domain.com.key
SSLCertificateChainFile /etc/apache2/domain.ssl/ca.crt
SSLCACertificateFile /etc/apache2/domain.ssl/gs_intermediate_ca.crt

Yukarıdaki tüm dosyaların gerçekten var olduğunu ve geçerli olduğunu tekrar kontrol edin.


1
Ayrıca çizgilerinizin çizgi olup olmadığını kontrol edin. Değişime gibi Microsoftian metin düzenleyicileri --içine ; Bu sorun gidermek için çok eğlenceli değildi.
Shane Madden

yeap, Ubuntu’da olduğunuzdan, sadece bir terminal açın ve örneğin nano kullanın. Bu şekilde emin olacaksın.
George Tasioulis

Merhaba, geri bildiriminiz için teşekkürler - Her şeyi kontrol ettim ve her şey yolunda. Crt dosyasını doğrulamaya çalıştım ancak şunu alıyorum:sudo openssl x509 -noout -text -in domain.com.crt unable to load certificate 16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE
williamsowen

1
Domain.com.crt dosyanızın ilk satırı ile başlayıp -----BEGIN CERTIFICATE-----son satırı ile başlıyor -----END CERTIFICATE-----mu?
George Tasioulis

1

Başkası bu soruna rastlarsa ve apache hata kayıtlarınız şöyle bir şey söylese:

Init: Sunucu sertifikası /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt dosyasından okunamıyor

Anahtarınızı ve sertifika dosyalarınızı apache yapılandırmasındaki bildirimlerde değiştirmediğinizden emin olun. Anahtarı sertifika dosyama ve sertifikayı anahtar dosyama işaret etmiştim. Bu gönderi sorunu çözmeme yardımcı oldu, ancak başka bir olası sorun / çözüm olarak belirtmek istedim.


0

Benim sorunum (Apache 2.4 ile yeni bir sunucu kurulurken aynı hatayı elde etmek) Apache'nin (2.4) ikili .crt dosyasını okuyamadığıydı. Kişisel sertifika depomda (mmc ile) ithal ettim ve X.509 (.cer) kodlu base-64 olarak verdim. Dışa aktarılan dosyayı aynı ada (.crt) (httpd-ssl.conf dosyamda kullanılan) yeniden adlandırdım ve tekrar çalıştı! Aynı sertifika eski sunucumda çalıştı, belki Apache 2.4 2.2'den daha katı mı? İyi şanslar.


0

Benim durumumda, dosyada BOM bulunması gerekiyor. Biri böyle sorabilir:

tail -c +4 ssl.crt > ssl2.crt

Her zaman 3 bayt sürdüğünden emin değilim, bu nedenle en iyi yol şöyle olmalıdır:

vi -c 'se nobomb' -c wq ssl.crt

0

Aynı hatayı aldım çünkü .key ile .crt dosya isimlerini değiştirdim


0

Yanlışlıkla apache config içinde müşteri tarafından temin edilen bir p7b tipi IIS sertifikası kullandığımda da benzer bir problem yaşadım. Sertifikayı x509 biçimine dönüştürmek hatayı düzeltti. Her iki tip de yüzeyde aynı görünür ancak iç kısımda görünüşte farklıdır.


0

Bu sorunu yaşadım, çünkü bir e-postaya yapıştırılan bir IIS tarzı .p7b dosyasının içeriği gönderildi. Aynı .pem gibi "----- BEGIN CERTIFICATE -----" ve "----- END CERTIFICATE -----" etiketlerine sahiptir ve içerik benzer bir görünümlü base64 kodlaması kullanır. Bunun gibi bir * .pem dosyasına dönüştürdüm:

openssl pkcs7 -print_certs -in cert.p7b -out cert.cer

Ondan sonra Apache 2.2 mutlu oldu.


0

Son zamanlarda Windows'ta Lets Encrypt (letsencrypt) kullanarak bu sorunu yaşadım. Sertifika UTF-16LE olarak kodlandı. UTF-8'e (dos2unix kullanarak) dönüştürmek sorunu çözdü.


0

Benim durumumda sadece boş satırlar vardı. Nrt içinde ntepad veya notepad ++ crt dosyasını yapıştırdığınızda her zaman gibi smth var

sdgrgrgr rgregegreg rgrgreg
rgregreg rggregregr rgregrg

boş alanları kaldırmak ve bir satırdaki tüm satırları koymak sorunu çözdü. Örneğin:

sdgrgrgr
rgregegreg
rgrgreg
rgregreg
rggregregr
rgregrg
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.