The revert patch is here:

https://gerrit.ovirt.org/#/c/ovirt-engine/+/113659/

Artur

On 23.02.2021 08:56, Artur Socha wrote:
> In case of the fix for the engine I still cannot verify it because it
> fails when I run OST locally,
> I am leaning towards reverting the offending patch.
> Artur
> 
> On Tue, Feb 23, 2021 at 8:42 AM Vojtech Juranek <[email protected]
> <mailto:[email protected]>> wrote:
> 
>     Given the code freeze this week, could you please merge ASAP, so
>     that we can
>     run OST with other patches?
>     Thanks
>     Vojta
> 
>     On Monday, 22 February 2021 17:07:49 CET Artur Socha wrote:
>     > And the fix for the engine is here:
>     > https://gerrit.ovirt.org/#/c/ovirt-engine/+/113650/
>     <https://gerrit.ovirt.org/#/c/ovirt-engine/+/113650/>
>     >
>     > Artur
>     >
>     > On 22.02.2021 16:29, Marcin Sobczyk wrote:
>     > > Hi,
>     > >
>     > > On 2/22/21 4:21 PM, Yedidyah Bar David wrote:
>     > >> On Mon, Feb 22, 2021 at 4:51 PM Artur Socha <[email protected]
>     <mailto:[email protected]>> wrote:
>     > >>> Hi Didi,
>     > >>> You are probably right that enabling Strict Transport Security
>     caused
>     > >>> that bug as an unfortunate side-effect.
>     > >>> Do you think that, adding some sort of exception for cert url
>     would be
>     > >>> an acceptable fix?  For example we have this kind of rule for
>     excluding
>     > >>> authentication for Rest api docs.
>     > >>
>     > >> If we already have an exception, and hopefully some process to
>     add one,
>     > >> then I think it makes sense for this case as well.
>     > >>
>     > >> I admit, though, that I do not feel completely happy with this.
>     On one
>     > >> hand,
>     > >> this is insecure, and on the other hand, there is no way to do this
>     > >> securely
>     > >> using the existing official means.
>     > >>
>     > >> This thread also made me think about the hosted-engine deploy
>     process.
>     > >> In standalone engine setup, the user is responsible for
>     installing the
>     > >> OS,
>     > >> so it's up to the user to control (or not) generation of the sshd
>     > >> private key
>     > >> for allowing later secure access to it using ssh. For
>     hosted-engine,
>     > >> it's us,
>     > >> and I do not think we do anything around this. Perhaps we should.
>     > >>
>     > >> TL;DR: IMO:
>     > >> 1. Please add an exception. Please open another bug for this.
>     > >> 2. We should document how to get the engine CA cert not using
>     https:
>     > >> ssh to the engine machine; cat /etc/pki/ovirt-engine/ca.pem .
>     > >> 3. We should consider our options for hosted-engine. Filed now [1].
>     > >>
>     > >> [1] https://bugzilla.redhat.com/show_bug.cgi?id=1931510
>     <https://bugzilla.redhat.com/show_bug.cgi?id=1931510>
>     > >>
>     > >> Best regards,
>     > >
>     > > For now I posted a patch for OST that will unblock basic suite [2].
>     > > When we have a proper solution we should adapt the tests to the
>     new way
>     > > of working.
>     > >
>     > > Regards, Marcin
>     > >
>     > > [2] https://gerrit.ovirt.org/#/c/ovirt-system-tests/+/113649/
>     <https://gerrit.ovirt.org/#/c/ovirt-system-tests/+/113649/>
>     > >
>     > >>> Artur
>     > >>>
>     > >>> On 22.02.2021 13:52, Yedidyah Bar David wrote:
>     > >>>> On Mon, Feb 22, 2021 at 3:12 AM
>     <[email protected]
>     <mailto:[email protected]>> wrote:
>     > >>>>> Project:
>     > >>>>>
>     https://jenkins.ovirt.org/job/ovirt-system-tests_basic-suite-master_ni
>     <https://jenkins.ovirt.org/job/ovirt-system-tests_basic-suite-master_ni>
>     > >>>>> ghtly/
>     > >>>>>
>     > >>>>> Build:
>     > >>>>>
>     https://jenkins.ovirt.org/job/ovirt-system-tests_basic-suite-master_ni
>     <https://jenkins.ovirt.org/job/ovirt-system-tests_basic-suite-master_ni>
>     > >>>>> ghtly/894/
>     > >>>>>
>     > >>>>> Build Number: 894
>     > >>>>> Build Status:  Failure
>     > >>>>> Triggered By: Started by timer
>     > >>>>>
>     > >>>>> -------------------------------------
>     > >>>>> Changes Since Last Success:
>     > >>>>> -------------------------------------
>     > >>>>> Changes for Build #894
>     > >>>>> [Andrej Cernek] ost_utils: Remove explicit object inheritance
>     > >>>>>
>     > >>>>>
>     > >>>>>
>     > >>>>>
>     > >>>>> -----------------
>     > >>>>> Failed Tests:
>     > >>>>> -----------------
>     > >>>>> 1 tests failed.
>     > >>>>> FAILED:
>     > >>>>>
>     basic-suite-master.test-scenarios.test_002_bootstrap.test_verify_engin
>     > >>>>> e_certs[CA certificate]
>     > >>>>>
>     > >>>>> Error Message:
>     > >>>>> ost_utils.shell.ShellError: Command failed with rc=1. Stdout:
>     > >>>>> Stderr: unable to load certificate
>     > >>>>> 139734854465344:error:0909006C:PEM routines:get_name:no start
>     > >>>>> line:crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE
>     > >>>>>
>     > >>>>> Stack Trace:
>     > >>>>> key_format = 'X509-PEM-CA'
>     > >>>>> verification_fn = <function <lambda> at 0x7f6aab2add90>,
>     > >>>>> engine_fqdn = 'engine'
>     > >>>>> engine_download = <function engine_download.<locals>.download at
>     > >>>>> 0x7f6aa98d5ea0>
>     > >>>>>
>     > >>>>>      @pytest.mark.parametrize("key_format, verification_fn", [
>     > >>>>>          pytest.param(
>     > >>>>>              'X509-PEM-CA',
>     > >>>>>              lambda path: shell.shell(["openssl", "x509", "-in",
>     > >>>>> path, "-text", "-noout"]),
>     > >>>>>              id="CA certificate"
>     > >>>>>          ),
>     > >>>>>          pytest.param(
>     > >>>>>              'OPENSSH-PUBKEY',
>     > >>>>>              lambda path: shell.shell(["ssh-keygen", "-l", "-f",
>     > >>>>> path]),
>     > >>>>>              id="ssh pubkey"
>     > >>>>>          ),
>     > >>>>>      ])
>     > >>>>>      @order_by(_TEST_LIST)
>     > >>>>>      def test_verify_engine_certs(key_format, verification_fn,
>     > >>>>> engine_fqdn,
>     > >>>>>                                   engine_download):
>     > >>>>>          url =
>     > >>>>>
>     'http://{}/ovirt-engine/services/pki-resource?resource=ca-certificate&;
>     > >>>>> format={}'>>>>
>     > >>>> I guess (didn't check, only looked at engine git log) that
>     this is a
>     > >>>> result of [1].
>     > >>>>
>     > >>>> Anyone looking at this?
>     > >>>>
>     > >>>> This is trying to download the engine ca cert via http, and
>     then do
>     > >>>> some verification on it.
>     > >>>>
>     > >>>> Generally speaking, this is a chicken-and-egg problem: You can't
>     > >>>> securely download
>     > >>>> a ca cert if you need this cert to securely download it.
>     > >>>>
>     > >>>> For OST, it might be easy to fix by s/http/https/ and perhaps
>     passing
>     > >>>> some param to
>     > >>>> make it not check certs in https. But I find it quite
>     reasonable that
>     > >>>> others are doing
>     > >>>> similar things and will now be broken by this change [1]. If
>     so, we
>     > >>>> might decide that
>     > >>>> this is "by design" - that whoever that gets broken, should
>     fix their
>     > >>>> stuff one way or
>     > >>>> another (like OST above, or via safer means if
>     possible/relevant, such
>     > >>>> as using ssh
>     > >>>> to securely connect to the engine machine and then get the
>     cert from
>     > >>>> there somehow
>     > >>>> (do we have an api for this?)). Or we can decide that it's an
>     engine
>     > >>>> bug - that [1]
>     > >>>> should have allowed this specific url to bypass hsts.
>     > >>>>
>     > >>>> [1] https://gerrit.ovirt.org/c/ovirt-engine/+/113508
>     <https://gerrit.ovirt.org/c/ovirt-engine/+/113508>
>     > >>>>
>     > >>>>>          with http_proxy_disabled(),
>     tempfile.NamedTemporaryFile()
>     > >>>>> as tmp:
>     > >>>>>              engine_download(url.format(engine_fqdn,
>     key_format),
>     > >>>>> tmp.name <http://tmp.name>)
>     > >>>>>
>     > >>>>>              try:
>     > >>>>>>                verification_fn(tmp.name <http://tmp.name>)
>     > >>>>>
>     > >>>>> ../basic-suite-master/test-scenarios/test_002_bootstrap.py:292:
>     > >>>>> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>     _ _ _ _
>     > >>>>> _ _ _ _ _ _
>     > >>>>>
>     ../basic-suite-master/test-scenarios/test_002_bootstrap.py:275: in
>     > >>>>> <lambda>
>     > >>>>>      lambda path: shell.shell(["openssl", "x509", "-in", path,
>     > >>>>> "-text", "-noout"]),
>     > >>>>> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>     _ _ _ _
>     > >>>>> _ _ _ _ _ _
>     > >>>>>
>     > >>>>> args = ['openssl', 'x509', '-in', '/tmp/tmpnj42cxm2', '-text',
>     > >>>>> '-noout']
>     > >>>>> bytes_output = False, kwargs = {}
>     > >>>>> process = <subprocess.Popen object at 0x7f6aa98143c8>, out = ''
>     > >>>>> err = 'unable to load
>     > >>>>> certificate\n139734854465344:error:0909006C:PEM
>     > >>>>> routines:get_name:no start
>     line:crypto/pem/pem_lib.c:745:Expecting:
>     > >>>>> TRUSTED CERTIFICATE\n'
>     > >>>>>
>     > >>>>>      def shell(args, bytes_output=False, **kwargs):
>     > >>>>>          process = subprocess.Popen(args,
>     > >>>>>                                     stdout=subprocess.PIPE,
>     > >>>>>                                     stderr=subprocess.PIPE,
>     > >>>>>                                     **kwargs)
>     > >>>>>          out, err = process.communicate()
>     > >>>>>
>     > >>>>>          if not bytes_output:
>     > >>>>>              out = out.decode("utf-8")
>     > >>>>>              err = err.decode("utf-8")
>     > >>>>>
>     > >>>>>          if process.returncode:
>     > >>>>>>            raise ShellError(process.returncode, out, err)
>     > >>>>>
>     > >>>>> E           ost_utils.shell.ShellError: Command failed with
>     rc=1.
>     > >>>>> Stdout:
>     > >>>>> E
>     > >>>>> E           Stderr:
>     > >>>>> E           unable to load certificate
>     > >>>>> E           139734854465344:error:0909006C:PEM
>     routines:get_name:no
>     > >>>>> start line:crypto/pem/pem_lib.c:745:Expecting: TRUSTED
>     CERTIFICATE
>     > >>>>
>     > >>>> (As I said, didn't check myself - I suppose that hsts causes
>     httpd to
>     > >>>> return some kind of redirect, and this is the way openssl
>     fails when
>     > >>>> we input this redirect instead of a cert).
>     > >>>>
>     > >>>> Best regards,
> 
>     _______________________________________________
>     Devel mailing list -- [email protected] <mailto:[email protected]>
>     To unsubscribe send an email to [email protected]
>     <mailto:[email protected]>
>     Privacy Statement: https://www.ovirt.org/privacy-policy.html
>     <https://www.ovirt.org/privacy-policy.html>
>     oVirt Code of Conduct:
>     https://www.ovirt.org/community/about/community-guidelines/
>     <https://www.ovirt.org/community/about/community-guidelines/>
>     List Archives:
>     
> https://lists.ovirt.org/archives/list/[email protected]/message/N72N67VDSY2Z55WQOSW2Y24ZBB3KGARS/
>     
> <https://lists.ovirt.org/archives/list/[email protected]/message/N72N67VDSY2Z55WQOSW2Y24ZBB3KGARS/>
> 
> 
> 
> -- 
> Artur Socha
> Senior Software Engineer, RHV
> Red Hat

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Privacy Statement: https://www.ovirt.org/privacy-policy.html
oVirt Code of Conduct: 
https://www.ovirt.org/community/about/community-guidelines/
List Archives: 
https://lists.ovirt.org/archives/list/[email protected]/message/FWL2YQHOEH6CHHUG7G3K3AF534QXKQOT/

Reply via email to