Ruby help please [megoldva snq által]

Nem értek Ruby-ul, de most a kezemben van egy számomra fontos, Rubyban írt eszköz, ami viszont beleakad a céges beállításokba.

SSL_connect returned=1 errno=0 state=error: certificate verify failed (self signed certificate in certificate chain) (OpenSSL::SSL::SSLError)
 

Ez igaz, és szeretném ignorálni.

Az ominózus hívás így néz ki:

 

File.open(file, 'wb') do |get|
    get << URI.parse(path.to_s).open(&:read)
 

Nekem ez kínaiul van, bár kb. sejtem, hogy mit takar.

Stackoverflow-n találtam ezt:

https://stackoverflow.com/questions/1113422/how-to-bypass-ssl-certifica…

ami szerint - ha jól veszem ki -, át kellene adni az open-nek egy extra paramétert. De hogyan? Próbálgattam, de az abszolút vaktában lődözés mindegyikére az volt a válasz, hogy ez szintaktikailag nem OK.

Aki képben van, az ugyan írja már le, hogy fenti hívásba hogyan kell beletenni azt a ssl_verify_mode: openSSL::SSL::VERIFY_NONE szöveget.

Előre is kösz!

Hozzászólások

Szerkesztve: 2022. 04. 29., p – 13:30

Én sem értek a ruby-hoz, de az nem lehet járható, hogy egyszerűen beírod a scriptbe, hogy

http.verify_mode = OpenSSL::SSL::VERIFY_NONE

, még az open metódus elé, ezzel deklarálva, hogy egyáltalán ne foglalkozzon vele?

Szerkesztve: 2022. 04. 29., p – 18:16

>>át kellene adni az open-nek egy extra paramétert. De hogyan?

 

.open({ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}, &:read)

 

(természetesen openssl import után)

alternatívaként megmutathatod neki a ca certet ('ssl_ca_cert' opció)

Szerkesztve: 2022. 04. 30., szo – 19:57

A .verify_mode = OpenSSL::SSL::VERIFY_NONE szerintem nem a legjobb megoldás, nem véletlen van ez az ellenőrzés. De attól függ, hogy fontos lehet-e ez a biztonság szempontjából. Általában ott szokott tévedés történni, amikor valaki úgy dönt, hogy nem fontos egy adott dolog, ami a biztonsággal kapcsolatos, mert "az úgy sem fordulhat elő, hogy...".

Openssl-el szedd le a weboldal tanúsítványát, és azt kellene a programhoz hozzáadni, mint megbízható tanúsítványt. Így nem hasal majd el ez az ellenőrzés.

Java alatt pl a truststore-ba kell felvenni,  gondolom itt is hasonló Ruby alatt.