I'm building a service that is basically a decentralized Amazon.

Basically, each seller hosts a copy of the site, at their own IP address, and accepts (bitcoin) payments using a self-hosted bitcoin wallet that I made for this purpose.

My difficulty is this: I don't want to force every single one of these nodes to buy their own TLS certificates, but I still need the requests to be encrypted. Would self-signed certificates work for this situation?

If they wouldn't work, what options do I have?

  • You cannot force security on your sellers - each one is going to have to be responsible for their own store. This is why services like Amazon exist: to take care of these infrastructure problems for the vendors. Can I ask why you require the requests to be encrypted? – schroeder Apr 10 '15 at 21:32
  • There are password fields, and each seller can receive bitcoins, so I'd of course prefer that to be encrypted. I should also mention that every seller hosts the ENTIRE store, not just their own. – thouliha Apr 10 '15 at 21:50
  • letsencrypt.org is an option. – Deer Hunter Apr 10 '15 at 21:51
  • @schroeder These websites would definitely need to be encrypted since an attacker could modify pages across an unsecured connection (ex. changing the bitcoin payment address to his/her own) – Aron Foster Apr 10 '15 at 21:51
  • @DeerHunter I'd love to use letsencrypt, but it hasn't launched yet – thouliha Apr 10 '15 at 21:53

From your description at this query at stackoverflow I get the information, that all customers will use their browsers to contact these sellers.

When you only use self-signed certificates or use your own CA for the sellers each of these customers must explicitly add an exception (or your CA) to their browser. And of course they should not just trust anybody claiming to be the seller, so they need a way to verify the certificate using an independent way before accepting the exception, like a written letter from you with the certificates fingerprint.

Of course this does not scale. Also lots of customers will probably refrain from using this service, because of all the hassle and the perceived (and maybe real) insecurity.

|improve this answer|||||
  • Is there no way for this to work then? Every seller has to buy their own SSL cert? – thouliha Apr 10 '15 at 21:47
  • Correctly. Every seller has to identify its server by using a trusted certificate. This can either be done by buying a certificate from a CA which is already trusted by the browser or by creating your own certificates. But in the latter case their is no pre-established trust so you have to convince each of your potential customers that they should add the specific seller explicitly as trusted, which is usually not the way to get lots of customers. Compared to these efforts buying a certificate is cheap. – Steffen Ullrich Apr 10 '15 at 22:03
  • I'm not sure if this will work for my case. This is decentrally hosted, meaning many IP addresses are running the site. – thouliha Apr 10 '15 at 23:14
  • 1
    It's not a question of IP but of hostname. If these are all subdomains of a single domain then they could share a wildcard certificate. Of course if these are all independent resellers then they should not share a certificate because they should not share the private key for security reasons. – Steffen Ullrich Apr 11 '15 at 6:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.