Allow forcing to pass net::ERR_CERT_* errors in chrome.socket.tcp
Reported by
jarro...@gmail.com,
Apr 13 2016
|
||||
Issue descriptionUserAgent: 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?
,
Apr 13 2016
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 ;)
,
Apr 13 2016
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
,
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.
,
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?
,
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.
,
Apr 13 2016
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.
,
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.
,
Apr 16 2016
per discussion, closing as WAI. |
||||
►
Sign in to add a comment |
||||
Comment 1 by b...@chromium.org
, Apr 13 2016Labels: -Type-Bug Type-Feature