2014-10-08 17 views
6

nie mogę zweryfikować certyfikatu przez OpenSSLopenssl stanie uzyskać certyfikat lokalny emitent debian

openssl verify cert.pem 

Pobiera coś takiego:

cert.pem:/C = PL/O = dane
error 20 at 0 depth lookup: nie można uzyskać certyfikatu lokalnego wydawcy

Ten sam certyfikat z maszyny na Centos - zweryfikowala co poprawnie.

Debian: squeeze/sid

Czy to problem z ROOT CA? Zaktualizować pomoc openssl?

Odpowiedz

6

Musisz określić cert CA w celu weryfikacji wydanego cert ponieważ to oczywiście nie jest wliczone w PEM (choć byłoby to możliwe):

openssl verify -CAfile your_ca_cert_file cert.pem 

Jeśli nie pojawia się błąd na CentOS następnie znajduje się certyfikat CA, a openssl może go użyć do pomyślnej weryfikacji certyfikatu cert.pem

+0

Thx do powtórki. Jeśli zrozumiałem: - Z polecenia wykonanego w Debianie: openssl weryfikuj -CAfile ca-bundle.crt cert.pem gdzie: - Ca-bundle.crt - ROOT CA wydawcy certyfikatu (Unizeto/Certum - Polska) - Cert. PEM - certyfikat otrzymany od emitenta (Unizeto/Certum - Polska) Efekt - badanie przeprowadzone na systemie Debian: openssl zweryfikować -CAfile bundle.crt cA-cert.pem cert.pem: OK OpenSSL zweryfikować cert .pem cert.pem:/C = PL/O = dane ... błąd 20 przy 0 sprawdzeniu głębokości: nie można uzyskać lokalnego certyfikatu wystawcy Jak to zrobić bez wskazania ca-bundle.crt - mój certyfikat ma status OK? – 0chi0

+0

Możesz również ustawić i wyeksportować zmienne środowiskowe SSL_CERT_FILE lub SSL_CERT_DIR ... 'export SSL_CERT_FILE =/path/to/ca_bundle.crt' lub' export SSL_CERT_DIR =/path/to/ca/​​dir' Wtedy nie musisz określać CAfile lub CApath w każdym poleceniu openssl. – lm713

0

Musisz zaufać ośrodkowi CA na serwerze. Na przykład, jeśli Twój certyfikat pochodzi z "biegu dnia", uruchom następujące polecenia.

cd /tmp 
sudo wget -O gd_intermediate.crt https://certs.godaddy.com/repository/gd_intermediate.crt 
sudo cp /tmp/gd_intermediate.crt /usr/local/share/ca-certificates/gd_intermediate.crt 
sudo update-ca-certificates 

Po uruchomieniu tych poleceń certyfikat powinien zostać zweryfikowany.

openssl verify cert.pem 
+1

Nie należy używać wget do pobierania certyfikatów. Znane są słabości z wget.Alternatywą jest curl. Jestem jednak zbyt leniwy, by podać link. –

6

W przeciwieństwie do przeglądarek, które ufają prawie każdemu, OpenSSL domyślnie nic nie wierzy.

To zależy od Ciebie, aby określić, co powinno być zaufane. Będziesz musiał określić coś podczas korzystania z OpenSSL. Może to być certyfikat lub lista certyfikatów do zaufania.

Katalog /etc/ssl/certs zawiera wiele certyfikatów. Stosując taki katalog powinien pozwolić, aby sprawdzić niemal wszystko:

openssl verify -CApath /etc/ssl/certs cert.pem 

Zaleca się, aby zmniejszyć liczbę zaufanych CERT do jednego, dwóch lub możliwego minimum.

+0

Nadal nie pozwól mi pracować (letsencrypt): root @ messagerie-secours [CHROOT] [10.10.10.19]/etc/ssl/private/LETSENCRYPT # openssl verify -CAfile/etc/ssl/certs/ca-certificates .crt chained_cert.crt chained_cert.crt: CN = messagerie.algerian-radio.dz błąd 20 przy 0 sprawdzeniu głębokości: nie można uzyskać certyfikatu lokalnego wystawcy root @ messagerie-secours [CHROOT] [10.10.10.19]/etc/ssl/private/LETSENCRYPT # " – ychaouche