TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Web Security – Client side certs

91 pointsby rvernover 9 years ago

12 comments

mikegioiaover 9 years ago
Our development server at work is authenticated using client-side certificates that I install on every employee&#x27;s computer (along with our Root CA cert). This takes me about 5 minutes to generate for them [1] and another 2 minutes to put into their OSX keychain. It&#x27;s fun to sit there with each person and show them what I&#x27;m doing and how this wonderful system works.<p>But if I asked ANY ONE of them to do ANY step along the way, they&#x27;d throw their hands up and quit. My brother who is extremely tech competent can&#x27;t do this. I like these suggestions but I just don&#x27;t know fundamentally if this system can be used by people without a drastic overhaul to the UI.<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;TeachBoost&#x2F;pki" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;TeachBoost&#x2F;pki</a>
评论 #10798286 未加载
评论 #10800155 未加载
评论 #10798211 未加载
评论 #10798972 未加载
vbezhenarover 9 years ago
Actually there&#x27;s not a lot of work for browsers to do. Polish UI, make &quot;logout&quot; button, provide JS API, allow apps to handle errors better. Actually they should provide JS API to work with standard security cards and that will help to extinguish Java Applets from a lot of places. Not a lot of work, but it might start new era of web security.<p>I always wondered, why password-bases authentication is so prevalent, when asymmetric cryptography is there and actually used under the hood. That&#x27;s a dream: one key to rule them all and no security problems with leaked accounts, unified UI to register, login, logout.
评论 #10805240 未加载
basculeover 9 years ago
There&#x27;s a fundamental problem with client certs as currently implemented in browsers as well as the &lt;keygen&gt; tag: these certificates aren&#x27;t origin-bound and violate the same-origin policy.<p>The method of authorizing client certs without using the same-origin policy is the source of the horrible UX problems: ask the user (often without a &quot;remember this choice&quot; checkbox, so users were asked every session)! Determining which certificate to use can be difficult depending on the subject&#x2F;issuer, and in general this is a terrible choice to ask a user to make.<p>The problem gets a <i>lot</i> easier if you use origin-bound certificates:<p><a href="http:&#x2F;&#x2F;www.browserauth.net&#x2F;origin-bound-certificates" rel="nofollow">http:&#x2F;&#x2F;www.browserauth.net&#x2F;origin-bound-certificates</a><p>With origin-bound certs there&#x27;s a clear and unambiguous answer as to what cert to use for a given origin by-design. These certs can either be dynamically provisioned in a browser or device-locked to e.g. a Yubikey U2F token. There&#x27;s no need to ask the user anything more than to push the button on their hardware token if they have one. Otherwise the process is completely automatic.<p>I really don&#x27;t think efforts to use in-browser client cert authentication that don&#x27;t respect the same-origin policy are going to get anywhere because of this problem.
newscrackerover 9 years ago
If this has to take off, even with browsers providing an easier UI to create and manage client side certificates, two things would be important to avoid confusing users and a lot of &quot;&lt;insert browser name here&gt; is crap and broke my login&quot; messages:<p>1. Easy sync of the certificates across devices (as mentioned in the article, allow the user to choose which ones to sync). Most (non-tech-savvy) people still don&#x27;t use password managers, and instead remember or write down passwords. You have to make it easy for these people to use multiple devices without having to jump through hoops. Even private keys protected by a passphrase&#x2F;password add one more barrier (assuming each user has a separate OS account and is logged in). How would a user setup a new device with a previously setup client certificate? What fallback mechanisms (other than form based user&#x2F;password auth) would be required for cases where a user wants to use a public computer or a shared computer account?<p>2. Handling the reissue of client side certificates for the expiring&#x2F;expired ones along with revocation (if&#x2F;when necessary). I believe this is a huge topic by itself on both the usability and security fronts. What would be the sweet spots for the expiry enforced for a particular site? Six months? One year? Two years? Ten years? Considering that most users in the current form based authentication scheme rarely change passwords, the convenience, or rather, the reduction in annoyance to end users, should be an important consideration.<p>I have seen client side certificates used in corporate environments where the management of these is easier, but even in those cases I have always seen alternatives like form based authentication available, along with other things like NTLM, etc.<p>Please comment&#x2F;inform if any&#x2F;what prior work has been done in these areas (I&#x27;m sure many people must have thought about these).
评论 #10798027 未加载
pilifover 9 years ago
Back in 2008 I have blogged (<a href="http:&#x2F;&#x2F;pilif.github.io&#x2F;2008&#x2F;05&#x2F;why-is-nobody-using-ssl-client-certificates&#x2F;" rel="nofollow">http:&#x2F;&#x2F;pilif.github.io&#x2F;2008&#x2F;05&#x2F;why-is-nobody-using-ssl-clien...</a>) about client certs. The UI around them is horrendous and they also serve as a very good solution to uniquely identify clients across sites. This was a good idea, but in its current implementation it&#x27;s unusable.
评论 #10797417 未加载
z3t4over 9 years ago
One problem is that keygen is either deprecated or not supported. So you have to create the client cert on the server, then have the user download it (including private key). Or the client has to create a signing request and then upload it to the server, and then download the certificate.<p>Once that is done though, client certificates works pretty well, the browser will pop up a &quot;what certificate to use&quot; dialog when entering the web site. And the server (nginx) will send all the details like name, city etc to the web-server application.<p>Another problem vs passwords, is that the user has to copy or download the certificate to each computer device. And just like passwords, you need to have a process for identifying the user in case he lose the certificate&#x2F;key.
评论 #10798148 未加载
rdlover 9 years ago
Mobile browsers&#x2F;devices handle client certs better than any desktop I&#x27;ve seen. Especially since they have hw trusted storage.<p>The issue is identity&#x2F;linkage. If they let you set up an arbitrary number of keys, so you could do one per site, that&#x27;s fine (and really, if you use the same username everywhere it&#x27;s sort of the same thing)
Freak_NLover 9 years ago
Good set of recommendations. Client-side certificates are great for securing web applications in a corporate setting, but the client-side is indeed a bit rough in the UI — although once set-up, it is no hassle at all.<p>A major benefit of client-side certificates, is that you can increase the security of all internet-facing web applications you have by routing all external traffic through a gateway proxy, and performing the certificate check there. We use Nginx for that, and host applications such as GitLab, MatterMost, OwnCloud, and DokuWiki that way (performing authentication with LDAP so users can log in with the same credentials on all services).<p>I&#x27;m not sure I agree with his suggestion of having the ability to automatically synchronize client-side certificates between devices. I would rather have that be a conscious (security) choice rather than an automatic feature.
评论 #10798093 未加载
bblfishover 9 years ago
Actually creating client side certificates is quite easy if you use the &lt;keygen&gt; tag. See <a href="http:&#x2F;&#x2F;www.w3.org&#x2F;2005&#x2F;Incubator&#x2F;webid&#x2F;spec&#x2F;tls&#x2F;#certificate-creation" rel="nofollow">http:&#x2F;&#x2F;www.w3.org&#x2F;2005&#x2F;Incubator&#x2F;webid&#x2F;spec&#x2F;tls&#x2F;#certificate...</a> Sadly some browser vendors have been threatening to remove that functionality rather than trying to improve it. But see the work by the Technical Architecture Group There is also this document now produced by the TAG. <a href="https:&#x2F;&#x2F;github.com&#x2F;w3ctag&#x2F;client-certificates" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;w3ctag&#x2F;client-certificates</a>
评论 #10798107 未加载
uptownover 9 years ago
We&#x27;re using client certs for some mobile sites. But it hasn&#x27;t been an ideal experience. Has anybody else experienced a problem where Android prompts for selecting which cert to use for a given site every time? iOS seems to remember which one to use for a specific site, but Android prompts EVERY time. I can&#x27;t tell if it&#x27;s just something misconfigured, or if its just the behavior of the OS by design.
elchiefover 9 years ago
There&#x27;s almost no point of client certs for consumers without smart cards. Malware can steal your certs. People lose them or delete them or don&#x27;t sync them.<p>Can we not devise a system to use our existing bank cards (with chips on them) to store client certs too?
评论 #10799028 未加载
评论 #10799263 未加载
aSp1deover 9 years ago
This is interesting , to use cross device there needs to be a vault of some kind to share btw browser would it make sense to have a recommendation for that also , so it would be standardized ?
评论 #10797878 未加载
评论 #10797128 未加载