New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 603104 link

Starred by 3 users

Issue metadata

Status: WontFix
Owner: ----
Closed: Apr 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Feature



Sign in to add a comment

Allow forcing to pass net::ERR_CERT_* errors in chrome.socket.tcp

Reported by jarro...@gmail.com, Apr 13 2016

Issue description

UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2700.0 Safari/537.36

Steps to reproduce the problem:
1. Install current version. 
2. Make a connection to the SSL page that have cert problem (e.g. https://expired.badssl.com/ - cert is expired)

What is the expected behavior?
To be able to see the response.

What went wrong?
There is a network error.

WebStore page: https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

Did this work before? Yes When the app was deprecated legacy app.

Chrome version: 51.0.2700.0  Channel: stable
OS Version: ubuntu 15.10
Flash Version: Shockwave Flash 21.0 r0

I'm an author of the advanced rest client app. The app helps developers to debug restful services. Recently I've upgraded the app to Chrome App. In new version I wrote a HTTP client implementation on chrome.sockets.tcp API so the app have hull control over request/response. However the app stopped working on secured connections which is a huge use case in this kind of app.

Previously the app worked when the user accept the invalid certificate in new tab (Advanced -> Proceed to xxx). Now it is not working and users reported many issues related to it. It would be great if there would be an option to allow ignore certificates errors when securing a connection. Maybe as an additional permission in manifest? Eventually the user should allow make an insecure connection when using the app as he can in regular tab. It could prompt him to ignore cert error when error occur. 

Or maybe there is any other way to do it that I'm not aware of?
 

Comment 1 by b...@chromium.org, Apr 13 2016

Components: Security
Labels: -Type-Bug Type-Feature
Cc: rdevlin....@chromium.org
Status: Untriaged (was: Unconfirmed)
rdevlin: This is working as intended/intentionally designed when we exposed the socket API (further context: read http://crypto.stanford.edu/~dabo/pubs/abstracts/ssl-client-bugs.html )

I'd like to close explicitly as WontFix/WAI, but I'll let you make the call. Expect much pushback though if that isn't the case ;)
Cc: xiy...@chromium.org rpaquay@chromium.org
I'd be inclined to agree.  I'm cc'ing some other folks who may have opinions, but I'd say this is WAI.

rpaquay@ - sockets API OWNER
xiyuan@ - chrome apps input

Comment 4 by jarro...@gmail.com, Apr 13 2016

How do I implement certificate pinning in this case? So the user could enter public key of the server so he is allowing the app to connect to the server.

On the other hand, you are making it possible in Chrome to the user to open a tab with invalid certificate. So when the user accept the risk he can proceed. I'd like to see a similar behaviour for apps.

I realize that this may affect really small amount of apps but it's huge use case for my app and in case of debugging restful services it is affecting huge amount of people. Only my app is used by over a million users. Another app - Postman - that could use this as well - another million users. Just take it into account.

Comment 5 by xiy...@chromium.org, Apr 13 2016

I am inclined to agree this is a WAI as well.

The app in question is a development tool. I don't see why developers have to talk to servers with bad certs. Would adding "--allow-insecure-localhost" to Chrome command line and binding test servers to localhost work around the problem?

Comment 6 by jarro...@gmail.com, Apr 13 2016

Partially maybe it is a solution. However in case when developers use some  server in local network with FQDM (like https://dev.api.app.com) it won't do much.

I agree that developers should use valid certificates and I don't really care about the ones who are using for example expired certificates. But in case of self-signed certificates - that I can imagine is very common - I have no reason to prohibit them of using it. 

I would instruct the users to setup new profile and run it with '--ignore-certificate-errors' flag but I tried it and it's not working. I'm not sure if this flag working though. 

re: Comment #4: Implementing certificate pinning doesn't require the ability to override errors, it requires the ability to override non-errors and inject an error. We have had high-level talks about how an API might look, but that's not currently prioritized or planned, and there's different security tradeoffs about Apps vs Extensions. Given the interaction that Extensions have with the rest of Chrome networking, I think it will be extremely unlikely such an API would be exposed to them, and until some bugs are fixed with how Apps handle networking/socket pools, it's not likely to happen for Apps either.

As mentioned earlier, the ability for Apps (or Extensions) to override SSL errors leads to a whole host of security issues. While we can totally understand the desire, we also want to avoid encouraging insecure practices, which such an API inherently does.

We're aware that this limits certain kinds of apps from being viable. For example, IMAP servers that serve invalid certificates (as many do) prevent a Chrome App from being an IMAP reader. The solution to that problem is to obtain a valid certificate.

Even for debugging/diagnostic purposes, services such as LetsEncrypt or StartSSL offer viable paths to get trusted certificates for your testing/diagnostic needs, without requiring any security-harming flags or APIs. With such services, even the need for self-signed certificates is not a concern.

Also, note that --ignore-certificate-errors is a flag that (intentionally) does not have global effect, and is not meant to address your use case. There are no plans to expand on the ability to use the command-line to override SSL errors.

Comment 8 by jarro...@gmail.com, Apr 13 2016

Thank you for very detailed answer. I totally understand.

I guess my work now is to educate and promote good practices among my users which I think is quite important.
Status: WontFix (was: Untriaged)
per discussion, closing as WAI.

Sign in to add a comment