2009-10-29 22 views
10

Z różnych powodów stworzyłem prosty serwer HTTP i dodano obsługę SSL przez OpenSSL. Używam certyfikatów z podpisem własnym. IE, Firefox i Chrome ładnie ładują zawartość, o ile dodaję CA do zaufanych głównych urzędów certyfikacji.wget, samopodpisane certyfikaty i niestandardowy serwer HTTPS

Jednak wget (nawet przy użyciu flagi --no-check-certificate) informuje:

OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure 

Gdybym uruchomić klienta OpenSSL przeciwko mojego serwera przy użyciu:

openssl s_client -connect dnvista:82 -debug 

wrócę: zweryfikować błąd: num = 19: certyfikat z podpisem własnym w łańcuchu certyfikatów Zweryfikowany zwrot: 0 , a następnie

5852:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:.\ssl\s3_pkt.c:1060:SSL alert number 40 
5852:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:.\ssl\s23_lib.c:188: 

Czy wget i klient OpenSSL po prostu nie działają z samopodpisanymi certyfikatami?

UPDATE:

Dla każdego, który przychodzi wraz później, dodając kod ten pomógł z klientem OpenSSL i Firefox:

EC_KEY *ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1); 
SSL_CTX_set_tmp_ecdh(ctx, ecdh); 
EC_KEY_free(ecdh); 

Odpowiedz

11

sprawdziłem stronę człowiekiem wget i --no-check-certificate tylko wydaje wpływa na certyfikat serwera . Należy określić lokalnie podpisany przez siebie certyfikat jako ważny certyfikat CA.

Aby to zrobić, należy określić certyfikat jako --ca-certificate=... w wget i -CAfile w przypadku s_client.

+5

Witam. Widziałem już wiele takich komentarzy, "Wyłącz check-off" w tylu słowach. Jest to pomysł ** naprawdę _BAD_ **. Trochę jak wyścigi uliczne z łysymi oponami na mokrych drogach. Jestem rozczarowany, że ta odpowiedź ma znak "kleszcza". – will

+5

: Zgadzam się, obrócenie czeku jest generalnie złym pomysłem. Moja odpowiedź sugeruje jeden ze sposobów udostępnienia certyfikatu CA klientowi, aby można było poprawnie przeprowadzić kontrolę. –

5

Można również zainstalować zaufanych certyfikatów głównych CA do OpenSSL w jednym z kilku sposobów:

  • Połóż certyfikat CA w/etc/pki/TLS/certs lub równoważnego katalogu, a następnie utworzyć łącze w oparciu na haszowaniu certyfikatu. Szczegóły: http://gagravarr.org/writing/openssl-certs/others.shtml#ca-openssl.
  • Dołącz swój certyfikat CA do /etc/pki/tls/certs/ca-bundle.crt, /etc/pki/tls/cert.pem lub równoważnego pakietu CA.
+0

Napisałem pytanie: [Ruby OpenSSL Set-up lub Konfiguracja dla twojego kodu aplikacji] (http://stackoverflow.com/questions/5233169/ruby-openssl-set-up-con-configuration-for-your-application- kod), aby zapytać _HOW_ Ruby pobiera zasoby PEM lub CRT, aby przeprowadzić weryfikację hosta. Szukałem wyczerpująco modułu, który ładuje informacje o środowisku lub konfiguracji z rekursywnymi ** grep ** scans - bez powodzenia (z wyjątkiem testów i próbek). – will