The opensource Forge project might be able to help. It was created to help solve this problem: securely accessing Web-based applications without requiring the user to deal with self-signed certificate warnings, etc.
The Forge project:
http://github.com/digitalbazaar/forge/blob/master/README
A blog post talking about the issue and how Forge can be used to solve it:
http://blog.digitalbazaar.com/2010/07/20/javascript-tls-1/2/
The gist of it is this: Forge provides two ways for your users to avoid having to deal with certificate warnings. However, both of them might require some engineering on your end that may or may not involve more work than you think its worth.
Method 1: Your can have your users access the application running on localhost via an SSL-protected website (not locally, but via a domain on the web). To enable this to happen, Forge tunnels SSL through Flash, which can do cross-domain requests. The details of this are abstracted away from anything you would have to add to your application. Your users would all go to the same website, which is convenient and perhaps easier for them to remember than "localhost:12345", and download some JavaScript. That JavaScript would then do SSL cross-domain requests to "localhost:12345" to display the interface. Here's the re-engineering part ... if your web-based application doesn't already use ajax to update its content and display its interface, then you would need to change it to do so. This is because all of the cross-domain and SSL magic happens via JavaScript. The other part you would need is the ability for your application to upload and store the self-signed certificates it generates to the server your users access. This way it can be included as a trusted certificate when they access the website and download the JavaScript. This method ensures secure traffic to the application running on localhost without the annoying security warnings.
If you don't already have an SSL-protected website, or don't want to pay for one, then method #2 might be more attractive.
Method 2: This method is slightly less secure but shouldn't be a huge security risk since the application is running on localhost. This method is also quicker to implement. In this method, you load the Forge JavaScript from the localhost server, along with the certificate that is to be trusted. From that point forward, the Forge JavaScript makes https calls to display the interface/interact with the application. This means that the same ajax interface changes will still need to be made as in #1, however, no system must be set up to store self-signed certificates (or similar). Again, the drawback is that the certificate to be trusted and the Forge JavaScript are originally loaded over an insecure connection. However, that connection is to localhost so it is somewhat less of a concern than if it were loaded over the internet.
So there isn't zero work involved here, but depending on the complexity of your application or how you've already written it, it might not be that difficult. And, once its done, your users should have a much smoother experience (without any extra instructions for accepting certs).