keboola / db-extractor-mssql

MIT License
1 stars 2 forks source link

SSL support #173

Closed ondrajodas closed 4 years ago

ondrajodas commented 4 years ago

Solving - https://keboola.atlassian.net/browse/COM-266

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-encrypted-connections?view=sql-server-ver15#common-connection-errors

michaljurecko commented 4 years ago

@ondrajodas

Pozeram na zadanie, a este je tam jedna vec co sa nespravila: image

Tj. treba vytvorit novy mssql-invalid-cn.ctr ... ktory bude podpísaný ca ale CN nebude mssql-ssl ale nieco ine, vid openssl x509 -text -noout -in ./tests/phpunit/data/ssl/certs/mssql.crt.

A napisat na to test, defaultne by to malo spadnut + mali by sme mat moznost ako to zle CN ignorovat (teda dalsi test), ak ostatne veci sedia.

michaljurecko commented 4 years ago

BTW:

michaljurecko commented 4 years ago

@ondrajodas nasiel som este jeden problem

Pri kazdom teste sa zapise certifikat do ca-certificates.conf, no pri dalsom teste to tam zostane (rovnako aj subor certifikatu, ak sa neprepise novym obsahom), co moze vzajomne ovplyvnovat testy: image

Dalo by sa to vyriesit takto: image

ondrajodas commented 4 years ago

@webrouse zapracoval jsem tvoje připomínky

ondrajodas commented 4 years ago

CipherString je v mysql nastavený natvrdo na DEFAULT@SECLEVEL=1: https://github.com/keboola/db-extractor-mysql/blob/ed19080f0d878c87587f69d08ee6aa05baaf80de/src/Keboola/DbExtractor/Extractor/MySQL.php#L72

a v mssql tomu je taky tak: https://github.com/keboola/db-extractor-mssql/blob/master/Dockerfile#L52

michaljurecko commented 4 years ago

@ondrajodas mas pravdu, ale je to tam zle, ... ta chyba sa tam zaviedla pri fixovani ineho bugu, pripravim PR na fix: https://github.com/keboola/db-extractor-mysql/commit/aac592369672294dfdc514584178cce0d3c658ad

Vtedy som si podla vsetkeho nevsimol, ze sa to tam uz inde pouziva a prepisal som to.

Ak si myslis, ze to tam netreba tak sa spytaj Tomasa alebo Padaka, a mozeme to vyhodit prec z configu a aj mysql. Ale kedze sme rozpravali ze mysql je referencna implementacia, tak to proste nemozeme odignorovat a musime to nejak vyriesit:

ondrajodas commented 4 years ago

(key a cert) jsem z configu dal pryč a ten cipher tam přidám 👍

michaljurecko commented 4 years ago

Pripravil som fix pre mysql + test: https://github.com/keboola/db-extractor-mysql/pull/131

ondrajodas commented 4 years ago

když změním CipherString přímo v PHP tak se nenačte aktuální nastavení (zřejmě ho php loaduje předtím než se načte) nenapadá tě jak by se dalo refreshnout?

michaljurecko commented 4 years ago

@ondrajodas a nacita sa to pri starte PHP alebo pri prvom pouzití? tj. je tam problem s implementaciou alebo s testami

michaljurecko commented 4 years ago

co pozeram na nete, tak asi sa to nacitava pri prvom pouziti, a teda malo by stacit spustit test v oddelenom procese:

https://stackoverflow.com/a/19304878

ondrajodas commented 4 years ago

je tam problém s implementací.... když mám výchozí cipher v /etc/ssl/openssl.cnf a změním ho na třeba TLS_RSA_WITH_RC4_128_MD5 tak to projde ale když ho nejdřív změním a pak pustím tak to neprojde

ondrajodas commented 4 years ago

v odděleném procesu se pouští

michaljurecko commented 4 years ago

mozes to prosim commitnut? napr. do nejakej inej branche, ze sa na to pozriem ...

ondrajodas commented 4 years ago

@webrouse https://github.com/keboola/db-extractor-mssql/pull/178

michaljurecko commented 4 years ago

problem je asi v testoch, ... vytvara sa tam nejake pomocne PDO spojenie, ktore si nacita SSL config, a az tak sa to v teste upravuje, ... sekundu a commitnem to

ondrajodas commented 4 years ago

jo to ano, ale pokud tam nechám default nastavení a cipher změním až v průbehu tak projde Connecting to dtb:

Connecting to DSN 'sqlsrv:Server=mssql-ssl,1433;Database=test;Encrypt=true;TrustServerCertificate=false'
Using SSL connection
Exporting to in.c-main.sales

a to by nemělo

michaljurecko commented 4 years ago

@ondrajodas jj, mas pravdu, skusal som to z kazdej strany a asi sa to neda spravit ze v jednom procese upravis config aj pracujes s PDO :/

ondrajodas commented 4 years ago

jj zkusil jsem to i přímo přes run.php a první běh: image

a druhý už neprojde: image

protože už je upravený config pro openssl

michaljurecko commented 4 years ago

@ondrajodas mam riesenie - workaround, len neviem ci sa ti bude pacit :-D

https://github.com/keboola/db-extractor-mssql/pull/180

michaljurecko commented 4 years ago

Ono su tam nejake zbytocne zmeny, ale asi by sa to dalo pouzit, ked sa to vycisti.

ondrajodas commented 4 years ago

@webrouse asi bych upravil config že se nedá cipher zadat a mergnul bych to bez toho + vytvoříme na to issue a probereme to na callu v pondělí

michaljurecko commented 4 years ago

@ondrajodas ok

ondrajodas commented 4 years ago

issue na cipher string - https://keboola.atlassian.net/browse/COM-354

ondrajodas commented 4 years ago

@webrouse rebasnul jsem nad masterem - můžeš approve ještě jednou pls?