2010-12-08 7 views
8

książce, że pracuję z (Network Security z OpenSSL przez Viega, Messiera i Chandra), na stronie 133, stwierdza:Czy OpenSSL automatycznie obsługuje listy CRL (listy odwołań certyfikatów) teraz?

[...] aplikacja musi wczytać CRL pliki, aby wewnętrzny proces weryfikacji zapewniał, że każdy weryfikowany certyfikat nie zostanie odwołany. Niestety, funkcjonalność CRL OpenSSL jest niepełna w wersji 0.9.6. Funkcje niezbędne do wykorzystania informacji o listach CRL będą kompletne w nowych wersjach zaczynających się od wersji 0.9.7. [...]

Nie mogę znaleźć żadnych użytecznych informacji na ten temat w dokumentacji OpenSSL (nic dziwnego). Wydaje mi się, że sprawdzenie list CRL powinno być automatyczną częścią procesu weryfikacji OpenSSL. Czy listy CRL są teraz obsługiwane automatycznie, czy też nadal muszę przechodzić przez wszystkie śmieci wymienione w książce, aby mozolnie sprawdzać, czy certyfikat nie został odwołany?

Powiązane pytanie: czy funkcjaładuje również ścieżki CRL?

Odpowiedz

6

SSL_CTX_set_default_verify_paths() po prostu ładuje ścieżki CA, a nie listy CRL.

wierzę (choć nie zostały jeszcze faktycznie realizowane to sam), że proces jest poprawna:

/* Load CRLs into the `X509_STORE` */ 

X509_STORE *x509_store = SSL_CTX_get_cert_store(ctx); 
X509_STORE_add_crl(x509_store, crl); 

/* Enable CRL checking */ 
X509_VERIFY_PARAM *param = X509_VERIFY_PARAM_new(); 
X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK); 
SSL_CTX_set1_param(ctx, param); 
X509_VERIFY_PARAM_free(param); 
+0

Dzięki, doceniam to. –

5

Przyjęte rozwiązanie nie dość pracy w libssl v0.9.8o. Chociaż kod odpowiada, że ​​na dole strony w docs online, jak od 2011/06/23:

http://www.openssl.org/docs/crypto/X509_VERIFY_PARAM_set_flags.html

Użyłem tego kodu:

X509_STORE *store = getStore(); 

// Enable CRL checking 
X509_VERIFY_PARAM *param = X509_VERIFY_PARAM_new(); 
X509_VERIFY_PARAM_set_flags(param, X509_V_FLAG_CRL_CHECK); 
X509_STORE_set1_param(store, param); 
X509_VERIFY_PARAM_free(param); 

Zauważ użycie X509_STORE raczej niż SSL_CTX, aby ustawić parametr.

EDYCJA: Jeszcze jedna rzecz do zapamiętania z OpenSSL i CRL. Jeśli włączysz listę CRL w kontekście, każdy certyfikat, który nie ma CRL, zostanie odrzucony. Na ile mi wiadomo, nie ma sposobu na uzyskanie OpenSSL, aby stosować wyłącznie listy CRL do certyfikatów od urzędów certyfikacji wymienionych w listach CRL, które posiada.

Wpadłem na ten problem i zmarnowałem dużo czasu, próbując dowiedzieć się, dlaczego mój certyfikat nie został zaakceptowany, gdy był całkowicie prawidłowy. Problem polegał na tym, że dodałem listę CRL dla jednego urzędu certyfikacji, ale nie dla innego. Wszystkie certyfikaty wystawione przez urząd certyfikacji bez listy CRL zostały odrzucone. OpenSSL to wszystko lub nic pod tym względem.