-
Notifications
You must be signed in to change notification settings - Fork 3.2k
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
3.5.0 Error: write EPROTO 3343909432:error:100000f0:SSL routines:OPENSSL_internal:UNSUPPORTED_PROTOCOL:../../third_party/boringssl/src/ssl/handshake_client.cc:569: #5446
3.5.0 Error: write EPROTO 3343909432:error:100000f0:SSL routines:OPENSSL_internal:UNSUPPORTED_PROTOCOL:../../third_party/boringssl/src/ssl/handshake_client.cc:569: #5446
Comments
@natkrish Thanks for opening an issue. Without a reproducible example, this issue will take longer to fix without this because we have to find the exact circumstances this fails. Could you provide any more details surrounding your project and this test.
|
@jennifer-shehane thanks for your response. I understand that its not possible to reproduce without a working example - may be when i get sometime I will try and do a simple example.
Yes
Yes I use it but with no options. But i wasn't executing that test.
Yes I use it but with no options. But i wasn't executing that test.
I am not sending cy.request();
Nope
https:
not really |
I was able to run the same tests in 3.4.1 with success. But with 3.5.0 its not even trying to open the url. |
Sorry @natkrish, I assumed this was an error from a |
Yes it is happening when i start my tests with cy.visit('/') - and I have set up the base url in cypress.json |
I upgraded to 3.4.1 and I'm having the same issue |
We had a similar issue with certain certs that was a result of a bug in the version of OpenSSL bundled with Node in 3.4.1. Updating Node should've fixed that. We also updated Electron from 2 to 5 in 3.5.0, and in Electron 4, they switched from OpenSSL in Node to You can see issues with @natkrish @itsnathandaily Can one of you share a URL that shows this behavior when |
@flotwig - unfortunately, its not possible for me to share the url reason being I was using our internal test environments which works fine with 3.4.1. That site pretty much looks similar to this one - so may be you can use it to test cy.visit(). https://onlinedoctor.lloydspharmacy.com/ |
@natkrish I tried running this test, and it works: it('', () => {
cy.visit('https://onlinedoctor.lloydspharmacy.com/')
}) Is there a difference in how you generate certs for production and development? It could be some weird cipher suite or option you're using in your development certificate conflicting with Electron. |
I have this problem. this case maybe CA is old. Chrome can show “Your connection is not private“ Warning in new version. "chromeWebSecurity": false in cypress.json this setting is not work, how to miss this warning?? @jennifer-shehane |
@GarthyCheang Are you talking about this? ^ That's normal, that's just there because Cypress uses it's own CA to intercept HTTPS traffic for tests. |
@flotwig yes! Cypress show network issue, and then can't testing the app |
@flotwig @jennifer-shehane After updating cypress to 3.6.0 version i no longer get this issue anymore. Hence closing this ticket for now. |
I still have this issue even on "cypress": "3.6.0", and Chrome 78 (Electron 73 and Chromium 78 have the same)
The certificate for my site was generated via https://github.com/FiloSottile/mkcert |
I am having the same issue. (3.6.0)
|
Reopening since people seem to still be having this issue. |
@Mkots I tried to use mkcert to generate a cert that would reproduce this issue, but couldn't get Electron to throw the unsupported_protocol error even with a mkcert cert. Can you please check out my repo and let me know what the difference is between my |
For anyone experiencing this issue - if you can try running your tests with debug logs enabled, and share those logs here, it will show some more information which we can use to get to the root of the issue.
Make sure to scrub any private data from the logs before sharing here. |
+1 it happens when visit self-signed certificate website. |
Same here in 3.6.1 Common situations why this would fail:
The stack trace for this error is: RequestError: Error: write EPROTO 140723175747320:error:100000f0:SSL routines:OPENSSL_internal:UNSUPPORTED_PROTOCOL:../../third_party/boringssl/src/ssl/handshake_client.cc:569:
|
@jennifer-shehane I think this is still an issue on my side too with version 3.7.0. The good thing is it doesnt throw this error when running local but happens when running it on jenkins. |
@flotwig Sorry for the late reply, now I can't reproduce this behaviour, I think this error was connected with my environment, unfortunately, I don't know any concrete causes |
@jennifer-shehane @flotwig I think this issue is still happening on 3.8.0 unfortunately. |
can someone help me with a solution for this issue please? At the moment, i had to downgrade it to 3.4.1 due to this error and i am losing a lot of good features as a result of this. |
Still looking for DEBUG logs from anyone experiencing this issue:
It is probably a result of incompatibility between Electron and certain SSL configurations. |
After reading what @cjones2-sandia said about TLS versions, I pointed our Cypress tests to another internal site that uses TLS 1.2 and the tests worked fine. Pointing them back to our normal development server which only supports TLS 1.0 and the tests fail with the error here. I also believe that the issue has something to do with the TLS version. I've asked our devOps team to upgrade our development servers and will report back if things start working when they do. |
The openssl output I received from @natkrish also used TLSv1, I also suspect that using TLSv1 could be what triggers this bug. I am still trying to create a TLSv1 server to reproduce this issue, I attempted to write one in Node.js but it does not work. I suspect I will have to use My non-working repro code: const https = require('https')
const cert = require('https-pem')
const port = process.env.PORT || 12345
const server = https.createServer({
maxVersion: 'TLSv1',
...cert
}, (req, res) => {
res.setHeader('content-type', 'text/html') // required by Cypress cy.visit
res.end('foo')
})
server.listen(port, () => {
console.log(`listening at https://127.0.0.1:${port}`)
}) |
@flotwig What you had was real close! I was able to reproduce the error with this node server: const https = require('https')
const cert = require('https-pem')
const port = process.env.PORT || 12345
const server = https.createServer({
//secureProtocol: 'TLSv1_2_server_method',
secureProtocol: 'TLSv1_server_method',
...cert
}, (req, res) => {
res.setHeader('content-type', 'text/html') // required by Cypress cy.visit
res.end('foo')
})
server.listen(port, () => {
console.log(`listening at https://127.0.0.1:${port}`)
}) Run it as is and then hit with cy.visit(), you'll see the error. Then swap the secureProtocol setting to use TLSV1.2 and run the same cy.visit() and page loads successfully. |
@flotwig do you think a fix is possible or should this be reported upstream? Will be good to know who is responsible for fixing this so that I can make some decisions regarding staying put with 3.4.1 (this is the only cypress version which works with TLS1) |
@fourthmeal70 Nice, got it working. I notice that I get this error:
Which is different from the error in the OP, which was:
So I wonder if this is actually an accurate representation of the real issue. Still, we can fix the
@natkrish See above - we can fix the You can pull down my PR and see if it does indeed fix your issue, that would be super helpful: #6130 |
@flotwig definitely I will it pull it down and report back either tonight or tomorrow AM. Thanks so much for this investigative and fixing work. Much appreciated. Hopefully it will work. Fingers crossed! |
@flotwig Good catch! I was just excited that an error appeared.. obviously I didn't look closely enough at it haha. Anyway, I pulled down your PR and tested on my end and everything appears to work! 🎉 |
@fourthmeal70 if you don’t mind can you let me me know the steps that you took to do a pull down? Sorry this is my first time with PR stuff hence asking. |
You should just be able to clone the repo, checkout my branch, git clone https://github.com/cypress-io/cypress.git
cd cypress
git checkout issue-5446-tlsv1-fix
npm i
npm run cypress:open # same as `cypress open`, use `cypress:run` if you want to test `cypress run` |
@flotwig thanks. Working on it. Will let you know shorltly |
@flotwig Yessssssssssssssssssssssssssss I can confirm that it is now working with your fix in place. 👍 |
Awesome, thanks for checking! Will work on getting this merged and released. |
@flotwig Thanks so much. Looking forward to it. |
@flotwig how long will it take for cypress to release the next version with this bug fix? |
@natkrish it should be in 3.8.3 which is scheduled for next Friday |
The code for this is done in cypress-io/cypress#6130, but has yet to be released. |
Released in This comment thread has been locked. If you are still experiencing this issue after upgrading to |
Current behavior:
I upgraded my cypress version from 3.4.1 to 3.5.0. All my tests were working fine on 3.4.1 but when running on 3.5.0 - I get errors see attached screenshot.
Desired behavior:
I should be able to run my tests without any problems.
Steps to reproduce: (app code and test code)
Unfortunately, I dont have the time to create a dummy project just for this issue. I am sure its to do with version 3.5.0. Please fix it ASAP
Versions
Cypress : 3.5.0
OS: Windows 10
Browser: Chrome 77
Node: 11.7.0
The text was updated successfully, but these errors were encountered: