RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 2026320 - client assumes SCA cert 'lastUpdate' date is in it's local timezone, then thinks it re-converts to UTC
Summary: client assumes SCA cert 'lastUpdate' date is in it's local timezone, then thi...
Keywords:
Status: CLOSED ERRATA
Alias: None
Deadline: 2022-01-11
Product: Red Hat Enterprise Linux 9
Classification: Red Hat
Component: subscription-manager
Version: 9.0
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: rc
: 9.0
Assignee: Pino Toscano
QA Contact: Red Hat subscription-manager QE Team
URL:
Whiteboard:
Depends On: 2024589
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-11-24 11:10 UTC by Rehana
Modified: 2022-05-17 16:30 UTC (History)
5 users (show)

Fixed In Version: subscription-manager-1.29.23-1.el9
Doc Type: If docs needed, set a value
Doc Text:
Clone Of: 2024589
Environment:
Last Closed: 2022-05-17 15:58:19 UTC
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github candlepin subscription-manager pull 2892 0 None Merged 2026320: fix format of 'If-Modified-Since' header 2021-12-06 11:51:43 UTC
Red Hat Issue Tracker RHELPLAN-103833 0 None None None 2021-11-24 11:11:28 UTC
Red Hat Product Errata RHBA-2022:3984 0 None None None 2022-05-17 15:58:32 UTC

Description Rehana 2021-11-24 11:10:58 UTC
+++ This bug was initially created as a clone of Bug #2024589 +++

Description of problem:
subscription-manager assumes SCA cert's 'lastUpdate' date is in it's local timezone (wherever the client is), then thinks it is converting it to UTC, sending it back to Candlepin, and Candlepin thinks the client has an outdated version of the SCA cert, sending it back again (instead of sending back HTTP 304).


Version-Release number of selected component (if applicable):
1.28.13-2.el8
1.29.18-1.fc33

How reproducible:
100%
Note: Running this scenario with a client in any timezone other than UTC/GMT will lead to undesirable effects, but the exact effect I'm describing happens when you are anywhere east of UTC (so UTC+1, UTC+2..).

Steps to Reproduce:
1. Make sure to run subscription-manager on a machine that is on anywhere east of UTC/GMT timezone. In this example, I am running this in UTC+1.
2. Register to an org with SCA mode
3. Validate that the /var/lib/rhsm/cache/content_access.json file is there, has content, and note the 'lastUpdate' in it, e.g. {"lastUpdate": "2021-11-18T11:12:49+0000"... This should be the date sent by Candlepin, which is in UTC/GMT (see the +0000 suffix which indicates that).
4. Run 'subman refresh' with the HTTP debug commands: SUBMAN_DEBUG_PRINT_REQUEST=1 SUBMAN_DEBUG_PRINT_REQUEST_HEADER=1
5. Check the HTTP debug output for the second call to /accessible_content, and specifically for the If-Modified-Since header value.

Actual results:
'If-Modified-Since': 'Thu, 18 Nov 2021 10:12:49 GMT'

(subman is sending the date to be 1 hour earlier than what the cache says)
The actual effect is that the server will try to compare it to the date on the cert saved in the database (which should have been the same if the cert has not been regenerated), and server ends up thinking that it has a newer version of the cert, so it re-sends the cert back to the client, instead of sending back an HTTP 304 code.

Expected results:
'If-Modified-Since': 'Thu, 18 Nov 2021 11:12:49 GMT'

Additional info:

Here is what I think happens:
- Candlepin sends back SCA cert with lastUpdate set in UTC timezone (+0000) suffix.
- subman saves that in the cache as-is.
- Next time subman is calling /accessible_content, it reads the date from the cache, ignores the timezone suffix (+0000) and instead *assumes* it is local (to the client) time zone, tries to convert it to UTC, but in reality it just converts it to the wrong time. (in my case it shifts it down by 1 hour, because I am in UTC+1)

Comment 3 Archana Pandey 2022-01-17 17:27:50 UTC
Pre-verification

Reproducing the issue on subscription-manager: 1.29.7-1.el9

[root@kvm-03-guest22 ~]# subscription-manager version
server type: This system is currently not registered.
subscription management server: 3.2.21-1
subscription management rules: 5.41
subscription-manager: 1.29.7-1.el9
[root@kvm-03-guest22 ~]# 
[root@kvm-03-guest22 ~]# subscription-manager register --username rhel9GA --password *******
Registering to: subscription.rhsm.stage.redhat.com:443/subscription
The system has been registered with ID: fcc3eadb-5aeb-4351-a674-ebaccb10fbc0
The registered system name is: kvm-03-guest22.lab.eng.rdu2.redhat.com

[root@kvm-03-guest22 ~]# cut -d ',' -f1 /var/lib/rhsm/cache/content_access.json
{"lastUpdate": "2022-01-17T16:50:32+0000"             <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< remember the value for lastUpdate to verify with If-Modified-Since header

[root@kvm-03-guest22 ~]# 
[root@kvm-03-guest22 ~]# export SUBMAN_DEBUG_PRINT_REQUEST=1 SUBMAN_DEBUG_PRINT_REQUEST_HEADER=1
[root@kvm-03-guest22 ~]# 
[root@kvm-03-guest22 ~]# subscription-manager refresh
<output cropped>
Making request: subscription.rhsm.stage.redhat.com:443 GET /subscription/consumers/fcc3eadb-5aeb-4351-a674-ebaccb10fbc0/accessible_content {'Content-type': 'application/json', 'Accept': 'application/json', 'x-subscription-manager-version': '1.29.7-1.el9', 'X-Correlation-ID': 'e1cd5a2bcd1f49159a58676bdbf12dc4', 'Accept-Language': 'en-us', 'User-Agent': 'RHSM/1.0 (cmd=subscription-manager) subscription-manager/1.29.7-1.el9', 'Content-Length': '0', 'If-Modified-Since': 'Mon, 17 Jan 2022 15:50:32 GMT'}
                                                                                                                               ^^^^^ notice the time difference, subman is sending the date to be 1 hour earlier than what the cache says, 

============================================================

verifying issue on jenkins build of sub-man

[root@kvm-03-guest22 ~]# rpm -qa subscription-manager
subscription-manager-1.29.23-1.git.0.e927a6c.el9.x86_64
[root@kvm-03-guest22 ~]# subscription-manager refresh

Making request: subscription.rhsm.stage.redhat.com:443 GET /subscription/consumers/fcc3eadb-5aeb-4351-a674-ebaccb10fbc0/certificates/serials {'Content-type': 'application/json', 'Accept': 'application/json', 'x-subscription-manager-version': '1.29.23-1.git.0.e927a6c.el9', 'X-Correlation-ID': 'd974c339f0a54de186e1b8156969c769', 'Accept-Language': 'en-us', 'User-Agent': 'RHSM/1.0 (cmd=subscription-manager) subscription-manager/1.29.23-1.git.0.e927a6c.el9', 'Content-Length': '0'}


Making request: subscription.rhsm.stage.redhat.com:443 GET /subscription/status {'Content-type': 'application/json', 'Accept': 'application/json', 'x-subscription-manager-version': '1.29.23-1.git.0.e927a6c.el9', 'X-Correlation-ID': 'd974c339f0a54de186e1b8156969c769', 'Accept-Language': 'en-us', 'User-Agent': 'RHSM/1.0 (cmd=subscription-manager) subscription-manager/1.29.23-1.git.0.e927a6c.el9', 'Content-Length': '0'}


Making request: subscription.rhsm.stage.redhat.com:443 GET /subscription/consumers/fcc3eadb-5aeb-4351-a674-ebaccb10fbc0/accessible_content {'Content-type': 'application/json', 'Accept': 'application/json', 'x-subscription-manager-version': '1.29.23-1.git.0.e927a6c.el9', 'X-Correlation-ID': 'd974c339f0a54de186e1b8156969c769', 'Accept-Language': 'en-us', 'User-Agent': 'RHSM/1.0 (cmd=subscription-manager) subscription-manager/1.29.23-1.git.0.e927a6c.el9', 'Content-Length': '0', 'If-Modified-Since': 'Mon, 17 Jan 2022 16:50:32 GMT'}
                                                                                                                                                       ^^^^^ correct time reported
All local data refreshed

<output cropped>

Actual Results and expected results are same here, subman is sending the date correct date time.

Based on above observation setting verified field to tested.

Comment 6 Archana Pandey 2022-01-31 08:01:58 UTC
Verifying on nightly build  with sub-man version subscription-manager-1.29.23-1.el9.x86_64

Beaker Test information:
                         HOSTNAME=dell-per630-fc-01.dell2.lab.eng.bos.redhat.com
                            JOBID=6244150
                         RECIPEID=11377664
                    RESULT_SERVER=
                           DISTRO=RHEL-9.0.0-20220125.3
                     ARCHITECTURE=x86_64


[root@dell-per630-fc-01 ~]# subscription-manager version
server type: This system is currently not registered.
subscription management server: 3.2.22-1
subscription management rules: 5.41
subscription-manager: 1.29.23-1.el9

[root@dell-per630-fc-01 ~]# rpm -qa --changelog subscription-manager | grep 2026320
- 2026320: fix format of HTTP-date headers (ptoscano)
- 2026320: fix format of HTTP-date headers (ptoscano)
[root@dell-per630-fc-01 ~]# 


[root@dell-per630-fc-01 ~]# subscription-manager register --username rhel9GA --password *****
Registering to: subscription.rhsm.stage.redhat.com:443/subscription
The system has been registered with ID: 90f92978-3e21-4e51-bf3b-4018a01bbd5f
The registered system name is: dell-per630-fc-01.dell2.lab.eng.bos.redhat.com
[root@dell-per630-fc-01 ~]#

[root@dell-per630-fc-01 ~]# 
[root@dell-per630-fc-01 ~]# cut -d ',' -f1 /var/lib/rhsm/cache/content_access.json
{"lastUpdate": "2022-01-31T07:39:32+0000"

[root@dell-per630-fc-01 ~]# export SUBMAN_DEBUG_PRINT_REQUEST=1 SUBMAN_DEBUG_PRINT_REQUEST_HEADER=1
[root@dell-per630-fc-01 ~]# subscription-manager refresh

Making request: subscription.rhsm.stage.redhat.com:443 GET /subscription/consumers/90f92978-3e21-4e51-bf3b-4018a01bbd5f/certificates/serials {'Content-type': 'application/json', 'Accept': 'application/json', 'x-subscription-manager-version': '1.29.23-1.el9', 'X-Correlation-ID': '7d0e4acc739340c9816425a2fdf5664a', 'Accept-Language': 'en-us', 'User-Agent': 'RHSM/1.0 (cmd=subscription-manager) subscription-manager/1.29.23-1.el9', 'Content-Length': '0'}


Making request: subscription.rhsm.stage.redhat.com:443 GET /subscription/status {'Content-type': 'application/json', 'Accept': 'application/json', 'x-subscription-manager-version': '1.29.23-1.el9', 'X-Correlation-ID': '7d0e4acc739340c9816425a2fdf5664a', 'Accept-Language': 'en-us', 'User-Agent': 'RHSM/1.0 (cmd=subscription-manager) subscription-manager/1.29.23-1.el9', 'Content-Length': '0'}


Making request: subscription.rhsm.stage.redhat.com:443 GET /subscription/consumers/90f92978-3e21-4e51-bf3b-4018a01bbd5f/accessible_content {'Content-type': 'application/json', 'Accept': 'application/json', 'x-subscription-manager-version': '1.29.23-1.el9', 'X-Correlation-ID': '7d0e4acc739340c9816425a2fdf5664a', 'Accept-Language': 'en-us', 'User-Agent': 'RHSM/1.0 (cmd=subscription-manager) subscription-manager/1.29.23-1.el9', 'Content-Length': '0', 'If-Modified-Since': 'Mon, 31 Jan 2022 07:39:32 GMT'}
                                                                                                        ^^^^^^^^^-------------------------------------header shows correct time
All local data refreshed

Making request: subscription.rhsm.stage.redhat.com:443 GET /subscription/consumers/90f92978-3e21-4e51-bf3b-4018a01bbd5f/compliance {'Content-type': 'application/json', 'Accept': 'application/json', 'x-subscription-manager-version': '1.29.23-1.el9', 'X-Correlation-ID': '7d0e4acc739340c9816425a2fdf5664a', 'Accept-Language': 'en-us', 'User-Agent': 'RHSM/1.0 (cmd=subscription-manager) subscription-manager/1.29.23-1.el9', 'Content-Length': '0'}


Making request: subscription.rhsm.stage.redhat.com:443 GET /subscription/consumers/90f92978-3e21-4e51-bf3b-4018a01bbd5f/compliance {'Content-type': 'application/json', 'Accept': 'application/json', 'x-subscription-manager-version': '1.29.23-1.el9', 'X-Correlation-ID': '7d0e4acc739340c9816425a2fdf5664a', 'Accept-Language': 'en-us', 'User-Agent': 'RHSM/1.0 (cmd=subscription-manager) subscription-manager/1.29.23-1.el9', 'Content-Length': '0'}


Making request: subscription.rhsm.stage.redhat.com:443 GET /subscription/consumers/90f92978-3e21-4e51-bf3b-4018a01bbd5f/compliance {'Content-type': 'application/json', 'Accept': 'application/json', 'x-subscription-manager-version': '1.29.23-1.el9', 'X-Correlation-ID': '7d0e4acc739340c9816425a2fdf5664a', 'Accept-Language': 'en-us', 'User-Agent': 'RHSM/1.0 (cmd=subscription-manager) subscription-manager/1.29.23-1.el9', 'Content-Length': '0'}


Making request: subscription.rhsm.stage.redhat.com:443 GET /subscription/consumers/90f92978-3e21-4e51-bf3b-4018a01bbd5f/compliance {'Content-type': 'application/json', 'Accept': 'application/json', 'x-subscription-manager-version': '1.29.23-1.el9', 'X-Correlation-ID': '7d0e4acc739340c9816425a2fdf5664a', 'Accept-Language': 'en-us', 'User-Agent': 'RHSM/1.0 (cmd=subscription-manager) subscription-manager/1.29.23-1.el9', 'Content-Length': '0'}

[root@dell-per630-fc-01 ~]# 

Actual Results:
'If-Modified-Since': 'Mon, 31 Jan 2022 07:39:32 GMT'

Expected Results:
'If-Modified-Since': 'Mon, 31 Jan 2022 07:39:32 GMT'

Verification : Passed

Comment 8 errata-xmlrpc 2022-05-17 15:58:19 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (new packages: subscription-manager), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:3984


Note You need to log in before you can comment on or make changes to this bug.