-
Notifications
You must be signed in to change notification settings - Fork 267
Upgrade from 2025.01.31 to 2025.4.26 broke certificate #349
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Does the request work in Firefox nightly? |
I don't know, I don't use nightly. |
Ok, I hypothesize that it's broken there. Looking at https://www.ssllabs.com/ssltest/analyze.html?d=api.hbdm.com&s=104.17.167.187&latest, I believe the problem is that "AAA Certificate Services" has been removed from the Mozilla trust store, and the server does not send the "SSL.com TLS Transit RSA CA R2" intermediate. |
I don't know about these things. However this is a major bitcoin exchange. I have pinned my certifi to the previous version until this is solved by the website/certifi. |
Ok, well, since this appears to be working as intended, there's no action for us to take here. |
@alex Can you please also check the following: Cert with Fingerprint 1465fa205397b876faa6f0a9958e5590e40fcc7faa4fb7c2c8677521fb5fb658 has been removed in 2025.4.26 but is still in the Mozilla trust store -- https://ccadb.my.salesforce-sites.com/mozilla/IncludedCACertificateReport |
Thank you. Out of curiosity and for my own understanding: am I correct that 2025.4.26 includes changes for anticipated updates to the Mozilla trust store? In other words, the Mozilla trust store itself has not yet been updated, but certifi has already incorporated those changes? I'm curious how certifi and the Mozilla trust store are generally kept in sync. Thank you! |
We update when the NSS trust store migrates to the Firefox repo, which is to say roughly when changes go into nightly. This is before they're in a final Firefox release. |
I'm having similar issues with Shopify's GraphQL APIs |
Have you contacted Shopify? |
It appears that all the impacted websites are behind Cloudflare. I have reached out to folks there. |
I got here by following snowflake's status page: https://status.snowflake.com/incidents/txclg2cyzq32#:~:text=Customers%20hosted%20in%20AWS%20regions%20may,the%20certifi%20library%20to%20version%202025.4.26. my project is using snowflake Do you plan to fix this 🤔 ? |
We are also affected by this issue. We use dbt (data build tool, a Python-based ETL tool) with Snowflake and S3 buckets. Our production pipeline broke because we are now unable to upload local files. This is the error we are encountering, which is related to the communication from Snowflake shared above.
|
I'm fairly perplexed, Can you share what version of OpenSSL your Python is using? |
Our dbt version uses
which is sourced from "pyOpenSSL" at version 24.3.0 via the following dependency requirement
|
Hmm, I was hoping (for certain values of hoping) the answer would be an exceptionally old OpenSSL (1.0.1), because then there'd be a known bug that'd explain this. Can you reproduce with As a meta note: I understand and appreciate folks frustration here, it's never the goal with a new release for things to break. We're working hard to identify impacted usage patterns and find fixes (as I mentioned, I'm in touch with Cloudflare), and I'm appreciative of folks who are continuing to help us debug and identify the causes of issues. That said, there's no obvious step we can take to just "fix this" ourselves. For now, impacted folks may want to temporarily revert -- though I encourage you to make sure you're in touch with service providers running the impacted services. |
I do wonder why does certifi releases certificate changes before they get into Firefox stable? It would seem to me a much better approach would be to do it a few days after Firefox stable, since the stable release would quickly surface many such issues and allow websites a few days to fix them. Why the hurry? |
I cannot replicate the issue using requests. It returns a 403.
Output:
Then I tried implementing the actual put command via the snowflake.connector and DEBUG logs.
|
I'm using Your request test produces:
|
So came here from Snowflake as well, and I'd focus more on that than the s3 issue right off the bat (as that seems to be related to how snowflake integrates with S3, and the cert itself is fine, but OCSP may be failing?). The issue isn't the cert isn't trusted exactly, it's that OCSP fails. It seems related to the removal of starfield class 2, which AWS did last year in theory: https://aws.amazon.com/blogs/security/acm-will-no-longer-cross-sign-certificates-with-starfield-class-2-starting-august-2024/ but the snowflake URLs still reference them, and I'm not sure how the OCSP logic in their libraries works. But if we disable OCSP in their connection libs, this is happy again, as the cert trust is entirely fine. This is likely different from the top level error having to do with HDBM failing cert verify entirely. and probably wants to be a different issue, even if both are related to the trust store updates in some way. i:C = US, O = Amazon, CN = Amazon RSA 2048 M03 For sanity and completion as an edit in case the maintainers see this: I'm more and more convinced the OCSP issue with snowflake is only related to your update, but not your fault. These URLs all seem to pass OCSP checking manually. Only the snowflake connectors are claiming otherwise from testing. |
Ok, the knowledge that what's going on here is that Snowflake does OCSP and it's verifying the OCSP cert that is failing is a new wrinkle! Does anyone by chance know where in the snowflake code the OCSP request machinery is? |
I wonder if they're in the process of fixing it: snowflakedb/snowflake-connector-python@2431336 |
I don't particularly have enough context to evaluate that code, but it does
suggest to me that perhaps the issue here is the intersection of the change
in the Mozilla trust store _combined_ with a bug in the snowflake client.
…On Mon, Apr 28, 2025 at 6:00 PM Edgar Ramírez Mondragón < ***@***.***> wrote:
*edgarrmondragon* left a comment (certifi/python-certifi#349)
<#349 (comment)>
Ok, the knowledge that what's going on here is that Snowflake does OCSP
and it's verifying the OCSP cert that is failing is a new wrinkle!
Does anyone by chance know where in the snowflake code the OCSP request
machinery is?
I wonder if they're in the process of fixing it:
***@***.***
<snowflakedb/snowflake-connector-python@2431336>
—
Reply to this email directly, view it on GitHub
<#349 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAAGBG6E6D6EZX3NWFTBJT232QI5AVCNFSM6AAAAAB35WUKI6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDQMZWHAZDQNBQGA>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
--
All that is necessary for evil to succeed is for good people to do nothing.
|
We hit this issue today. I think dbt-labs/dbt-adapters#1027 is an attempt to address the issue with dbt. This is our error:
It points to the OCSP stuff being in snowflakedb/snowflake-connector-python#2299 looks to be the fix. |
Hey all, Snowflake Engineering team here. We acknowledge that the impact to Snowflake-to-S3 use cases here stems from a bug in our implementation of chain validation in the Snowflake Python connector. The code ought to validate against the Amazon Root CA trust anchor instead of checking for the validity of all the certificates in the certificate chain. We are fixing this in the Python Connector and are on track to release a patch by Apr 30. |
Thanks for sharing the update, and thanks for your work here.
Sorry to be the forcing function for this work!
…On Mon, Apr 28, 2025, 8:04 PM Srikanth Viswanathan ***@***.***> wrote:
*sfc-gh-sviswanathan* left a comment (certifi/python-certifi#349)
<#349 (comment)>
Hey all, Snowflake Engineering team here. We acknowledge that the impact
to Snowflake-to-S3 use cases here stems from a bug in our implementation of
chain validation in the Snowflake Python connector. The code ought to
validate against the Amazon Root CA trust anchor instead of checking for
the validity of all the certificates in the certificate chain. We are
fixing
<snowflakedb/snowflake-connector-python@2431336>
this in the Python Connector and are on track to release a patch by Apr 30.
—
Reply to this email directly, view it on GitHub
<#349 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAAGBHPKOYXQ4KVHXDKSKL2326ZNAVCNFSM6AAAAAB35WUKI6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDQMZXGA2TKMBYG4>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
I'm sorry, but my issue is not with snowflake. I'm using httpx to talk to Shopify. I reached out to them, and they are interest to hear what Cloudfront had to say about this. Please advise. |
problematic point: certifi/python-certifi#349
I have the same issue. When I try to get the access token from Shopify (Custom app). |
I have the same issues using requests in GCF (Google-Cloud-Functions) + ShopifyGraphQL API. |
@2-5 hbdm.com changed their certificate so the issue is fixed (for this specific address :) @alex It's true that they are behind CF, but they are either using their own certificate(s) or there is an option to reissue via CF with different roots, because the new chains/roots are totally different. I'm just guessing (not a CF customer here), but when I got to the root of the problem it got fixed in a few hours after reporting to them. |
I'm also experiencing this using HTTPX against Shopify. Instead of version pinning I opted to use the system's root bundle. using pytest import ssl
import httpx
def test_will_fail():
r = httpx.get("https://EXAMPLE.myshopify.com/admin/api/2025-04/graphql.json")
assert r.status_code == 401 # unauthorized
def test_will_pass():
ctx = ssl.create_default_context()
ctx.load_verify_locations("/etc/ssl/certs/ca-certificates.crt") # Debian
# ctx.load_verify_locations("/etc/ssl/certs/ca-bundle.crt") # Rocky
client = httpx.Client(verify=ctx)
r = client.get("https://EXAMPLE.myshopify.com/admin/api/2025-04/graphql.json")
assert r.status_code == 401 # unauthorized |
That's OK - for now. Sooner or later the root certs will also be removed from the system roots - this one is on the cert owners to fix, in the meantime we need workarounds. Either an older version of certifi or using some other roots to verify the validity. Or not verifying, but that's not something that should be done. Might work in a pinch though, especially if the data retrieved is not really private. |
For those interested
The same file on the released version of Firefox is available here: I've confirmed that Firefox 139 beta has this issue in the end-user app, and Firefox 138 (the current stable) does not I wonder if it's worth amending this repo (or mkcert.org) to use https://hg-edge.mozilla.org/releases/mozilla-release/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txt as the source of the cert file rather than Firefox trunk? |
This reverts commit 879c073. due to #1992, certifi/python-certifi#349
This reverts commit a5edd93. again, due to #1992, certifi/python-certifi#349 I've pinned it with dependabot now, it shouldn't retry
@alex I'm coming across this discussion 3 weeks after the fact. I observed this trouble on 4/26, and circled back on 5/16 to reproduce and debug. But I couldn't reproduce and now I see why... this was a temporary fouling, outside of certifi's purview. [1] Oh wait, google ai says: "The domain dl.fbaipublicfiles.com is owned by Meta (formerly Facebook) and appears to be hosted on Amazon S3". And "Amazon S3 (Simple Storage Service) is a specific cloud storage service offered by Amazon Web Services (AWS)". @sminnee I love that you're looking for an improvement to avoid the reoccurrence of this fouling. Did you get a sense that some process improvement will take place? Either what you recommended, or, something else? |
While we're still working with various service providers here, I wanted to share that curl's ca-certificates package released today, also removing these certificates. As a result, I expect pressure to accelerate for service providers to take action. |
@alex what do you think about this to avoid users of this package being on the bleeding edge in the future?
|
I don't have a strong view one way or the other. Perhaps using Mozilla's beta train is a sensible compromise. (In any event, we need to update for Mozilla's migration to git) |
Fair enough, yeah, that would be the this URL: Or on github: I could raise a PR that fetches from the github URL if you want? |
Sure, that sounds good.
…On Mon, May 26, 2025 at 12:35 AM Sam Minnée ***@***.***> wrote:
*sminnee* left a comment (certifi/python-certifi#349)
<#349 (comment)>
Fair enough, yeah, that would be the this URL:
https://hg-edge.mozilla.org/releases/mozilla-beta/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txt
Or on github:
https://raw.githubusercontent.com/mozilla-firefox/firefox/refs/heads/beta/security/nss/lib/ckfw/builtins/certdata.txt
I could raise a PR that fetches from the github URL if you want?
—
Reply to this email directly, view it on GitHub
<#349 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAAGBGEG7JZKWIFW3OJYXD3AKK27AVCNFSM6AAAAAB35WUKI6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSMBYGQ4TIOJZGM>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
--
All that is necessary for evil to succeed is for good people to do nothing.
|
I'll raise an issue on mkcert first and see if they're interested in changing it upstream. Otherwise the change will be more involved Update: it looks like Lukasa is happy to make the change there, so no need to change this repo. We're set it to beta initially. |
this request worked in 2025.01.31 but fails in 2025.4.26:
https://api.hbdm.com/api/v1/contract_contract_info
The request works in Firefox/Chrome.
The text was updated successfully, but these errors were encountered: