Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
The modern HTTPS world has no place for old web servers (utcc.utoronto.ca)
339 points by dredmorbius on May 13, 2020 | hide | past | favorite | 450 comments


Prior to last year's release of macOS Catalina, OS X shipped with a Dashboard widget to display the weather forecast. In 2019, Apple broke this widget by turning off the servers it used.

Luckily, Dashboard widgets are just editable html and javascript files, so I rewrote a portion of Apple's weather widget to use the DarkSky API instead. Since the entire point of this project was to support a legacy feature (the Dashboard), I really wanted it to work on the full gamut of OS X 10.4 Tiger – 10.14 Mojave.

My modified version worked fine on 10.9 and above, but on 10.4 – 10.8, users reported being unable to retrieve any weather data. After some back and forth of looking at logs, I found the problem—old versions of OS X didn't support the modern iteration of HTTPS required by DarkSky. I couldn't fix this, because DarkSky doesn't offer their API via HTTP.

Was this really necessary? Weather forecasts are public information, so what level of safety is provided by HTTPS to the point where it should be not just a default, but the only option for developers?

(Luckily, I had the chance to rectify this when Apple bought DarkSky and forced me to change APIs. I'm now using Weatherbit, which offers HTTP. I would have preferred to use HERE, but like DarkSky, they're HTTPS-only.)

https://forums.macrumors.com/threads/i-fixed-apples-broken-w...


> Weather forecasts are public information, so what level of safety is provided by HTTPS to the point where it should be not just a default, but the only option for developers?

Even if it's public information, you should protect against an attacker modifying the payload to exploit a weakness in your browser/application, and to protect against any any other kind of unauthorised modification of the payload. (I see Cthulhu_ already mentioned this.) We've discussed the non-obvious advantages of HTTPS before. [0][1] There's a reason Netflix encrypt video streams. I agree it's probably not worth breaking existing applications to encrypt the weather data, but it's worth doing going forward.

[0] https://news.ycombinator.com/item?id=22933774 (Forgive me linking to my own comments)

[1] https://news.ycombinator.com/item?id=21912817


Fetching a weather forecast reveals that I was in a certain location. Depending on circumstances, that could easily be incriminating evidence. Yes, Dark Sky should be HTTPS by default.


Also could imply where you're going to. Looking up the weather in London (if I don't normally) almost certainly entails a trip.

This is pretty deep down the threat modeling hole though, and no, normal people don't need to care about this.


What, you don't bombard weather APIs with dummy requests about random cities so as to obscure where you might be going?


When baseball season is actually occurring I will sometimes look up weather in a half dozen cities around the country to get an idea of which games might get rained out. Not exactly the same thing but I'm not actually traveling to any of them.


Normal people don't even know what HTTPS means!


That's why we like to use it everywhere: to protect the people who didn't know they needed protection.


Yeah, +1, what I meant to convey too :)


HTTPS does not encrypt the source and dest IP of your packets, right? So HTTPS can't hide who you are and what APIs you're talking to.


The IP of my phone connecting to the IP of Dark Sky is much less precise than the request for GPS coordinates to get block level weather data (the Dark Sky website uses 12.345 digits, so is accurate to block level).


This is where the arguments start to get a bit silly. If the authorities are trying hard enough to find you and your phone is on, the network it is attached to can probably locate you very accurately under most conditions already.

HTTPS is useful, and it should normally be the default for web traffic potentially crossing any untrusted network, but let's keep it in perspective. It's an application layer protocol. It can't protect you against attacks at lower layers.


It's not authorities, anyone setting up a router can peek into this information, and more importantly, tamper with it.

Remember Upside-Down-Ternet? [1]

[1] http://www.ex-parrot.com/pete/upside-down-ternet.html


Right, which is why I said HTTPS should be the default for web traffic potentially crossing any untrusted network.

But who is going to set up a hostile router in an office of five people? Or in someone's home?


Google will put a router in a coffee shop and log everyone who walks by. :-)


Correct. TLS-wrapped protocols don't seek to offer anonymity of the source and destination. They're designed to protect the confidentiality and integrity of data in transit. The best tools we have for anonymity are things like onion routing.


Yeah, I regularly ask clients to drop TLS support for their public-facing API's that aren't consumed by the browser. These are the same clients that shared a public-facing FTP server to partners to allow them to retrieve catalogue's of prices and product descriptions.

The admin of having to rotate keys and help customers with their TLS and SSL related problems (which is many in Enterprise, Java 5 and 6 is fucking rampant still) just isn't worth it.

Yes, someone could MitM the connection. Do we care? No. The data has very little consequences if it's corrupted.


Maybe you have to include a secure access key with every request? Maybe DarkSky sets a cookie that they do not want anyone to be able to intercept or manipulate?

HTTPS by default is good, because you don't know what could go wrong. What if there's a security vulnerability in the dashboard widget that someone who can intercept and manipulate the response can abuse?


Correct, for DarkSky the API key is embedded in the request URL [0]. Their pricing is generous (1000 requests/day are free, after than $1 per 10,000 requests) but there is definitely the risk that traffic over HTTP could have the URL sniffed, and then be used to make charges on that customer's behalf.

0: https://darksky.net/dev/docs


I agree. I treat cyber security a lot like physical security.

"Always lock your front door" is good advice, just like "always use https" is good advice. But I'm not going to lock and deadbolt my door if I'm only walking out to grab something from my car and returning immediately.


The issue is that an MITM attacker can modify the traffic between client and server if it's not protected by HTTPS.

They could include a script tag and then run JS in the context of the widget which may have undesirable effects.

If the traffic is traveling over a connection you aren't 100% sure you control entirely, wrap it in HTTPS.


I can confirm this 100% with Charter / Spectrum. They use MITM to alter HTTP content to display their TOS you have to agree to in order to stop redirecting the content.

The only workaround is to use a VPN since so many servers still have not moved from HTTP to HTTPS.

Tech support states unless I accept the agreement this will not stop and may connection will be disconnected which is complete BS since HTTPS prevents this from working properly!

So yes, even ISPs are bad actors when it comes to HTTP.


I use Spectrum at home, as do my grandparents, and in neither case have I ever seen that happen (and I do access at least a couple non-HTTPS sites every once in awhile). Was that recent?


That's not a concern for a REST API where you are just grabbing and parsing json data. Even if someone injects some code into the result, it just gets parsed as a string and the worst thing that happens is the widget displays the wrong thing.


Fine so they modify the a field in the object, the point made was that you don't want to ingest anything other than what which is provided by the expected and hopefully trusted author.

Yours was a facetious point to make. Potential worst case scenario in this example may be that someone thinks its the wrong temperature, but normalising and arguing against the use of secure protocols is stupid and dangerous.


I'm not arguing against security. I literally said that using https is a good idea.

The point I'm making is that security always comes at a cost, and sometimes it just isn't worth it. In the OP's example, using https literally breaks the application. Whereas switching to http has very little downsides. So while https should be seen as the default, it makes sense to use http sometimes.

Do you use full disk encryption on every machine you use, with a separate TFA key for every device? Do you have bullet proof windows and a reinforced steel door? Have you purchased and set up a commercial firewall for your home network?

You can always increase security. Where you draw the line depends on you and your application. Throwing out all nuance because "you must always use $SecureThing at all costs" is just not helpful.


> the point made was that you don't want to ingest anything other than what which is provided by the expected and hopefully trusted author

What you actually said went quite a bit further than that. You outlined a scenario that involved arbitrary code execution.

> Yours was a facetious point to make.

"Facile", maybe? Even with that correction, the point was not facile—after all, it forced to you walk back from the original picture you painted of an RCE to a place where someone may get told there's going to be a mid-summer blizzard.

https://rationalwiki.org/wiki/Motte_and_bailey


Until somebody finds a vulnerability in your JSON parser or other layers of your stack. :)


There are inherent, unfixable vulnerabilities to a weather app, such as divulging location information and possibly travel patterns.


If you request weather info for a large range of locations at once - the k-Anonymity that HAVE I BEEN PWNED uses - you could prevent this at the cost of increasing response size dramatically

https://www.troyhunt.com/ive-just-launched-pwned-passwords-v...


I don't think that would help much. If my phone tries to get weather data for the prefix "66" and then "a9" and later "8d" and you correlate the cities together, you can be pretty sure I was driving around the Bay Area if the first list contains "Cupertino", the second "San Jose", and the third "Palo Alto".


I was thinking less around prefix matching and more around requesting enough data to where an observer couldn't tell what I was really interested in. If I requested 100 distinct locations in every state - 5000 total - you would know I was interested in the United States, but you would have a hard time determining where specifically.


But if the list from California always contained cities in the Bay Area that would be a bit suspicious.


It might be for this app but say the app displayed an image of the cloud cover. That image, from a MITM could be designed to exploit a know decoder bug (project zero just had a post about bunch they found in Apple's OSes). Browsers (or at least Chrome) run the image decompressors in the sandbox. Does Dashboard?


If the threat model is random exploits, they can still do that. Heartbleed etc have shorn that even the TLS stack itself can contain catastrophic vulnerabilities, so it's likely there will show up more in the future.


Or, maybe, just treat untrusted inputs as untrusted inputs and act accordingly. Wrapping it in encryption does nothing if the API provider gets hacked.


The other issue is that a certificate-based model of trust can be wielded by governments to censor the internet.

Unsecure http is essential to the free flow of information.

Let's get the right solution before we force everyone to use it.


Don't force anyone to use it. Both HTTP and HTTPS can be used, in addition to other protocols such as SMTP, NNTP, Gopher, Telnet, SSH, etc. To ensure to have free internet, to allow all protocols including if someone invents a new one, and including if someone uses non-standard port numbers for whatever reason, and including in both directions (anyone can act as a server or as a client or both).


If governments want to censor the internet, insecure protocols only make it easier for them.


Restricted devices (Most Android and iOS devices) that can only trust certificates that are ultimately controlled by the government is a far greater vector for censorship.

Devices that can be made to update on the whim of some corporation (which can be compelled by the government) are also not at all secure.

I don't consider my house secure if the lock company and the police have a skeleton key to my front door.

Open devices that can use open protocols are best. That is why they are trying to deprecate them.


That is correct. I have heard rumors that there are people at Google who want to wield their architecture to censor websites they disagree with. Essentially marking certain websites as malicious, solely because they don't want people to be able to view them.

I don't think it is at all far fetched. We've already seen domain registrars in the United States arbitrary delete domain names for purely political reasons that they made up on the spot. Why not revoke certificates from websites that they find objectionable?

It's not like most users would know how to force their device to connect anyway. On many Android devices, it is virtually impossible to force your browser to connect to a site Google doesn't want you to. But they've gotten this far because we trust them to only protect us from malicious sites.


It would be great if people could correct the record instead of just cowardly downvoting me. If I am presenting something that is untrue, please let me know.

Am I being paranoid for not trusting Google, Facebook or the federal government?


You bring up an interesting case.

On the one hand, we have matter of privacy - people presumably request the forecast for their present location, or their travel destination. This may be sensitive information, depending on personal circumstances.

On the other hand, we have usability - in the name of security, people got stopped from using a convenient feature. This seems pretty close to the trouble of planned obsolescence, and seems to be a somewhat common trend, of security running counter to usability and hackability (in the DIY sense).


I spend a lot of time playing with old Macs, and so I’m used to anything internet-related being broken due to TLS or defunct URLs. So, I was pleasantly surprised when installing Mac OS 9 one day that Apple’s NTP servers are still just as they were 20 years ago.


> the modern iteration of HTTPS required by DarkSky.

I don't follow. The TLS handshake negotiates the appropriate ciphersuite. With the exception of dropping SHA1 in TLSv1.3, how was the macOS SSL module not able to negotiate a handshake? There should be plenty of suites available. What did Darksky ask for in the TLS handshake???

For example: I'm still running Mojave, and here's what I see from the handshake with the Darksky.net site on :443 ...

:

:

issuer=C = US, O = Amazon, OU = Server CA 1B, CN = Amazon

---

No client certificate CA names sent

Peer signing digest: SHA512

Peer signature type: RSA

Server Temp Key: ECDH, P-256, 256 bits

---

SSL handshake has read 5538 bytes and written 439 bytes

Verification: OK

---

New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256 :

:

:

They aren't even using TLS1.3 on the main page.


Keep in mind that Mountain Lion is a lot older than Mojave. If I go to SSL labs and test DarkSky.net, it shows a "protocol mismatch" for Mountain Lion and older, which is exactly what I saw with the widget:

https://www.ssllabs.com/ssltest/analyze.html?d=darksky.net&s... (scroll down to "not simulated clients" and click "expand).

I don't actually understand that much about the internals of https, but my assumption is that there weren't any cipher suites supported by both DarkSky and Mountain Lion.


It's not cipher suites it's the entire TLS protocol version.

That site requires exactly TLS 1.2 (not newer or older)

So an HTTPS implementation like Mountain Lion that only speaks TLS 1.1 or earlier will begin by saying it can do TLS 1.1 and the server says too bad, go away.

TLS 1.2 was defined in about 2008 but despite that a lot of products shipped without TLS 1.2 implemented for the next several years, because backwards compatibility meant they still worked, and it didn't seem like a priority, while forward compatibility had frequently proved problematic. Why ship something "more secure" that breaks for 1% of your users?

For example Firefox only added TLS 1.2 by default in 2014, after Mountain Lion was shipped (but before it ceased to be supported).


Wow, that's really cool. Googling around it appears that Mountain Lion wasn't upgraded to TLSv1.2 so any website that upgraded to TLSv1.1 broke on pre-Yosemite. I didn't realize this. Very interesting.


> any website that upgraded to TLSv1.1 broke on pre-Yosemite.

Tiny addendum, what I saw was different by one version: DarkSky worked fine in Mavericks, just not Mountain Lion.


Could you have bypassed DarkSky’s TLS version requirements by proxying the API requests through Cloudflare or some other TLS forward proxy?


You can use a proxy, yes. The workaround I suggested to users on OS X 10.4 – 10.8 was to set up a web server with the following PHP file:

    <?
    header('Access-Control-Allow-Origin: *');
    $url = $_GET['url'];
    echo file_get_contents($url);
And then edit the dashboard widget's API request url to point to:

    http://theWebServer.com/thePhpFile.php?url=https://darkSkyURL
But, this required users to have access to a web server.

I very briefly considered setting up a public instance, but I'm not a professional web developer and didn't know what the implications would be, either for the overall security of my server, or in bandwidth costs, particularly if malicious users started using the "proxy" for other things. All of the client-side code is out in the open, so it also wasn't clear how I'd make an authentication scheme. I'm sure there's a way, but again, not a web developer!


I think the suggestion is to skip a web server at all and go "serverless" with Cloudflare Workers, which are free for up to 100,000 requests/day: https://workers.cloudflare.com/

If your Worker code hardcodes the Dark Sky domain, the worst an attacker could do is either use up your free worker quota from Cloudflare, or hammer Dark Sky at the Worker ratelimit (1,000/minute, which Dark Sky should easily handle).

AWS, Azure, GCP all also have free tiers for their serverless services. RunKit (http://runkit.com) might also work.

These are all likely to be HTTPS-only, but hopefully at least one of them supports TLS v1.1, rather than being 1.2-only like apparently is the problem with Dark Sky.


Serverless would work but my initial idea was more basic, simply a combination of something like:

A. DNS record (foo.example.com CNAME api.darksky.net)

B. TLS forward proxy (e.g. Cloudflare Full SSL https://www.cloudflare.com/ssl/)

C. Host header rewrite (e.g. Cloudflare Page Rules https://support.cloudflare.com/hc/en-us/articles/206652947-U...)


But someone could MITM your forecast and tell you it wasn't going to rain, leading you to get soaked for lack of wearing rain gear /s

I stopped using the Dashboard weather widget when I realized it was giving me the weather for Minneapolis, Kansas, because it was ignoring the state part of the location, and Kansas comes before Minnesota alphabetically.


> I stopped using the Dashboard weather widget when I realized it was giving me the weather for Minneapolis, Kansas, because it was ignoring the state part of the location, and Kansas comes before Minnesota alphabetically.

Huh, that's odd—it's absolutely programmed to look at city and state individually. I had to interface with that code in my version.

When I type Minneapolis into my version, it correctly displays both cities (alongside Minneapolis, NC) the drop-down, and lets me choose between them. I would have expected the original to do the same thing, but I obviously can't check now.


Sorry, I wasn't clear. This was back in 10.4 or 10.5. I remember seeing Apple had fixed it in a later version like how you describe.


Everyone who adds "certbot is EZ" comments: it makes you rely on a service. This is the very problem of certificates, because self-signed was never trusted and is not an option.

HTTP isn't supposed to rely on external services that can die, cut you off, block you, etc.

This is not a matter of how easy it is to align with the current browser dictated situation.

EDIT: LoTR typo (elf vs self) fixed.


On the other hand HTTP was supposed to allow everyone to author and distribute content, or perhaps only to some people. Much like any protocol, issues start to arise when it starts seeing adoption: credentials mustn't be divulged to anyone on the network, a client must be sure the content is genuinely from who authored it and no one else, middlewares are funking up with content on the way, etc...

HTTP alone doesn't serve its initial purpose at the large scale. That's like having a process for building homes out of dirt and hay, a totally viable way of doing your own house today, but it definitely won't be enough to house the 10 billion people of tomorrow.

The real alternative to provide what HTTP once wanted to provide, if not HTTPS (because of its reliance on points of contention), is in the decentralized web: dat, zeronet, ipfs ?


HTTP originally didn't have credentials. If your site had a WWW server installed, you just put a file in your ~/public_html/ directory, and there it was on the WWW. Like, you could literally put HTML on the web by typing two lines of text into your shell:

    mkdir ~/public_html/
    echo 'My Samoyed is <b>really</b> hairy.' > ~/public_html/index.html
There were no headers and thus nowhere to put credentials in an HTTP request. We trusted the network because we didn't give root to people we didn't trust.

If the people steering the dominant browser projects think that allowing everyone to author and distribute creative work is important, they'll keep supporting HTTP, and they might also direct effort to supporting dat, zeronet, ipfs, onion sites, and so on. If they don't think that's important, they probably won't do any of those things, even though, yes, the tradeoffs are a little different.

Since most of them are at Apple and Google, I think the iOS App Store and the Google Play Store probably represent the future of the web. I think that sucks but I don't know how to stop it.

As for adobe, it's pretty labor-intensive and slow as a way of doing your own house, and it doesn't work that well in very damp climates like Seattle. But there's no difficulty at all in scaling it up to 10 billion people, and indeed with compressed-earth brick presses, it might work better with modern industrial machinery than with the traditional North African craft processes that we now use all over the New World. There's plenty of suitable dirt and hay out there.


> If the people steering the dominant browser projects think that allowing everyone to author and distribute creative work is important

The answer is in the question: they're building _browsers_, to consume content but certainly not to create it or spread it. The last mainstream browser that did that (Opera) vanished a few years ago.

In fact, thinking about the problem a little bit more I realized that the heart of the article is kind of true but isn't articulated to show it clearly: Internet, while it was still young, was pretty symmetric because every node could be a producer and/or a consumer, and it seems everyone was. Today things are really different, because while there still are producers, the important gap is that they're not distributors anymore, and they're far fewer than consumers anyway.

The article states that the switch to HTTPS has somehow "changed" things, because you can't start a super basic HTTP process and expect it to run for a long time. This conversation has shown that while it's technically true it's very easy today to run an HTTPS reverse proxy to mitigate the situation, so from the point of view of TLS the point is mostly theoretical. However there's something that is very important today, it's that people who want to produce mostly can't also be distributors: NATs and firewalls and the complexity of configuration has in practice prevented everyone but the most tech-savvy of us from self-hosting. I think this point is more detrimental to the initial promise of the WWW than the technicalities of the encryption that has allowed us to make this protocol more viable at the scale we're at right now.

The answer is, as I've said before, the decentralized web: I personally believe that dat is the right model, but I might be wrong and the details don't matter that much because the important point is that they all allow us to get past connectivity issues and be both a producer _and_ a distributor. Hopefully that's where we're going to be headed in the coming years.

Regarding adobe, there's no question it _can_ be used if we just want to; what I had in mind (and I did not express it, my bad) is that this kind of material usually comes with the associated manual process that's so prevalent in the communities working with it. Scaling it to 10 billion people, all using this method, will definitely change the way our societies are built: tall buildings aren't possible anymore, at least not the way we're used to. Structures take decades, not years or months to be built. I doubt this can scale to 10 billion people.


When I joined the internet in 1992, it was pretty symmetric among machines but not among people; I typically used a DECstation that had another 50 or so people using it at any given time, and we didn't have root. We couldn't set up an FTP server, and although we could run an HTTP server on port 8000 or something, we couldn't run it on port 80. And if we started up a long-running process, it was liable to get shut down for loading down the machine. We didn't have access to cron; I don't think we even had access to at.

I didn't have root then, I didn't have root a couple of years later when I was doing sysadmin intern tasks on the math department's machines, and I didn't even have root on my desktop SPARC 5 in 1996 when I was working at a company, although I did on my roommate's Linux box at home and, later that year, my own. But IIRC our internet access was through Slirp on a shell account: we didn't have our own public IP address. (My workplace SPARC did.)

That was about the time the unwashed AOL colonist hordes started thinking they owned the internet and remaking it in the image of the world they knew, giving primacy to commerce rather than knowledge and sharing; but, of course, they didn't have public IP addresses either, or I think even private ones.

I'd say that the internet was still young then because it was only 23 in 1992 and only 25 in 1996, and now it's 51. But I think it's actually easier for people to put things online now, despite the NAT growth and HTTPS churn and whatnot, because an awful lot of people at the time had some kind of internet access but no distribution capabilities and no usable software. I don't know how long it would take an average internet user to learn to spin up a DigitalOcean droplet and start running nginx on it with LetsEncrypt, but I imagine it's on the order of a day or two, and the startup cost is like US$5 or something.

But however much easier it may be to initially put something online today, it's enormously harder to keep it online, and I think that's a terrible price to pay. And we're increasingly vulnerable to arbitrary censorship decisions made by Google, Apple, etc., even if currently that is more a potential risk than an active catastrophe — much like the next pandemic was a year go.

Today the menace is not so much commerce — though it continues to be a pervasive corrupting influence on our discourse and a frequent excuse for political censorship, it is also the underpinning of the internet since the beginning — as it is partisanship. Want to distribute health "misinformation", such as advocacy of wearing face masks (a month and a half ago, anyway, when this contradicted official guidance from the CDC)? Better hope Google and Fecebutt don't find out.


> self-signed was never trusted

The whole problem of a self-signed cert is unless you have a priori knowledge of the cert somehow, it then is trivial to MITM a self-signed cert. That is why it was never trusted. That is the point of a signed cert, you are inherently trusting a third party to tell you the cert a website is giving you is good.

It does bring up an idea of making an individual a CA (i.e. you know someone's PGP key and that PGP key signs a cert, and that is a way to trust it). But you still fallback on the same issues with PGP email, you ultimately need someway of trusting it in the first place.


DANE could make CAs obsolete, and the internet more secure:

https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Na...


It just moves the basis of trust from a diverse network of private CAs, any of which can be individually punished or distrusted if they misbehave, to the single centralized system of DNS, which rolls up to whomever controls your TLD of choice--entities who usually can't be removed, punished, or replaced.


Entities who also can de facto pull enough strings to authenticate to any CA as you, even under the existing system.


There's a blockchain project that attempts to decentralize TLDs - people would actually own their TLDs (by cryptography!), and would issue their own certificates. Only you and no one else would be able to issue a certificate for your TLD.

I've been shilling for this project enough, and feel it's a little offtopic here, but if you're really interested you can find it in my recent post history :)


Frankly, that's bullshit. Now you have to trust your country or some other private entity, without all the protection mechanisms modern Web PKI has.


Lets Encrypt (and most other issuers) are happy to issue certificates to whoever controls the DNS for a domain, which could be your TLD administrator at their whim.

I don't think DANE is going to make any progress, but opposing it because it gives TLDs more power is kind of bunk -- the TLDs already have that much power, DANE just makes it more explicit.


Self signed is more, than enough for the same purpose certbot exists: to have encrypted communication.


That is only one, the most basic purpose and the only that self-signed certificates can do.

LE and other certificate authorities* at least prove that your data wasn't tampered with in transit, or wasn't decrypted, read and reencrypted without any way for you to find out.

* as long as you trust those authorities


How do you verify the cert then? If you can't verify the cert, you have no way to know it is not being man in the middled.


You don't, but I don't like that mindset that an unverified certificate is somehow not better or even worse (see browser UIs) than no encryption.

Encryption prevents sniffing, Encryption + trust prevents sniffing and MITM. Providing sniffing protection is an upgrade.

As an example, say HTTP would always upgrade to HTTPS with a server provided public key. That would be more secure than the HTTP we have today, even though it wouldn't prevent MITM.


> I don't like that mindset that an unverified certificate is somehow not better or even worse (see browser UIs)

The browsers agree with you. Blame Netscape (a corporation which no longer exists) in the mid-1990s (when people still thought Bill Clinton was cool and that the Web might be a fad) for this UI design mistake. Or maybe even Sir Tim himself since his "Web" has no security whatsoever.

But, merely acknowledging that the present design is wrong doesn't fix it, and we can't rewrite history. So the shift has been gradual, but it's real.

In this current Firefox for example an HTTPS site which presents a self-signed cert gets a warning interstitial, and then a cautionary UI marker but once I tell Firefox I trust this certificate it functions normally.

On the other hand an HTTP site gets a red warning UI and some feature just don't work, and there is no way for the site to add those things, they're just outright prohibited with HTTP. If I try to fill out a form the browser reminds me it's insecure, and again there's no way to switch that off because it's true.

Long term the goal is to deprecate HTTP entirely. You will have to use any remaining HTTP sites through a reverse proxy (or an old browser), perhaps somebody benevolent will operate a public proxy for those rare public sites that refused or are unable to upgrade to HTTPS. I'd guess we're maybe 5-10 years from that.


> On the other hand an HTTP site gets a red warning UI and some feature just don't work, and there is no way for the site to add those things, they're just outright prohibited with HTTP.

This is a very recent development. Until last year HTTP had no special behavior while self-signed HTTPS had a big "You WILL get hacked and all your creditcards stolen if you continue, do not continue unless you have a PhD in Computer Security" warning. Still has.

Chrome shows a grey "not secure" on HTTP and a similar warning on self-signed.

In terms of how secure HTTP vs self-signed is, the behavior should be reversed.


I don't understand, anyone who can MITM can also sniff, right?


Yes they can. They simply decrypt, and reencrypt with their own self signed cert. If you have no way to verify the self-signed cert, you would never know.


An adversary with MitM capability needs to commit to being detectable in order to read encrypted traffic.


but not everyone who can sniff can MITM, encryption always prevents sniffing


> I don't like that mindset that an unverified certificate is somehow not better or even worse (see browser UIs) than no encryption

Of course it's worse when the user thinks the connection is encrypted when he actually has no idea who he's talking to.

What kind of attack do you have in mind where someone can sniff on the data but not tamper with it?

And how should a browser explain this situation to the user? No, the mindset that an unverified certificate is better than no encryption is very dangerous.


> Of course it's worse when the user thinks the connection is encrypted when he actually has no idea who he's talking to.

If a website previously using a self-signed certificate switches to plain HTTP - how will that help me verify the identity of the server the next time I visit?

By removing the self-signed certificate, not only am I still unable to verify the identity of the server, but now my traffic is in plaintext for anyone on the local network to trivially intercept (in addition to whatever stranger I'm sending it to on the other end).

I understand your sentiment, and I know the slippery slope that you are referring to when you say that it's a dangerous mindset to be okay with unverified certificates. Unencrypted communication however, is not a solution to that problem.


> but now my traffic is in plaintext for anyone on the local network to trivially intercept

If they are able to trivially intercept your network traffic they are probably also able to modify it (=> hijack untrusted HTTPS) or what scenario am I missing here?

Of course unencrypted communication isn't a solution if your goal is to have secure communication. But so isn't untrusted communication.

Either it's secure or not. You can't have something in-between. The browser would have to display an icon that says "This connection is secure but actually we don't really know so maybe it isn't". What are you supposed to make of such information?


So, a big concern which drove much of the adoption of HTTPS and other security technologies for the Internet is mass public surveillance, often justified as for "national security" purposes.

The NSA for example is known to just suck up all the traffic it can get and put it in a pile for later analysis.

Maybe your mention of "Make a bomb in chem class tomorrow" was just a joke to a close friend about how much you hate school, and maybe an analyst will realise that and move on when they see it, but civil liberties advocates think it'd be better if that analyst couldn't type "bomb" into an NSA search engine and see every mention of the word by anybody in your city in the last six weeks. I agree.

Americans tried just telling the NSA not to collect this data, but the whole point of spooks is to do this stuff, short of terminating the agency they were always going to collect this data, it's in their nature. So the practical way forward is to encrypt everything.

Any TLS connection can't be snooped. Only the participants get to see the data. The NSA isn't going to live MITM every single TLS connection so even with self-signed certificates the effect is you prevent mass surveillance.

A targeted attack will MITM you, no doubt, and so that is the reason to insist on certificates, but it's wrong to insist as you do that there's no benefit without them.


> it's wrong to insist as you do that there's no benefit without them.

Ok, that wasn't really my intention. I was stating that a false sense of security is worse than having (knowingly!) no security at all.

So yes I agree, you're generally better off even with untrusted encryption but that doesn't help in practical terms with our current situation of HTTPS in web-browsers. Maybe it would have been better if web-browsers would have just silently accepted self-signed certificates while still showing the big red warning about an insecure connection. I guess that will be solved with QUIC/HTTP3.


> a false sense of security is worse than having (knowingly!) no security at all.

Agreed. If you know that you are insecure you're less likely to pass sensitive information over the connection.

IMO the culprit is browser behavior. For instance, when visiting unencrypted HTTP sites in Chrome you may or may not notice an unobtrusive, greyed out "Not Secure" label in the URL bar. Visit your own self-signed certificate dev site though, and Chrome will give you an error wall with nothing to click, and you have to type "thisisunsafe" to pass (the page does not tell you that typing "thisisunsafe" will get you through).

Perhaps the reasoning is that if a site is served unencrypted it shouldn't be serving sensitive information, whereas an invalid certificate is an easy indicator of something amiss... but wow, talk about obtuse.

Your concern is definitely valid though, and I'm concerned about it too.


The brick wall (it's unfortunate that there have been overrides in Chrome under phrases including 'badidea' because they encourage people to use them, correct design here is to make the brick wall unpassable, that's why we built it in the first place) is only present if this site has HSTS or similar requiring HTTPS.

If the site doesn't seem to require HTTPS but you've gone there with HTTPS and there's no trustworthy certificate then the browser gives you a different interstitial which has a button labelled Advanced which reveals a link "Proceed to ... (unsafe)" that will switch off further interstitials for this site but retain the "Not Secure" labelling.

The HTTPS site (once you reach it) gets access to all modern features, an HTTP site, even if you ignore all the warnings, does not. As an example that's particularly unsubtle, calls to all the WebAuthn APIs just give back an error as if the user has thumped "Cancel".

Edited to add: Also the grey "Not secure" is changed to red if you seem to interact with a form, because that's probably a terrible idea on an HTTP site. Eventually I expect it will just always be red (the change to notice form interactions was in 2018 and this is part of a planned gradual shift by Chrome and other browser vendors).


Everything what you're saying is true, but it doesn't change the fact that HTTPS with self-signed certificate is more secure than HTTP.

It took Letsencrypt to make HTTPS accessible to the majority of the web because there was no cheap way before, because self-signed certs were punished by browsers while unencrypted connections were fine. We could have been full on moving from an encrypted (self-signed) web to a trusted (CA) web by now instead of moving from a plain-text to a trusted web.

Also, self-signed certs still prevent a MITM if you ever connected to the site before, similar to the trust-on-first-connection behavior of SSH. Given the widespread deployment and trust of SSH I'm suprised this people act so different with HTTPS.


> Unencrypted communication however, is not a solution to that problem.

Could you point out who you are responding to who said that unencrypted communication is a solution to the problem? This strikes me as a straw man argument.


> What kind of attack do you have in mind where someone can sniff on the data but not tamper with it?

Passive collection, where you search through the accumulated data after the fact.


> Encryption prevents sniffing, Encryption + trust prevents sniffing and MITM. Providing sniffing protection is an upgrade.

In what real-world situation is that an upgrade?


Ones that happen in the world you live in, homie.


You claim that, yet you provide no examples.


Self-signed certs don't protect against active man in the middle attacks, but they do establish an encrypted channel that is secure against passive eavesdropping and after-the-fact decryption of network captures. So there's still some security benefit there.


There really isn't a real-world situation I can think of where I'd care about passive eavesdropping or after-the-fact decryption and not also care about active eavesdropping.

So I'm going to disagree. No, there is no security benefit to encryption without authentication.


While the impact of all these things are the same, the likelihood is not.

There certainly are real world situations where the chance of active eavesdropping (which requires a targeted attack, and is risky because it can be detected) is low, so you accept that level of risk, but the ability for someone to just grab all the traffic of a large group (that just happens to include you) for a prolonged period of time undetected is much higher.


That's a good point. I may be wrong--I'll have to consider this a bit more.


How about putting some hash of the self-signed cert in a DNS TXT field?


A MITM can intercept and modify dns requests too.


That could help, but if someone is MITMing you, DNS is all in the clear too.

I do not enough to solve that problem really.


Self signed just means you have to create and distribute a CA cert, and your platform has to support adding CA certs. AFAIK Chrome, Firefox, IE, Edge, and mobile browsers on Android and iOS can do this.

You generate a CA cert using a utility like xca and then create client certs signed by it. You can use signing requests if you don't want to know the password that protects the certs (in my scenario, I was fine with that).

You then export your client certs, with your CA cert included, and coordinate with people who need access to install the cert on their browser or OS.

Your users will get prompted to trust a new CA (as they should).

Combine with a webserver that supports routing requests based on certificate status, like nginx, and it's pretty neat. You can allow access to only those who have a cert signed by your CA.

I did this for the longest time before letsencrypt was a thing, and if letsencrypt goes away, I'll go back to it.


I want to believe that somewhere out there, Orlando Bloom is signing everyone's certs with his usual ambiguous Legolas expressions. That typo was such a happy little accident.


Elf-signed certificates should absolutely be A Thing.


> This is the very problem of certificates, because self-signed was never trusted and is not an option.

What I don't get, with DNSSEC getting rolled out more and more, why can't every site operator simply stick the fingerprint of their HTTPS cert in DNS and have DNSSEC take care of the trust chain?


There are a bunch of reasons why this doesn't work, but first among them is this: This would require browsers to make DNSSEC queries, and if those queries were blocked or otherwise failed, the browser would have to fail closed and present a certificate error. (The alternative, failing open and allowing users to visit a site if the browser doesn't get a response to the DNSSEC query, would be completely insecure, because the whole point of HTTPS is to defend against MITM attacks, and an MITM could simply block all DNSSEC traffic.) This is impractical because there are a bunch of existing firewalls and middleboxes that don't understand DNSSEC and that (contra Postel's Law) block DNS traffic that they don't understand; implementing this change would be cutting off everyone behind those firewalls and middleboxes from the Web.

There are also a lot of other objections to it, including that it's too centralized (see https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...), but that's the basic reason why it can't be deployed.


Contra GP, could you clarify how DNSSEC itself even important in this though? As far as I can tell, nearly all of my typical stack ultimately comes down to my domain. If my registrar, account with them, or DNS is compromised that's it. Let's Encrypt will cheerfully issue all the certs hostile attackers want. They'd have the ability to get most new emails (except for PGP/custom S/MIME) and in turn most accounts as well except for those with out of band pre-shared keys required (SSH, webauthn sites, maybe SMS). "Required", because realistically with that level of access many services that claim to require 2FA could probably be socially engineered around.

So I guess I'm confused how

  DNS records hold a public key rather than _acme-challenge
would be any worse? Is it that while browsers may not be able to consistently get DNSSEC, Let's Encrypt consistently can for those that use it so it provides a weak bit of OOB workaround? I can see how that might be of some value, but not sure it's worth the trade off. I hope there's at least a concerted effort to someday secure DNS in general, thus making CAs (including LE) obsolete unless they do something beyond domain checks.


You seem to be looking at it from the point of view of attacks against the domain owner.

If someone gets control of your domain, then yes, there really isn't much difference between a system where a public key in your domain's DNS records is used by clients to tell they are talking to your sites and a system where a certificate issued by LE is used for that.

As you note, once they have control of your domain they can get new certificates from LE for it.

But attacks against the domain owner aren't the only kind of attacks. There are also attacks against the domain's visitors.

Suppose Bob has an old router at home with out of date, buggy firmware that I know a remote exploit for that allows me to change his DNS settings. I change it so that instead of using the DNS servers it get from Bob's ISP via DHCP to resolve DNS requests from the LAN, it uses my DNS server.

My DNS server points your domain to one of my sites instead of yours, where I run my nefarious fake version of your site.

Under the public key on DNS server approach, it's my DNS server, so I can put a public key on it that corresponds to my keys on my fake version of your site, and everything will check out from Bob's point of view.

Under the LE approach, this does not work. To get LE to issue to me a certificate for your site, I have to get LE to use a DNS server I control to resolve your domain.

That's the difference. Under the current system to securely hijack your site I need to compromise your system, your DNS provider, your domain registrar, your ISP, or your hosting provider. Under the keys in DNS approach, I just need to compromise end users.


Thanks for taking the time to flesh that out! I was guessing something like that might be it in a neighbor post, so automatic web CAs at this point are essentially a bit of a hack/workaround on a common inability of clients to securely verify DNS itself? And from reading it looks like there are plenty of ways to do that (from DNSSEC to DoT/DoH or even for low sophistication attacks simply hard coding a DNS server rather then depending on DHCP, though some of these themselves create other headaches), but those ways are far from universal and in some cases could have conflicts with other network middlemen?

It definitely makes sense, and I completely understand how this sort of workaround can be necessary to get stuff done. But it's also too bad and I hope there can be a push towards securing DNS sooner rather then later, as it really should be the minimal source of trust in most cases. Having DNS be reliable for that with widespread support would open up a ton of additional new possibilities too, and not just for public websites.


Are you saying, there exists some goofball who filters DNSSEC traffic, therefore DNSSEC isn't possible? If that's how you want to play it then Google now has a moral duty to implement NAPTR and SRV too. That way fallback and load balancing can happen in the Chrome client. Thus folks won't have to pay for BGP or VIP privilege anymore to be able to serve internationally.


IIUC the Chrome developers ran experiments to determine how many users would break if they rolled this out, and the number was above whatever they consider an acceptable threshold.


Which L Team member came to that determination? Would he or she like us to help by setting up public RRDtool monitoring of the policy impact on Internet properties?


> This is impractical because there are a bunch of existing firewalls and middleboxes that don't understand DNSSEC and that (contra Postel's Law) block DNS traffic that they don't understand; implementing this change would be cutting off everyone behind those firewalls and middleboxes from the Web.

Funny how this was never an argument when HTTPS was forced on everyone (to solve the problem with JavaScript being insecure), despite almost the exact same reasons holding up with middle-boxes, proxies and the like.

Now that there is an alternate, much simpler HTTPS-solution everyone is "oh noes that would break corporate environments". What's different this time around? Why is breaking things bad this time?

If we could just sit down, and all agree that the only reason we "need" HTTPS everywhere is because running JavaScript in a browser represents a security-issue, the quicker we can start solving the real problem: JavaScript as a default-permission.

The quicker we can phase that out from web-pages (which honestly more often than not, simply represents documents), the better.


> Funny how this was never an argument when HTTPS was forced on everyone (to solve the problem with JavaScript being insecure),

This misunderstanding is where your argument went off the rails: people wanted HTTPS because they are sending data over networks which aren’t perfectly trustworthy. Starting in the late 1990s there was string consumer demand to feel safe entering credit cards and other personal information even if the site used no JavaScript - our household-name clients expected it even if they only used JS for mouseover effects. That was before WiFi became common, too, and people realized the risks of letting everyone at Starbucks see their information.

DNSSEC has no equivalent because it took so long to be adopted that it offers no meaningful user benefit over HTTPS, and it’d need to be a substantial win to balance out the poor user experience and implementation challenges.


But most of the websites today are not sending sensitive data back and forth, they are simply sending public data from public websites.

And here the HTTPS crowd‘S argument is that an evil attacker can inject malicious JS if MITMed, and this according to them is why everyone must have HTTPS for everything. No middle ground.

But if JS was not a default permission, that wouldn’t be a problem and plain HTTP would go a long way for most people, without risking stuff like heart bleed and insecure servers, due to an overly complicated and often vulnerable crypto stack.

Edit: I don’t see why people think this is a crazy suggestion. We used to treat MSWord-documents the same way we treat web-documents now. That is, once op deed, the document had the permission and capability to run any embedded script it wanted.

In the end everyone realized this was a bad idea, and now Word-documents have to request the script-permission from the user before scripts are allowed to run.

The result? MSWord-based worms and malware almost eliminated over night.

And I’d like to see anyone argue that we should give HTML-email script-permissions by default. You know why that is a bad idea.

So why wouldn’t want the same for the web? Why should not the web be safe by default? Why should we have to accept scripts we haven’t authorised?


Making 99.9% of websites ask for js permissions, and often break if the user clicks no, is just adding unneeded friction for the huge majority of cases. “Do you want to accept X” is also a terrible security boundary since most users won’t be able to tell when it is reasonable vs an attack scenario.

The HN community loves static sites and the old web. But this is a tiny tiny tiny minority.


> Making 99.9% of websites ask for js permissions, and often break if the user clicks no, is just adding unneeded friction for the huge majority of cases.

That problem is solved by making sites avoid needless JS.

Today I can browse almost every major news-site without JS and they won’t visually break. Same for documentation. It’s all documents after all.

If I enable JS they load megabytes of scripts and still act just the same. What did those scripts bring me? Increased CPU load and lowered battery life.

What is it wrong with not wanting that as default?


You want that as a default. You aren't wrong for your own needs. But your needs are different than other people. The large majority of web usage is not interacting with documents. It is interacting with applications.

"I wish things were like the 90s, but with broadband" is a constant refrain among techies but go talk to the rest of the world and it is absolutely not what people want.


> But most of the websites today are not sending sensitive data back and forth, they are simply sending public data from public websites.

Really? Most websites don't have login systems? Don't ever have content you might not want everyone to know you're reading? Don't allow you to post messages you might want to keep separate? Don't allow you to search for things you want to keep private?


> But most of the websites today are not sending sensitive data back and forth, they are simply sending public data from public websites.

I disagree. Most websites include some sort of login system, at least for the editors to use (e.g. Wordpress). And the few that don't, often include data that doesn't need to be private, but should be signed (e.g. GPG key fingerprints).


What you're talking about is DANE.

RFC 6698

https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Na...

I wrote a short explanation of how it works a while back.

https://www.metafarce.com/adventures-in-dane.html

The short answer is that DANE has been seeing deployment success for SMTP, but has yet to see much deployment success for HTTPS.

https://stats.dnssec-tools.org/


I'm one of the few weirdos that actually validates DANE for HTTPS using some software I wrote called Danish.

Once in Python

https://github.com/smutt/danish

And again in Rust.

https://github.com/smutt/danish-rust

An old explanation can be found here.

https://www.middlebox-dane.org/

Both middlebox-dane.org and metafarce.com have DNS TLSA records that match their certificate from Let's Encrypt. You can do this, but almost no one is.

There is some pickup in The Netherlands where I live. For example, www.digid.nl has delpoyed DANE for HTTPS.


> ... DANE has been seeing deployment success for SMTP, ...

Since "DANE for e-mail" is still relatively new / obscure, for the uninitiated, RFC7672 [0] describes "SMTP Security via Opportunistic DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS)", which requires DNSSEC -- and, as a result, comes with all of its associated disadvantages / trade-offs.

An alternative, more recent method of providing authenticated and encrypted delivery of e-mail is described in RFC8461 [1], "SMTP MTA Strict Transport Security (MTA-STS)", which uses DNS and HTTPS -- and, thus, relies on CAs / PKIX. MTA-STS doesn't require DNSSEC but it is then susceptible to "malicious downgrades".

Although we're not going to see all e-mail being encrypted in transit anytime soon (if we ever do), it's good to know that there are folks working on solutions, including at some of the largest e-mail providers.

---

[0]: https://tools.ietf.org/html/rfc7672

[1]: https://tools.ietf.org/html/rfc8461


MTA-STS doesn't so much "not require" DNSSEC so much as explicitly work around ever needing it; that's stated as one of the goals of the protocol in the RFC.


> What I don't get, with DNSSEC getting rolled out more and more, why can't every site operator simply stick the fingerprint of their HTTPS cert in DNS and have DNSSEC take care of the trust chain?

This question is extremely relevant given how DNS-based authentication is the preferred way to authenticate with letsencrypt.

If DNS is good enough for letsencrypt to validate you and give you a cert, why can't DNS be good enough for the browser alone, without needing to rely on some third party service?

Letsencrypt has certainly made HTTPS easier in practice, but we really need to get rid of the whole CA-model entirely.


This was proposed already in 2012 with RFC6698. DNS based Authentication of Domain Entries, DANE.

Hasn't really gone anywhere of importance.

I personally think there's been a few factors as to why:

* Distrust of DNSSEC and centralized authority.

* Lagging DNSSEC deployment, not just in DNS but also in clients and applications.

* Needs another DNS lookup on connection to validate certs, adding lag. I think it probably needs stapling support in some form just like cert validity checking.

There's also been follow up RFC detailing it's use for SMTP, SRV records and PGP.


A DKIM like service? For emails I find it very convenient, publish your public key with DNS and sign outgoing emails, outgoing emails are now "certified" coming from your server and the recipient can easily verify it, no CAs involved.


Let's Encrypt doesn't have to worry about firewalls and middleboxes blocking their DNS queries. Browsers do.


Yes, and browsers solution has been to tunnel those queries over some protocol that middleboxes can not mess with. Because losing the DNSSEC fields is the lesser of the problems they cause.


What Letsencrypt does (and all other providers of certificates to end users do) is verify that you control the domain you are requesting a certificate for.

That's well and good, but who are those Letsencrypt guys, anyway? That's why there is a chain of trust and Certificate Authorities.

You, and your browser, cannot know everyone out there so you pick a few 'authorities' that are well-known and deemed serious enough to be trusted and go from there.

DNSSEC operates on the same principle of a chain of trust from root.


But isn't the point here (and a source of confusion I share with all the other posters) that DNS is the actual root of trust? Heck, forget DNSSEC even, because it's not like Let's Encrypt demands it. You say that LE verifies

>that you control the domain you are requesting a certificate for

but it mostly seems to do it the exact same way any random person browsing to an HTTP site would: it checks the DNS records. It's not like there's an out of band channel here where they actually verify business records separately or something. So what exactly is the value of the middle man in this? Why not just have public sigs in the DNS records too? When DNS is the root of trust anyway and "Certificate Authorities" are reduced to fully automated systems, what value to "Certificate Authorities" even bring anymore in this context? It seems like a hack from a time when CAs were expected to provide some out of band verification that would actually be useful. But on the web that mostly hasn't happened or has been rendered moot (witness the death of EV).

I can see how central CAs could still be useful in many other circumstances. But for anything where control of DNS directly correlates with control of the entire chain, it seems like it'd be a lot better to just decentralize into DNS.


The value of certificate authorities is to be the roots of trust, as said.

The exact same applies to using DNS as chain of trust. You have to start with a well-known root of trust because it's impossible to know all the DNS servers or registrars out there. In fact that's exactly how DNSSEC works.

It seems that the question is whether DNS and HTTPS certificates are converging to provide the same service. Perhaps, though I'm not sure, but that wouldn't change the system fundamentally.


>The value of certificate authorities is to be the roots of trust, as said.

But they aren't, DNS is. That's my question. If someone controls my domain, they can point it wherever and get all the Let's Encrypt CA signed certs they want. So how exactly is the CA being a root of trust there if the CA itself is basing trust off of domain control? In neighbor comment it seems that maybe the CA is basically acting as a hack to bypass an inability by clients to check DNS? I can see why that would have some practical value in the near term but it'd be good to do away with it as soon as possible. Apple/Google/Microsoft (and maybe Mozilla) may be in a position to do so if no one else.


This is another question.

You're discussing how to prove to Let's Encrypt, or anyone else, that you are the legitimate owner of a domain.

That does not mean that I know or trust Let's Encrypt. The root of trust is an entity I know and trust and which can vouch for Let's Encrypt, which can in turn (or not) vouch that you are the legitimate owner of a domain.

The same applies to DNSSEC. The root of trust being the root servers.


> What Letsencrypt does

Letsencrypt is run by Mozilla. So lets instead make that:

> What Mozilla does ... is that you control the domain you are requesting a certificate for.

So Mozilla trusts me based on me controlling the DNS of my domain, and can issue me a security-token which Mozilla's browser (and other browsers) then can trust.

Note: It does not trust me or verify me to be non-malicious, honest or have good intentions of any kind. It merely verifies that I control the DNS of the domain I request a certificate for. That's it. That is all.

So why can't Mozilla's browser simply instead of trusting these magic tokens, instead just verify that the cert for the site matches the cert pinned in DNS, thus validating that the site-operator is indeed in control of the DNS of his domain?

It will be exactly the same validation, except now we don't have to rely on a third-party service to do that for us. And then the web can finally be autonomous and decentralized again.


> Letsencrypt is run by Mozilla.

Let's Encrypt is a service of ISRG, a public benefit corporation https://www.abetterinternet.org/about/

Some key ISRG people were from Mozilla, but so what?

> So why can't Mozilla's browser simply instead of trusting these magic tokens, instead just verify that the cert for the site matches the cert pinned in DNS

Poor deployability and interoperability. Now your browser mysteriously doesn't work on a lot of the world's networks and the site doesn't work with other browsers.


Could you please point to a tutorial/howto on this?

EDIT: why on earth was this question downvoted? It was genuine, I honestly don't know how to do it.


In theory there is the CERT DNS record type that could be used, but no OS/lib uses it unfortunately as prior to DNSSEC there was no way to prevent the CERT record from being manipulated/intercepted :/


Why can't browsers allow self-signed certificates as long as it is signed by a private key on a DNS record with DNSSEC enabled?


Sounds like DANE.


This would be a stronger point if the most popular provider of the service you would have to rely on wasn't a non-profit who provides their services for free and makes tools that are extremely easy to use and understand. It's a pretty fantastic outcome given the need for encryption in modern times.

Let's also not forget that having a HTTP website relies on other services that are maintained by others as well; this isn't going from "full independence" to dependence, it's going from N dependencies to N+1.


Certbot is not that easy. Several times my auto-renew scripts have failed because some API change makes me need to update my auto-renew script.


I just went through this with my GitLab and pages for self-hosting. Miserable.

Certbot is not a silver bullet and is easy until it's not.


Its a hoop to jump through to get things to work- and an external dependency. I mean I remember the days when I first got a cable modem, I could just start up IIS or Apache and immediately have a web page on the internet. With a little hackery with dynamic DNS, it could be a "proper" webpage with a domain name.

There are a lot of websites out there that just want to serve some static data or host a blog, and https IMHO adds nothing but a layer of complexity for no benefit.


I don't necessarily disagree with what you said, but for every person who pays attention to the difference between HTTP and HTTPS, and understands what it means, whenever visiting a website, there are probably many more who don't.

Until someone who is trusted, technically capable, and has a better and sustainable solution that optimises collective good, I'm not sure that the current situation we are in is really that bad.


Indeed, the main problem of trust is the third party and agreement.

The DID and VC standards have an interesting approach. Use self-signed public keys, and third-party-signed credentials. To prevent MITM use credentials, to encrypt channel use the keys.

The agreement part, however, remains difficult because the protocols are always evolving.

Maybe in a few years we'll get it solved, just like Bitcoin solved double-spending without centralization?


> elf-signed was never trusted

I think the main reason is that they're on the whole pretty racist towards dwarves.


Also the security of the Doors of Durin was basically plaintext.


So long story short, today's internet is all about big corps.

And there are always T&Cs. AKA we didn't like that article on your account, we kill all your services and deactivate your account.


Completely agree. HTTP isn't affected by any of the politicking going on in Mozilla, but it certainly affects users. Purporting to be a user-agent, Mozilla (and to a degree the other big browsers) have taken away a few of the sharp objects lying around, to extend protection to less savvy users.

When I think about my old grandma or my oblivious inlaws downloading "free games" and constantly getting scammed or infected with viruses, this whole HTTPS thing seems awfully ridiculous. The internet is full of websites that will grift you if you aren't careful.

I think the other part of it is also that FF is trying to position itself as the browser for security-conscious users. Hence the aggressive blocking... whether it works or not is another question.


> In the era of HTTP, you could have set up a web server in 2000 and it could still be running today, working perfectly well (even if it didn't support the very latest shiny thing).

I'm not sure this assumption is right, looking at the CVE list and in particular entries associated with Apache.

http://cve.mitre.org/cve/

https://www.cvedetails.com/product/66/Apache-Http-Server.htm...


I agree - it's completely naive to believe that any software deployed 20 years ago, and open to public attack, with zero maintenance wouldn't be attacked, and compromised.

I'd like that to be the world we live in - and with the continual evolution in secure programming practices, maybe one day it might be, but it's not.

As a profession of software engineers, we have not achieved the level of quality at the costs that is willing to be met to engineer public facing websites that won't be vulnerable to attack at some point in the next 20 years, and will still be running.


I believe OP want to say that it just not stops working


I think the GP comment demonstrates that it very likely will stop working very shortly if left on the open web.


It takes 10 minutes to put an old HTTP server behind a reverse proxied nginx instance with auto-renewing letsencrypt certs (you can even reverse proxy old HTTPS-supporting servers that have outdated TLS versions).

I also disagree with the idea that HTTPS introduced the problem of requiring maintenance; anything you expose to the public internet needs maintenance and security upgrades.


Yeah, HTTPS is the response to the problem. The problem is that the internet is nowhere near as "safe" as it was a few decades ago. (Or at least, the unsafe-ness is now better known.)

It's a bit like complaining that you can no longer take your origami collection outside without an umbrella. Well, the umbrella isn't the problem, the rain is. The umbrella is a solution. But of course being under an umbrella isn't the same as being outside on a sunny day. So sure, lament the change in the weather; lament the inconvenience of carrying an umbrella around all the time; but don't blame the umbrella for the rain.


> The problem is that the internet is nowhere near as "safe" as it was a few decades ago.

It wasn't very safe a few decades ago either.

In 2000, I had naively set up a Linux box under my desk with a public IP, thinking maybe I could host a blog on it. It got a number of portscans within minutes of being set up, and subsequent monitoring showed lots of intrusion attempts. Luckily the box was patched, but I was essentially one zero-day away from being 0wn3d. But I did learn a lot before moving the box behind a firewall.

I guess that back in the day, some people could wish these away as unproven threats well into the early 2000s until malware like Nimda / Code Red well and truly destroyed that illusion.


If your two servers communicate over the public internet rather than a private network, all you've done is made your users believe they are behind a secure connection when they really aren't.

For example, if your "old" server is a colocated physical server and your proxy server is a fancy cloud VM.


> all you've done

Eh. I sort of disagree with this specific phrasing.

People shouldn't focus only on targeted attacks on the server. Of course if you have an HTTPS proxy in front of an HTTP server, you can be MITMed between those two servers, and that's very bad.

But even with that flaw you're getting benefits. Public networks can't inject malware/ads into that webpage, a MITM attacker between your proxy and the main server will have a harder time correlating a request with a specific person, ISPs will have a harder time scanning the traffic for use with ads/metadata.

This is a similar argument that comes up sometimes about VPNs. I know people who argue that a VPN does nothing because it just moves trust from one party to another. But the reality is that if you search my public IP address, you will get a pretty decent approximation of where I live. In a world without a VPN, I'm not just choosing whether or not I trust my ISP, I'm choosing whether I'm comfortable giving a decent marker of my physical location to literally every single website that I visit.

That doesn't mean the "moving trust" concern isn't valid, it just means it's not the full picture of what a VPN (either privately hosted or through a 3rd-party) protects you from.

In the same way, it is a valid concern that behind the scenes data might not be encrypted between a proxy and a server. But that's not the full picture of what HTTPS protects you from. HTTPS also protects you at the router/network level.


How old is the server for this scenario?

If it can't run a modern web server as a proxy directly.

Then maybe you could set up a VPN tunnel between the server and your fancy cloud VM.

But running some ancient hardware not for historical reasons but taking user data, is wrong.


Or the hosting provider could offer a turnkey solution.

They could use something like VLAN to isolate that physical server on its own network, put the VLAN behind a firewall, and have an HTTPS reverse proxy that goes through that firewall.

Depending on how their network is built, it might even be possible to make this self-service where you enable a setting in your account and your physical server gets wrapped in this additional layer.


This is why the content should have been signed.

IMO: https is actually overhyped, it solves some problems but has plenty of its own


> anything you expose to the public internet needs maintenance and security upgrades.

Uh, no — in the past you could have purchased a hosting solution, that does it's own TCP termination (such as shared hosting) to completely forget about your site. Many static websites still exist solely because of that.

Now you can accomplish the same thing by paying Cloudflare (or some other party) to terminate your TLS connection. One more kind of parasites has been enshrined in technological stack.


You can also pay Hetzner, Wordpress, 1&1, AWS or any other hosting provider, most of which also offer automatic certificate renewal by now. I don't see how there is any change, especially since hosting has gotten a lot cheaper.


Do they offer automated certificate renewal for services with constantly changing IPs? I don't think so.


Well, you surely could do this via some proxy setup. But in that case you could also simply rely on LetsEncrypt directly; them going away is as likely as your average hosting provider.

Now, of course that's an item on the maintenance list if you're hosting the web page yourself, but as mentioned above: You still need regular updates, having certificate renewal on that list doesn't make any noticeable difference.


And nowadays you purchase a shared hosting account and they handle HTTPS for you, without you doing anything. What's the difference?


You don't have to pay Cloudflare anything, they will do it for free


And with that, lock you in their ecosystem of proprietary web behind captchas.


That hosting solution of the past never needed any internal security upgrades or maintenance?


It takes 10 minutes to put an old HTTP server behind a reverse proxied nginx instance with auto-renewing letsencrypt certs

Hi. I've been online since 1982, when I built my own modem from parts sold out of the back of a magazine. What you just wrote might as well have been instructions for assembling a DIY fusion reactor, for all I know.

That's what the author means when he suggests that something is being lost. I now have no realistic choice but to go through a centralized gatekeeper to post content on the Web. That sucks. It wasn't supposed to be that way.


> no realistic choice but to go through a centralized gatekeeper

This is the critical part. Even though Let's Encrypt is not-for-profit, etc. It is still a single entity. Until someone can go and start their own CA in that 10 minutes that works across the world, we're moving away from and not towards what HTTP was.


The A in CA is always going to stand for authority. The basis of the CA system is that CAs (supposedly) can be trusted. If you remove the hard parts of being a CA, then you remove the basis for that trust (however questionable it was to begin with). You don’t have an authority any more, you just have an ephemeral group of self-attesting certificate issuers, and why would you even need the issuers in that case?

These are just the general (and unsolved, or perhaps even unsolvable) problems associated with PKI. I think there’s a solid argument to be made about separating the encryption of communication from the authentication of server identity. That would solve one problem, but it would also just take an existing bad problem and (arguably) make it a lot worse. Given all of its horrendous shortcomings, the CA system is still the most successful PKI ever created, by quite a large margin.


The usual alternative proposal is some form of decentralised web of trust. This has the significant advantage that it includes neither the letters CA nor SPOF. But of course it has difficulties of its own, and unfortunately it's hard to see how we could move safely and reasonably quickly in that direction given the entrenched powers that now dominate the CA and browser markets.

It is worrying that Let's Encrypt is currently the only major provider of free, relatively easily arranged certs, though. Its success has been impressive, but it's probably also one of the biggest single points of failure in modern Web infrastructure now.


The problem with a decentralized web of trust isn’t that CAs are too entrenched to be replaced. It’s that there’s no such thing as an alternative decentralized web of trust solution, and no reasonable idea about how one could be created. Amazon reviews work on a decentralized web of trust model, and any PKI attempting to implement one is going to run into exactly the same issues that those have. The trust has to be put somewhere. It’s not realistic to expect the users to validate trust themselves, if you establish an authority to trust, then it can abuse its power, and if anonymous participants can abuse your model, then anonymous participants will abuse your model.

All decentralized web of trust models lean towards one of those problem categories. They can be too onerous to be usable (like the original PGP proposal), easily abused, or simply create even more dubious shadow authorities. There is no known PKI model that solves all of those problems at once, and not really any basis for even presuming it’s possible.


Just to be clear, the problem I think we're trying to solve with a web of trust is the authentication one, not the encryption one. Several existing systems such as GPG demonstrate the viability of a web of trust solution in principle. What is currently missing is a practical method of scaling up.

Yes, any such method would inevitably require a different process to how things work today, most likely including some sort of administrative action to get a new domain recognised when setting up a new site. Still, if you'd suggested seven or even six years ago that anyone would be able to set up effective HTTPS hosting with relatively little effort and without paying for an expensive certificate from some big name CA, you'd probably have been laughed out of the building. Five years ago, Let's Encrypt was starting its rapid rise to dominance, and as the various limitations in the original scheme have been removed, that rise has shown no sign of slowing down.


The basis of the PGP/GPG approach is in-person key signing. It can only work if you're willing to authenticate somebody's identity with them face-to-face (keep in mind that publishing your public key online is currently only possible because of CAs). The web of trust model is an improvement to this, because it allows you to choose people that you trust to also perform this ritual properly. But to say all you need to do it figure out how to scale this up is a flawed premise.

The PKI you choose for the internet needs to work for all internet users. The web of trust model only works for highly motivated and technically competent users, and even then, such a user cannot possibly authenticate all of the identities they need to for typical internet use. They end up with a small group of people they can communicate with more securely. They aren't heading off the google HQ to sign their TLS keys, and if they discover a new web service they want to use, they're not going to hold off on using it until a proper key signing ceremony can take place.

Such a system is not fit for the purpose of securing internet communication, and it's not fit for use amongst the majority of web users. Your options for improving those shortcomings is to either create a system that can easily be gamed, by requiring users to trust some sort of community consensus, or to establish trusted authorities (which is just reinventing CAs, and probably in a way that's worse than the current CA system).

The web of trust model simply cannot work for this purpose, there's currently no plausible approach for improving it, and it's not obvious that such an approach is even possible.


The basis of the PGP/GPG approach is in-person key signing. It can only work if you're willing to authenticate somebody's identity with them face-to-face (keep in mind that publishing your public key online is currently only possible because of CAs).

That depends on what you're trying to prove. At the moment, CAs typically accept that someone attempting to create a certificate for a certain domain is the legitimate owner if that person can demonstrate immediate control over something like the content of the website or the DNS. Attempts to enforce stronger verification, such as EV certificates, have largely fallen flat. An equivalent standard would be no worse as the basis for a web of trust system than it is as a basis for major CAs issuing certificates today.

The biggest problem with today's CA system isn't that there are trusted authorities, it's that for any given cert there is one and only one ultimate trusted authority and if there are further certs involved then the dependency chain is strictly linear. This creates both gatekeepers and single points of failure. A system where multiple reputable sources could indicate their trust in a certain identity and where authentication was based on looking for multiple trusted paths to verify a claimed identity would address several of the practical weaknesses of our current CA-based infrastructure.


Having your certificate signed one time or three times or a hundred times doesn’t really change the dynamics of the problem at all. Without an authority you put the burden of authentication on the user (no matter what ceremony they use). This fact alone makes it a generally useless approach to PKI. The only thing the web of trust does is allow you to share that burden with a select number of people that you actually know and trust. If you try to extend the perimeter of the web beyond that, it just becomes a web of horribly misplaced trust. Reframing it as a web of reputation doesn’t change anything either.


Having your certificate signed one time or three times or a hundred times doesn’t really change the dynamics of the problem at all.

Just to clarify, I'm not necessarily talking anything as specific as signing a certificate. I'm talking about the problem of authentication in general, whatever mechanism it might use.

Maybe we're talking at cross-purposes as I'm not sure exactly what problem you're trying to solve here, but my argument is that the main problem with existing CAs is that they represent single points of failure in several respects.

Authenticating against multiple sources from a potentially larger pool does then change the dynamics in exactly two very important ways: it means neither the site host nor the site visitor is reliant on a single CA and thus a single potential point of failure any longer. This isn't a complete solution to all possible problems with the existing CA system, but it does offer a conceivable way to mitigate some known weaknesses in that system.

Getting that far doesn't really even need a full web of trust system, just a mechanism for seeking confirmation from N of M ultimate authorities where N is chosen such that 1 < N < M with whatever safety margin on either end you deem appropriate. But a more comprehensive web of trust would potentially allow for a fully decentralised system in the sense that anyone could operate their own final authority but how much it was trusted would depend on the properties of the web (as would how much any default authorities included with browsers as standard were or potentially were not to be trusted).


What you’re describing is not a known weakness in the CA system, and doesn’t even really touch on the actual known issues with implementing PKI. The CA is not a point of failure. If one CA fails to sign your certificate, you just get one from a different CA. If a CA that had already signed your certificate vanishes, nothing fails because your existing certificates do not suddenly become unsigned.

The core issues with PKI are establishing trust. The only way to do that for most applications requires an authority. You’re not improving the system by requiring multiple authorities to sign every certificate. You’re not making things less authority-reliant or more resilient. You’re just making it more complicated, and leaving the real underlying issues around authentication unchanged.


Encryption without authentication is meaningless, and it's no accident that https has them so tightly linked. If you can't tell that you are securely communicating with mitm, what's the point?


Sorry, I'm not sure what point you're trying to make here. Authentication without encryption is not meaningless, and if you can authenticate then there are multiple possibilities for setting up encryption for the subsequent communication. Tightly linking the two is not necessary, and not necessarily desirable.


> Until someone can go and start their own CA in that 10 minutes that works across the world, we're moving away from and not towards what HTTP was.

Would you trust the authenticity of content that originated from a site signed with such a CA? If so, why?

PKI is just a technology for verifying trust over untrusted channels. But that trust is created in and remains rooted in the real world, and is itself built on societal chains of trust.

No technology, centralized or decentralized, will replace real world trust in human societies any time soon. Trustless tech only works if it's based on a society with trust. Otherwise the tech is meaningless.


I'm a modern web developer who's fairly up to date on those things. I've set up what he described just last week. I definitely couldn't do it in 10 minutes. An hour maybe.

The person above forgot that those things require a lot of skill and experience just to understand what you're told to do. We're a long way from building websites with FrontPage and uploading them over FTP.


After 15 minutes of googling, I believe you'll have a good grasp on that stuff. I've been there.

So there is new stuff you need to know. On the other hand, these days you'll find that blog post that walks you through installing nginx and certbot on your $5/month VPS, prepackaged with dependencies, just works out of the box, in a very short order. From what I recall from the late 90s, setting up a plain old fashioned HTTP server felt a lot more difficult then.


So the "solution" is paying a monthly fee?


I've got a 30mbps upload and a static ipv4 IP and ipv6 /48 subnet.

That's my home internet connection.

I've got a laptop in my cupboard that is connected to my router.

That's my server for a lot of simple things.


Uh, like paying for hardware and a beefy connection, or renting a server? I don't think that was ever any cheaper.


In the late 90s you mentioned above, ISPs routinely provided some web space as part of the package, at least in my country. You just FTPed your files up to them, and they ran all the necessary software for you.


> I now have no realistic choice but to go through a centralized gatekeeper to post content on the Web.

I don't know where you got that. You'd install an nginx (or caddy, my preference) reverse proxy on exactly the same hardware you were running your HTTP site, or if that machine is too foreign you can buy an old laptop, put the reverse proxy on it and forward to your site. There is nothing centralized with that.


And where do you get your certificate from?


Ah, the good old why have 1 web server when you can have 2 solution.....


Adding a process on the same machine is not the same as buying a new machine.


I also disagree with the idea that HTTPS introduced the problem of requiring maintenance; anything you expose to the public internet needs maintenance and security upgrades.

Although this argument doesn't allow for the huge number of websites that are not on the public Internet, but instead running on someone's internal network or embedded in some device.

It is a dangerous trend for us to rely on browsers made mostly or entirely by businesses who care little for those environments because they make no money from them. There are good reasons that long-lived standards and forward compatibility are important, not least that whoever first developed some useful in-house service with a web front-end or manufactured some long-lived, high-value device may no longer be around to update things routinely according to the whims of Google or whoever.


The issue isn't that Google doesn't make money on intranets.

The issue is that the security landscape has gotten so much worse and continues to become more hostile, and private IP address space and a packet filter don't provide nearly as much protection as a lot of people want to think, and attacking internal applications from "outside" is commonplace. The trend towards zero-trust and such is driven more by the fact that there's no such thing has home anymore, at least as far as networks are concerned - there's no realistic way to keep the internet out.

And those IoT devices with long-lived security holes are landmines, not assets. I'm much less worried about "long-lived, high value" ones, because those are far more likely to get updates than cheap, fire-and-forget webcams and such.

I agree entirely that forward-compatibility is an extremely important consideration. Security, however, frequently pulls in the opposite direction, leaving an unpleasant tradeoff.

The trend will not reverse - I don't see how it realistically could. We live in the Red Queen's world.


You're arguing that there are no environments now where bad people can't penetrate and roam freely inside the local network? If so, I'm afraid I don't accept that premise at all. Even a basic firewall that accepts no unsolicited incoming traffic is highly effective in environments where you don't need to serve anything to the public Internet from inside your LAN. Between that and keeping software like web browsers and email systems that actively fetch data from outside updated, an average household or small business will be protected reasonably well against most routine threats.

The world is far bigger than cloud computing and IoT devices. There must be millions of little in-house web applications someone wrote long ago that are still useful, probably running on some 10-year-old PC in the corner, with some sort of scheduled back-ups if you're lucky. There is also no guarantee that even a high-value, long-lived engineering device manufactured a decade or more ago and still in perfect working order also still has ongoing software support. There is a huge amount of value locked into these old systems, and arbitrarily dismissing their relevance if they don't meet modern security standards that may or may not even be relevant in all the circumstances is like designing a building with such robust security that no-one can get inside, even the owners.


I believe the author is suggesting the royal ‘we’ drew the separation of concerns line inappropriately.

Is there a better way? I r not cryptographer.


It is also possible to use stunnel to do this, and the configuration to do so is really quite simple. It can be run both as a standing daemon or launched on-demand as an inetd service.

The thttpd web server can run modern TLS with this approach, and the footprint is much lighter than with Apache.


It takes less than 1 minute to correct its writing mistakes before publishing a message and still most people dont do it.

The time it takes to do an action is not enough to evaluate the task


> It takes 10 minutes to put an old HTTP server behind a reverse proxied nginx instance with auto-renewing letsencrypt certs

The point of the article is that not even this is enough, because letsencrypt will change protocols, TLS versions and ciphers will be obsoleted, etc etc.

Basically your entire stack will need to be kept continuously up to date.

Just setting up Nginx in a Ubuntu LTS release won’t be enough, because you always will need to have everything up to latest always. And obviously you need to automate that self-update process too.

So because the browser is insecure and allows JavaScript, everyone else who wants to serve a simple index.html will now need to be a full-on DevOps-expert.

To me that sounds pretty backwards. How about we just fix the JavaScript-security issue in the browser instead? Or would that be just too simple???

This is breaking the web in the sense that everything which is old will perish instead of being preserved.

Maybe I’ll go back to making my sites HTTP only. It certainly sounds simpler and more reliable than this...


I can update and maintain nginx and certbot(honestly I use lego) but I won't say I'm a DevOps expert. And you can deploy your static site on Netlify, S3 etc.


Ask your mom to "put an old HTTP server behind a reverse proxied nginx instance with auto-renewing letsencrypt certs" and time her. See if it takes 10 minutes.

Then ask someone to foot the server bill. See how many takers you get.

This is fine for corporations with IT departments, but when I was a high school student, I had a web page, and my web server was sitting under a desk in a random office. When I was in college, professors ran their own web servers.

A lot of innovation bubbled up, bottom-up.

Big tech stuck that with a fork. That's not a good thing.


Why can't you do that today?

Internet connections are much faster. Most people aren't under CG-NAT.

Even a raspberry pi can be a server.

What are you arguing here?

Why is your tech illiterate mum setting up a http server but can't do https?

Wouldn't it be better to create a blog on medium?

Or a site on square space?

How about a free site with GitHub pages?

I just don't understand the idea that people want to set up something and forget about it. That's how you get hacked and turned into part of a botnet.


I'm arguing:

(1) The poster arguing this was 10 minutes was being dishonest.

(2) As the original article said, it's a different internet if the only way to get something up is to go through Square Space or Github pages. It's much less decentralized, and much more corporate.

Yes, I do think the internet could have evolved to where a tech-illiterate mum could host her own web page from her router at home. It didn't, and we lost something in that process.


A high school student/college professor is clever enough to write web pages and setup web servers, but not clever enough to install encryption keys and certificates? Not buying it.


There is a difference between being able to do something once and being willing to take on some ongoing and occasionally time-consuming responsibility to maintain it.

Look at how many useful but Java-based demonstrations on academics' websites became inaccessible when the browsers decided Java plug-ins were evil and should be removed. What happened was not that people who had voluntarily spent considerable time over the course of possibly several years developing useful little bits of software suddenly dropped everything to redo all of that work again in a different language just because the browser developers had decided that other language was now flavour of the month. Instead, lots of valuable work was effectively lost.


They decided to drop java as a plugin because people would browse to a random webpage, and malware would automatically be downloaded to their machines.


Java plug-ins died off for a reason, but that doesn’t change the fact that deprecating http is effectively deleting decades worth of the internet for no good reason.

If someone can own my browser by mitm’ing a static html page, then they can do it more easily by serving malicious ads, or using seo / social engineering to steer me to a web server they control. I don’t buy that argument.

Also, browsers could run in a simple and secure legacy mode when they connect via http.


> Also, browsers could run in a simple and secure legacy mode when they connect via http.

:) What if, purely as a theoretical proposal, they display the webpage as normal, but just show a little icon in the address bar that marks the website as insecure?

Have I missed something? Is anybody actually talking about removing HTTP support from browsers? I don't think that this is the same scenario as Java or Flash at all, HTTP still works fine. All of the static websites that people are complaining about losing still load without any problems.

And even if it was the same scenario, Java is not a great example to use here, because the deprecation of Java and Flash, as painful as it was to many people, was also very clearly, almost universally recognized as necessary for security.

Java and Flash are probably the two best examples you could come up with if you wanted to argue, "sometimes it's necessary to take painful steps that break things to make a secure system. Sometimes you can't trust developers to do the right things until you force them."

Am I sad about Flash and Java? Of course, I have a fair amount of personal background in that area. We lost precious things. But should we have kept Java? No, of course not. Obviously not, that would have been such a terrible idea for both security and the Open web. I remember the pain of trying to get decent Flash support on Linux. It was a fantastic, open system for some people. But it was also proprietary, and filled with security holes, and being used in ridiculous ways for DRM and circumvention of Open browser standards, and frankly, the slow deprecation path just wasn't working.

I wish Flash had been handled better, but... I mean, we did have to get rid of it. I don't believe anyone could seriously argue to me that the web would be better if we were still using Java and Flash today.

So even in a theoretical world where we're actually talking about deprecating unencrypted HTTP support, we should still only be talking about preserving or emulating sites that will be lost. We shouldn't be talking about continuing to do something that's insecure.


The usual security arguments for dropping those plug-ins have always been a bit dubious. There is no doubt that the old plug-ins were bug-ridden security nightmares. However, click-to-play had mitigated the drive-by download problem. Perhaps more importantly, would an objective assessment of today's browsers really find that they are significantly more secure than the plug-ins were, where they have taken over providing similar functionality? Much the same attack surface is still there, it's just that the browsers are behind all of it now. The evergreen browsers tend to deploy updates more quietly, but if you check the changelogs, they still push out fixes for many significant security flaws in those updates.

I'm not sure arguments about the proprietary nature of the old plug-ins are very strong either. After all, the main cheerleader for dumping them initially was Apple, but to this day Apple relies on proprietary and patent-encumbered technologies for playing multimedia content on iOS where just about everyone else in the world is using technically superior formats with open standards by now.

I don't know if I would claim that the web would be better if we still had Java and Flash today. I think there are too many different dimensions to consider to make such a blanket statement. But I do think a lot of value was lost by turning them off, and I do think the security and openness benefits have been overstated, not because the plug-ins weren't deeply flawed in those respects but because people seem to overlook the all too similar failings in the replacements.


> However, click-to-play had mitigated the drive-by download problem

Only for people who were security conscious and willing to not load certain web pages. For normal people, click-to-play was just another pop-up to click through. I do generally support people's abilities to choose to do insecure things, but there's a strong argument that the point of the web is to securely run untrusted code, and allowing developers a single step to bypass that sandbox is kind of antithetical to what the web is.

> Perhaps more importantly, would an objective assessment of today's browsers really find that they are significantly more secure than the plug-ins were

I would be very surprised if this wasn't the case. It's not just that modern browsers are less bug-ridden, it's also that their permission models are fundamentally different. HTML5 still doesn't allow you the same level of filesystem access that Java and Flash did, and its replacements allow debugging and extending at the DOM/script/network level. It's hard to imagine a version of adblockers that would work with Java applets. In contrast, I can use uMatrix to turn on/off individual request types to specific subdomains.

I mention elsewhere that part of the problem with deprecation was that none of these companies allowed for effective emulation of the web stack. To be fair, part of the reason why emulation was (is) hard is that to this day, Java applets and Flash applets still have capabilities that can't be emulated in a web page. But that's also part of the security problem; we don't want those capabilities to be emulatable.

> because people seem to overlook the all too similar failings in the replacements

Flash just didn't work well on Linux. I couldn't watch Youtube videos. I remember how excited I was when Youtube started moving to HTML5 video containers instead of Flash, because the web doesn't have those problems, and I was so sick of trying to configure Flash plugins for Firefox in Ubuntu. Java plugins were also an issue, albeit to a somewhat lesser extent. But I used to always curse whenever I would see a Java plugin loading up, even as recently as 2015-2016 when I was using legacy enterprise apps. Not to mention Silverlight -- it's annoying that Apple uses proprietary codecs, but for a long time I just couldn't recommend Linux to anyone who wanted to have a Netflix account.

People have a rosy view of these systems, but they weren't necessarily the open utopia that people remember. They just worked well for some people in some configurations.

Given that post-deprecation Adobe still hasn't open-sourced any of its SWF runtime, I don't think there's strong evidence that this would have gotten any better without moving away from proprietary technologies and forcing devs to use Javascript. By and large, I think the replacements have all been a lot better. The only big exception I can think of is the awful DRM proposals for video, but at least the technology works mostly cross platform.

Even at the video level, a proprietary video codec just isn't comparable to a black-box piece of code where I can't look at the network requests, that has a completely separate permission model from my browser, etc... There's a reason why everyone was comfortable providing DRM in Flash/Java/Silverlight, but why in a post-plugin world Google felt it was necessary to provide a completely separate 'solution' rather than just move the DRM into Javascript.


+1

Even if there are good reasons, it;'s still effectively deleting decades worth of the internet.

To blithely say that it's trivial to slap together a reverse proxy and keep it updated is both factually wrong and missing the point: something has been lost, and it's sad.


...is there talk of browsers actually dropping support for http connections?


Every major browser had put Java applets behind at least a click-to-play safeguard long before that time.

I strongly suspect that the security arguments were always more of a convenient smokescreen than an honest concern. Browser developers wanted to drop Java applets because they wanted to dump some legacy plug-in infrastructure that was painful to maintain, and their management probably viewed support for old and unprofitable technologies as an acceptable loss to achieve that goal.


Everyone knows what happened. But the result was that a huge part of our history was lost. When we write a book, it is archived in the Library of Congress. As publishing moves online, and we deprecate technologies due to technical convenience, that's just lost.

Forever.

It's sad.


>Instead, lots of valuable work was effectively lost.

How? It's Java. You should be able to download the JAR and run it on any compatible JVM.


Java changed its security model at the same time, and applets needed to run inside a web browser. (You could fix this by modifying the source, but why bother, since no one would use the result in practice?)


That seems like an issue with Java/Oracle then, not browser manufacturers.

This has also come up with Flash, where Adobe still hasn't opened up the technology to the point where people can effectively emulate it.

If a technology is insecure, and it gets removed from a specific environment for security reasons, and simultaneously a company makes it so that it's impossible to run outside of that environment -- the deprecation wasn't really the problem then.

The reason we've lost massive numbers of Java applets and Flash apps isn't because they got deprecated from web browsers, it's because alternative environments and emulators were never built or given the support they needed. Mozilla/Google can't just decide to change the Java security model for native applets.


Applets weren't necessarily standalone software, though. I built several professionally, and they were all integrated into a wider web page, not just a self-contained program.

The changes by the plug-in developers were often unhelpful in the final days before we gave up on those technologies entirely, but let's not pretend they were the root cause of the plug-ins' demise.


> Applets weren't necessarily standalone software

That's a very good point.

I don't think they were the root cause, but even though there are scenarios like you're talking about, I still think we'd be in a different world today if different companies were handling those plugins.

It's worth noting that from a preservation perspective, today we're at the point where people are pretty realistically looking into emulating SWF runtimes in Javascript inside web browsers. If that happened, you wouldn't even need click-to-play. SWFs would just work with the same sandboxing guarantees as the browser.

The biggest reason that hasn't really taken off is because the SWF format still hasn't been opened up. The reason why there isn't just a drop-in WASM library that lets you run Flash code on the web is because of Adobe, not Mozilla or Google.

Of course, especially in the case of Java we could only ever emulate features that browsers support. But that's why the plugins were deprecated in the first place; because they supported inherently insecure features that we either don't want in the browser, or don't want to support in the same way.

But that's true for lots of platforms, and yet I can already run C/Rust/Lua code in a web browser. The Lua runtime had been cross-compiled to ASM.js before Flash was dead (although today we have a lot better speed). But the difference between Lua/C and Java was that the most common Java runtime was proprietary. OpenJDK browser plugins would break most sites that I was using. So there wasn't anybody who was sitting down to say, "excluding the features that browsers don't support, is there any of this code that's salvageable?" They weren't really allowed to do that.


Even assuming that were technically possible, why should we assume that anyone who visited those pages and found them useful would know what a JAR or JVM is?


Everyone mentioning their quick and scrappy solutions to setting up TLS termination is completely missing the spirit of the author’s letter. Did y’all even read it?


You mean the point that "you could have set up a web server in 2000 and it could still be running today, working perfectly well"

Try to setup a windows 98 machine as a web server and see how it goes (Windows XP only came out in 2002). It doesn't do HTTP/1.1 so it's good question whether clients would be able to connect at all.


> Try to setup a windows 98 machine as a web server and see how it goes

Windows 98 was a client OS, it was never intended for this. A proper test would be Windows NT 4.0 Server. Or more realistically for the time frame, Solaris 7 or 8.


Any web server software set up in 2000 and still running today unpatched could be pwned quickly. Including and especially NT 4.0.

When you're running a server, TLS is not the only service you are dependent on; you're also dependent on security updates. If they're not backported, you'll need to make version upgrades.

Arguably it's better to think of every piece of software running on a server like it's a service, to maintain security and performance in an Internet full of hostile actors.

I don't even understand the mindset of wanting to run a live server on ancient software, aside from doing it as a hobby. In which case, it's pretty typical for such hobbies to require extra work and care. Driving around in a car from 1940s takes more maintenance work, and is less safe, than a modern car, and everyone gets that.


I think you misunderstood my comment, I'm not advocating doing this. I was simply correcting the person above me who appears to be under the impression that web servers in the 90s ran on a client OS.


W98 had a simple HTTP home server available for install, as did BeOS I think. Nothing comparable to Apache/IIS, but it was a thing.

Obviously forget about any security.


Come, now. In '98 I was writing cgi-bin scripts in perl & c serving websites over apache; by 2000 I was on LAMP which was becoming a de-facto standard web stack.

Of course, I was rolling my own query sanitizers, which was the style at the time; and my php.ini did allow GET/POST to inject global variables. Not to mention CVEs discovered between now and then. So I wouldn't want that server from year 2000 to stay running untouched, but win98 is a strawman.


Incidentally, in 2018 I decommissioned the last perl scripts in the largest US bank, originally written decade(s) ago and handling billions per day (if not trillions).

Could have been yours ;)


> Try to setup a windows 98 machine as a web server

Just so you know, Windows 2000 is vastly more stable than the 9x branch and is perfectly usable, so you should upgrade.


Good point! Win2k was built on the NT kernel and probably would have been "fine" as a webserver.


Windows XP came out in 2001.


You're right. Commenters seem to comment based strictly on their perception of the title.

I think however, that authors point was moot already - your network connected machine can't be static, it shouldn't be in years. There are constantly new RCE's and other exploits since ages. Your network connected machine must be maintained, whether it's a basic web server or your phone.


> your network connected machine can't be static, it shouldn't be in years.

Why not? Imagine if it's a purpose built webserver on a microcontroller[^1] which only serves strictly static pages or text files.

[^1]: http://tuxgraphics.org/electronics/200611/embedded-webserver...


Then it's pwned and useless-at-best as soon as an exploit is found, and can never be updated.


Wouldn’t there be a point where we run out of readily exploitable vulnerabilities against a specific platform ?

For instance if I was running a server on an 50 yo IBM framework serving static pages, how many serious attack vectors have been left unpatched at this point ? (ignoring DDOS type of issues where the content is not compromised)


There was a 26-year-old bash bug a few years back. How would you ever know when you'd found the last bug? Unless you do some formal verification of that 50yo IBM framework, I certainly wouldn't trust it to be exposed to the internet.


I would. It's so obscure that it deflects script kiddies with just that and the serious ones would break anything anyway.


You're modeling ability as a binary when it's more like a bell curve. Most attackers are somewhere in the middle and old systems are going to be most vulnerable to them.


> There are constantly new RCE's and other exploits since ages.

And many/most of them connected to the TSL/HTTPS-stack, due to the complexity it brings.


Yes, making websites secure requires work and maintenance and modernisation. The author even admits this. I think i'm ok with what's being lost in this transition.


You might be right but still let me see if can get this analogy right: The author is upset that we have to build a new house and we can't live in the old huts because they are not considered safe anymore. The scrappy solution would be to to keep the hut as it is and build a wall around it. You still risk someone jumping over the fence though.


It’s more that you can’t live in a house now, you have to stay in a flat built and continuously maintained by others. Where before you could have built a simple, sturdy, and drafty castle that would stand for centuries, now you get a flat in a modern super-secure condo, which is very energy-efficient but requires constant maintenance not to crumble and decay.


Every building needs upkeep. Whether it’s a castle or a cottage.

If you don’t keep up the repairs, eventually the roof fails, rain gets in & then it’s a relatively quick slide into total ruin.


Some upkeep =/= having to repaint the whole thing every 3 months.


His last sentence:

> (At the same time this is necessary to keep HTTPS secure, and HTTPS itself is necessary for the usual reasons. But let's not pretend that nothing is being lost in this shift.)

So, to stay within your analogy: He acknowledges the need for new houses, but says that huts had a unique flair which is lost now.


I think in this analogy the issue I see it that we treat a one-man hut and airport terminal the same. For some buildings it's fine to have higher risks than others.

Of course people would need to be educated on those risks, which would probably be the biggest issue.


> Of course people would need to be educated on those risks, which would probably be the biggest issue.

Frankly, that's impossible in any reasonable timeframe compared to just not allowing unsafe "huts".


I agree with the author's points entirely, but I'm going to be the devil's advocate here and argue that this is fine.

Sure, old websites will stop working, but just as we shut down our FM radio and analog TV to make room for new amazing technology, and therefore rendered several generations of radio and TV devices useless, the internet will need to learn to live with the fact we can't possibly support its entire spectrum of functionality forever.

However, I see this as a tooling and ergonomics issue. Despite what people say about certbot, it is still not 100% trivial to use it. If your stack differs slightly from the canonical HTTPS server, you're gonna have issues. I'm not saying these problems are inherent to certbot, just that there is room for improvement.

Once we have normalized how certificates are signed and verified, and use encryption methods that can easily be tuned for increased computing power, and more importantly, once HTTP 1.0 is no longer an expectation, I believe the amount of manual work needed to maintain a server will go down again.

We're at a transition phase and we all know these are never easy (except if you're Apple and you're transitioning CPUs architectures, apparently).


And as you sunset FM radio, you cut huge swaths of humanity out of yet another communications channel. FM radios are cheap, well-established technology, perfectly suited to mass communications (as in emergency alerts, etc). It survives suboptimal conditions (fuzzy broadcasts are still intelligible, receivers can be operated on hand-crank power, replacing equipment can be done at a dollar-store, etc). The amazing new technology that replaces it is without exception more complex, less reliable, and requires more infrastructure, and the associated costs invariable lock some segment of society out of participation.

On the web side of this analogy, we're so fortunate to have people like Neocities trying to rebuild those bridges to the beginners, the resource-deprived, and the other edges of society, but with every crank of this ratchet we (literally!) excommunicate another set of our species, and that's depressing as hell.


My very, very old Telefunken FM Radio in my workshop full of dust and dirt works flawlessly. I tried to replace it with a modern, shiny one. But this new one broke after a few months. Now I placed the old one where it was for centuries and now it happily plays my favorite program again.


Some old sites are valuable for archeology, some because they contain information that’s still true and not replicated anywhere else, some simply because they are interesting culturally.

To say it’s ok to bail on all old sites is to say that it’s ok to bail on all old books.

Someone put time and effort in to freely sharing these things for a reason, and it’s a loss for us all to throw it out in the name of “new”.


Books, under normal conditions, will not decay by themselves either. However a librarian is still very much needed to preserve and organize them.

The main issue is that HTTPS as it is developing right now is the antithesis of HTTP1. Everything that HTTP1 relies on is defines as bad by HTTPS. Either we change the direction of HTTPS or we drop HTTP. We can't have both.

Of course, if the server is up and connected to the internet, it will always be accessible by browsers that can be configured to ignore the missing HTTPS features, as it is now. But as I said on a different comment we should not rely on this being here for much longer.


Definitely agree. I’m glad we’re having these discussions and that these points are being brought up.


The problems with archiving the web are numerous but I find it frustrating when this argument is used without getting historians involved. It feels like people use the idea of archiving as a cudgel rather than actually supporting real work in this area.


Though it seems counter to my argument, I agree with you. We need to stop using cudgels and just focus on the real work needed.


Funding is the core problem. My wife is a historian and every time the potential of things like digitization or archiving digital content comes up it always comes back to "grants are so incredibly small and archives don't have enough money to just maintain the books they already have, let alone expand". There's a lot of interesting research in this area but it isn't being put into practice because there is no funding.


Analog TV had to be moved because it was taking up limited resources. Old websites aren't taking up valuable real estate. There's no benefit to shutting them down.


Of course there is. If they're HTTP, they're insecure, which makes them an open attack vector.

Modern computer security is about removing as many known possible attack vectors as possible.

So that's the benefit.

EDIT: to those saying browsers are sandboxed or that there's nothing sensitive, it projects against e.g. Comcast injecting JavaScript into pages from other sites. [1] There are all sorts of types of bad actors out there. Surely I don't need to list them all here.

[1] https://thenextweb.com/insights/2017/12/11/comcast-continues...


There's no point having a web browser that doesn't browse just because it's more secure that way! Browsers have never had better sandboxes. Firefox disables certain features for sites served via plain HTTP. It's safer now to browse unencrypted sites than it was five years ago. There's no reason to remove functionality now.


Here I disagree. HTTPS gives guarantee to visitors of the site that they can trust the information being served to them.

A malicious actor hijacking plain HTTP connections does not necessarily have to inject code that harms the user's computer directly. He/she could also just alter bits and pieces of the served content to trick the user into doing something not in his/her interest.

So while having better browser sandboxing and protection is good (and welcome), HTTPS is still necessary.


Old and unmaintained websites are not collecting any information, let alone sensitive information. They’re mainly read-only, informative content that the web would be infinitely worse-off without.


The Internet Archive helps maintain that information far more reliably than a 20-year-old unpatched webserver could.


The internet archive is unfortunately poorly indexed/searchable bordering on not at all.


> If they're HTTP, they're insecure, which makes them an open attack vector.

No it doesn't. HTTPS ensures that the data is not spied on or tampered with by those in the middle (so it does protect against what Comcast does), but does not prevent any other sorts of attacks (e.g. the server operator adding malicious files into their own server).


> it projects against e.g. Comcast injecting JavaScript into pages from other sites.

I should add a script to detect such things then, and if it finds one, display its own message to the user, to tell the user to disable JavaScript, with instructions about how to do so.


> Of course there is. If they're HTTP, they're insecure, which makes them an open attack vector.

If so they are only insecure because malicious JS can be MITMed into them, and realistically speaking browsers can’t defend against malicious JS.

> Modern computer security is about removing as many known possible attack vectors as possible.

So let’s remove enabled-by-default JS permissions instead of removing HTTP-content. Most old websites don’t depend on JS and would in fact be just fine.

Even better: make JS opt-in only for HTTP websites, and let users like me refuse the “upgrade” to HTTPS.


Replacing FM radio is a huge societal mistake. Its simplicity enabled countless innovations that would and will not be possible with satellite radio. The technology (unlike analog TV) works perfectly fine for its core purpose and has numerous spinoffs (from radio clocks to OP-1 built-in radio sampler).


FM radio degraded well.


Indeed. As I understand it, *BSD users are currently left out of wildcard certs from Let's Encrypt. HN runs behind an nginx proxy because the forum software doesn't support HTTPS.


There are a few certbot clients for openbsd, at least. I’m using one that was written in bash with httpd, and I think they added a new one to the base image. Using the script was a bit annoying because I had to install bash from ports.

As on my Linux and Synology machines, the bash script has broken once or twice because it’s against modern best practices to define and stick with stable protocols.

Sometimes I think it would be easier to rewind to the 90’s web and build a sane ecosystem on top of that. Every aspect of the web that I interact with has gotten worse in the last decade.

(Also, HN’s is using a non-wildcard cert from digicert, at least according to my web browser).


I was responding to OP regarding non-trivial, which, I dare say, your reply agrees with. I mean, geez, you've resorted to Bash in OpenBSD.

The Arc Language app that this forum runs on doesn't support HTTPS, so wherever the cert comes from, accessing the site is through a reverse proxy.


Well, that was before they added acme-client, which works out of the box, more or less:

https://man.openbsd.org/acme-client.1

I chose the bash client over the python client because I didn’t want to use pip to pull unvetted software from randos on the Internet. (Also, I hate python, and eliminating use cases for it makes me happy.)

Anyway, the bash script is still quite popular, and is extremely reliable. Since I used it, they eliminated the bash dependency, and now it is unix shell compliant:

https://github.com/acmesh-official/acme.sh

I would definitely use it in the future if I was configuring a Linux box to renew certificates.

The breakages I encountered were all on the Let’s Encrypt side, and broke all the clients, including the official one.

Anyway, it has been trivial to use Let’s Encrypt with OpenBSD for many years.


In my searching, I had not come acress acme.sh and I am not aware of using acme-client for wild card certs.


What is the issue with *BSD and LE wildcard certs? Would be interesting to hear more about that.



Certbot is just one of many ACME clients. AFAICT acme.sh can do wildcard certs, and it’s not dependent on Bash.

https://github.com/acmesh-official/acme.sh


What? OpenBSD works just fine.


The root problem here seems to be that web browsers (and to some extent servers) have become quite insecure in practice due to the insane complexity of all the different protocols they now support. If you are using Mosaic to access ancient web sites the most an attacker can do is to change the content.

Now remote attackers have a simply vast attack surface. They can actually run code on your computer. History has shown such code can never be perfectly sandboxed. So you need to be very sure you are where you think you are and that you are only getting content from that place. TLS is an essential band aid fix.

The same sort of thing comes up anywhere HTML is used. People sometimes claim that email is inherently insecure. In most cases it turns out that html email is inherently insecure.

It seems that any popular protocol eventually gets extended to the point where it is impossible to keep it secure. It also seems that the popularity of the protocol causes a period of denial.


Let’s be honest: remote attackers could run remote code on your computer running mosaic a lot easier than today with modern chrome.

RCE in mosaic or Netscape was probably trivial, it just wasn’t as well studied as today. Just look at how many times those browsers would crash in the normal course of web browsing, even back then. Nobody was intensely fuzzing their html parsing engines, image processing libraries, scripting elements, plugins etc.

Heck, IE used to load and run arbitrary code as “activex” controls. No fancy exploit needed!


Opera not much, it was pretty decent and full of features. But nearly all decent "web" software required IE with Active X thru an OCX. Also there was a Netscape plugin I think.


I don't agree... I think browsers are not the weak link here. I'll agree they have a large attack surface, but the communication channel needs to be secure regardless of what client receives it.

> the most an attacker can do is to change the content.

Sure , but I would argue, depending on on the content, that malicious content can be just as bad as malicious code. Just ask anyone who has been phished.


I agree with this wholeheartedly.

I had to maintain a lot of old custom appliances and the like for which no ready replacement existed. Niche stuff where you had one or two vendors in the whole arena. If they were running on Apache, it was hidden somewhere with a big "WARRANTY NULL AND VOID" sticker. For all of these custom jobs, HTTPS was an afterthought, if it was present at all. For these, I had to generate cert requests through a menu system, load up certs through a menu system, and the like. I couldn't just CertBot it. That's never going to happen.

Frankly, the latest cult fad ("all must be encrypted, heretic!") has not made my life easier nor brought any benefit to my users. Nobody was going to MitM for this stuff. It's just another tiresome fashion like the people who relentlessly put W3C validation boxes at the bottom of their webpages, only now it is getting shoved through by the same browser vendors who wonder if us mere mortals need to see URLs at all.


As someone who live in an country with no net-neutrality and government-mandated censorship, I'm glad https is everywhere now. My government requires all isp to intercept all dns requests and plain http requests to block access to banned domains. Not only that, the ISPs are doubling down by blocking domains of competing services (the ISP I use block netflix for years to promote their own streaming service, only unblocking it recently after netflix finally partner with them).

They also implement the blocking by intercepting http HOST header, so even if you somehow bypass their dns filtering, they can still got you if the censored site use plain http (they'll replace the response with a redirect to their censorship portal, which fully laden with ads). They also inject ads to any non-https page at least once every day. Thanks god for pihole and vpn (when I'm using mobile connection) I can still browse whatever I want.


That seems like a case where a reverse proxy like NGINX[1] would be useful. The configuration would basically be:

User->HTTPS over public internet->NGINX->HTTP on your private network->Custom appliances

The most vulnerable link (the public internet part) would still be encrypted, and browsers won't show the scary warnings. The HTTP connection would be confined to your private network, where MITM is less of a concern.

You can use one NGINX instance to reverse proxy multiple different appliances, so the maintenance overhead wouldn't be that high.

[1] https://docs.nginx.com/nginx/admin-guide/web-server/reverse-...


It's funny you should mention that. A new guy (who has since left) who was super into the Let's Encrypt thing before running up against the org policy of only using a certain certificate vendor, got excited about the "problem," used NGINX, and then had to take it down for reasons I wasn't privy to. I didn't look into the reasons why.


Probably stepped on some toes. If they're not familiar with LE, it's because they think anything free has a catch, or they're just ignorant and want to keep sending money to Norton because that's the antivirus that came with their computer all those years ago.


Oh, the guy who wanted NGINX was familiar with Let's Encrypt, but the org-wide policy was set somewhere far, far away from either of us. The approved vendor changed at least twice that I can recall.


So, I'm definitely not against vanilla HTTP where appropriate, but here are three arguments for the "all must be encrypted, heretic!" side of things:

1. The vast majority of web developers/IT people/etc. aren't really knowledgeable enough to make the call whether something actually needs to be encrypted. Very smart developers have told me they weren't worried about security because their application didn't hold any sensitive data. Sometimes this was because they thought emails and/or passwords weren't sensitive data. I've also had very smart people tell me they weren't worried about security because nobody had any incentive to hack their server. But there is always incentive for bad people to hack a server: even if they can't ransomware you, they can host botnets or child pornography. Having seen situations like this enough, I'm no longer even convinced that even I am correct when I think security isn't necessary. Maybe you're qualified to make that call, but even then, evaluating the system may be harder than just adding security.[1]

2. Just because your system doesn't need HTTPS now, doesn't mean it never will. YAGNI conveniently doesn't specify whether "A" stands for "Are" or "Aren't". In my experience, most systems involving HTTP do eventually have a requirement that passes sensitive data over HTTP, and it would be all-too-easy to forget that channel wasn't encrypted.

3. Even if you don't need encryption for yourself, do it for everyone else who does need encryption. Before HTTPS was required in every browser, users would happily submit their passwords over completely unencrypted channels. Now, browsers will give big warnings that hopefully prevent users from doing this. Those warnings probably aren't necessary if, for example, you're submitting an anonymous comment to a Disqus conversation. But it's important not to normalize clicking past those warnings for nontechnical users, because if they click past those warnings to post an anonymoust Disqus comment, they'll click past them to submit a password. And in a more political sense, normalizing encryption for stuff where it isn't important protects encryption for stuff where it is. "If you are encrypting you must be hiding something bad" is a dangerous narrative which is pervasive in politics, and default-on encryption is one of the best tools against that.

[1] As an example of this, it appears that there are a few attack vectors in your own posts, which you either didn't think of or don't care about, but which I would very much care about as a user of your library catalog.


I've heard these arguments. I am not unsympathetic.

For the first, I don't know what to tell you. If they aren't qualified to know when security must exist, they are not likely qualified to implement it.

For the second, when it is needed, it can be added. A staff directory with no interaction does not need it now. It may never need it.

As to the third, in a story, here is a great argument against that:

So years ago I ran this dumb little site, by request, for the users to submit stuff, nothing too special. They suddenly wanted the HTTPS, which was at that time outside of their budget, which was zero, and we would have had to move it off of a shared IP (this was some time ago). I told them it wasn't necessary for their use case.

"But the LOCK thing makes it safe!" They were so insistent ... but they still demanded the results be sent to them over SMTP. Oh, how I facepalmed. I explained that SMTP was its own channel. No, no, they insisted. The LOCK.

HTTPS can result in a false sense of security.

At the end of the day, I think I would rather have choices available even if mistakes could be made. Removing choice from people for their own good is fantastic if and only if it will never ever cause any kind of issue on its own. Here, in the article, we discuss some of those issues. If HTTPS were possible to just implement retroactively with nothing ever breaking, not even some ancient software on a floppy disk, fine. For anything other, it's a tradeoff, and I believe for tradeoffs we ought to have the ability to assess the tradeoffs and make a choice. Even choices others do not agree with!


> For the first, I don't know what to tell you. If they aren't qualified to know when security must exist, they are not likely qualified to implement it.

...which is why numerous high-quality implementations already exist.

There isn't a way to say this without risking offending you, but if you can take it for what it is, I think you would benefit from it: you have posted a few examples in this thread where you think no one would care about encryption, and there are people posting here saying they do care about encryption in those cases. It might behoove you to approach this with a bit of humility and acknowledge that you are one of the people who isn't qualified to know when people need/want security, and your opinions are borne from that fact.


This feels like a no-true-scotsman argument. A true security-minded person understands the benefits of TLS, and if you don't, then you're not qualified to understand security.


I'd view it as more tautological than that. "If you don't understand security then you don't understand security" isn't really controversial.


"If you have not yet attained Buddhahood, you cannot understand the value of enlightenment." is also a non-controversial tautology, but it also doesn't leave any room for anyone to do anything else.


If you're being paid to secure a system, there isn't room for you to not secure the system.


The most secure system, naturally, being one that is turned off with its network connection desoldered.

At last, nirvana!


So clever! But, obviously we're talking about making a good-faith effort to secure servers while allowing them to provide their intended functions.

Refusing to implement HTTPS because you don't know how to use Certbot isn't that.


As stated, Certbot wouldn't work in the case I mentioned.


Based on your description, it would work just fine, you're just prevented by contract from using it.


I think there are people who care about just about everything. Let's make those certificates expire every month. Also without a way to say it without risking offending someone: the tinfoil hat brigade can make everything grind to a halt. People can have concerns, and they can be very invested in those concerns, but they can be so concerned that I don't know if I could ever satisfy them. They could be concerned about what operating system that HTTPS-serving software runs on, and their set of requirements might be such that I cannot run anything.


> I think there are people who care about just about everything.

True. But I'm not one of those people. You'll note that there are a few of your examples which I haven't objected to. That's because I don't have objections to all of your examples.

> Let's make those certificates expire every month.

I get your point--people do ask for excessive security measures sometimes. But as an aside, the point of frequent certificate expiration has nothing to do with security. It's to encourage automation of renewals.


And with that dreadful menuing system I described above, there was no way to automate that. I had even considered using Expect!

So the encouragement has resulted in a detriment to me: more work.

Oh, for a little choice! But the one-size-fits-all parade marches onward.


Yeah it is more work. If you're a sysadmin, that is your job and it's why you get paid. You're welcome to choose another job if it's too much work for you.


Yes, it is more work. And doing it doing it once every month instead of once a year is yet more work. But is it valuable work? Does that work accomplish anything? Or is that effort wasted when I could have been doing other things?

I was not a sysadmin -- I kept trying to avoid that, but got sucked in, as a programmer (my title), with the reasoning I have been doing "web stuff" for a long time, as well as the sysadmin duties that were required for setting up websites "back in the day." I could have been programming and solving real problems on a more permanent basis, but here I am, carrying water with a hole in the bottom of the bucket. Once the DevOps wand got waved, I got out.

If people are truly concerned about security, even the much-disliked sysadmin duties foisted upon me could have had the time more wisely spent then flipping certs around.


1. I am extremely skeptical of your claim that cert renewals couldn't be automated.

2. Nobody here is saying that you need to renew your certs every month. Just because some completely different person asked for something that didn't provide any value, doesn't prove that what anyone here is saying is incorrect.


Okay, be skeptical. I didn't want to void our support contract over finding out. Would you come to my rescue if I did?

First the certs need to be renewed every three years. And some browsers want to raise warnings if they're past a year old. And Let's Encrypt is down to three months. Just waiting for the next click of the ratchet.


> Okay, be skeptical. I didn't want to void our support contract over finding out.

Really? Your support contract would be voided if you automated certificate renewal? If what you're saying is true, the problem isn't with short renewal times, it's with your absurd support contract. Automatic renewal is the industry standard at this point. If anything, your support contract should be voided if an error occurs because you failed to automate this. I suppose it's possible that your support contract is that absurd, but given it sounds like you didn't even check, it seems a lot more likely that you don't know how to automate it and refuse to learn.

You don't get to critique Let's Encrypt, a system built with automatic renewal as a fundamental component, if you refuse to use the very simple to use tools[1] they provide for automatic renewal. Maybe it's the support contract's fault, maybe it's your fault, but it's definitely not LetsEncrypt's fault that you're stuck in 2010 through incompetence or bad contract negotiation. You could spend literally 5 minutes per server and never have this problem again.

[1] https://certbot.eff.org/


All of the cert stuff was hidden behind a very complex series of menuing and more. I keep saying it in different ways: This wasn't just an Apache server.

Could I have pried behind the curtain? Yes? Would it have worked? Most likey! Were there lots of big warnings about not screwing with various sections of the configuration even if I could get to them? Also yes. They really didn't want you to interact with the system beyond a few set points and that was clarified to me in a call with tech support. I didn't like it, but that's what I had to work with.

This just wasn't one a thousand bog-standard Apache rollouts that you could chuck certs into. Want your CSR? Go through their menu system to generate it. Want to install it? Upload it to this specific directory, then hit the menus again.

CertBot is fine for what it does. Great. But it wasn't appropriate for what we had.


Sounds like a valid complaint about your contract, not a valid complaint about systems which you aren't using as intended.


Another one of the servers isn't based on Apache at all, it's a compiled executable (yeah, .exe) running on Windows. It starts off of .ini files.

CertBot doesn't work everywhere for everything that has ever served HTTPS in the history of computing. This shouldn't be something I have to mention but I guess I have to do it.


> Another one of the servers isn't based on Apache at all, it's a compiled executable (yeah, .exe) running on Windows. It starts off of .ini files.

So? If you think any of what you've said means Certbot can't be used: again, it's pretty clear that you don't know what Certbot does.

Certbot works anywhere you have a command line and an internet connection, and can be automated if you have cron or a cron-like utility.

There might be a bit more complexity if you have to open a port for callback or store the certs in memory or in a database, but we're still talking < 20 lines of shell code.

> CertBot doesn't work everywhere for everything that has ever served HTTPS in the history of computing. This shouldn't be something I have to mention but I guess I have to do it.

That may be true, but so far all the examples you've given are just examples of you not knowing how Certbot works.

Really dude, I don't know why you want to have an argument about Certbot without knowing anything about Certbot. Anyone who spends a few minutes reading the Certbot docs can see you haven't researched it. Probably nobody is reading this besides me, but if they are, you aren't impressing them, and you aren't persuading me. There's nothing wrong with not knowing anything about Certbot, but it's a bit silly to pretend you do when you don't.

If there are technical reasons you can't use Certbot, you certainly haven't said any of them, and the things you think are reasons just demonstrate a lack of knowledge. Again, there's nothing wrong with not knowing things. But seriously, this would save you so much time! Why wouldn't you at least look into it?


> If they aren't qualified to know when security must exist, they are not likely qualified to implement it

Actually that's incorrect. It's simple to add a LetsEncrypt cert in the right way -- but not easy to come up with all possible ways people might want to attack your site.

@kerkeslager wrote: "But there is always incentive for bad people to hack a server ..."

Those are good reasons, the ones you listed -- and yet another reason is that someone might want to use your website or app, to break into someone's else's website, e.g. by adding a link to, say, Google's login page, but the link is in fact to a password stealing site. -- And it's impossible to know when or if someone has the motivation to do such things to some of one's visitors / users.


> 1. The vast majority of web developers/IT people/etc. aren't really knowledgeable enough to make the call whether something actually needs to be encrypted. > 2. Just because your system doesn't need HTTPS now, doesn't mean it never will

The web... used to be a place where people, companies, and organizations shared linkable information publicly. The whole point was to make a massive web of interlinked information. If your goal is to contribute to this web, the cost of entry was to buy a DNS name and push out your content on an inexpensive server.

The modern web has greatly degraded this experience and HTTPS adds friction and implementation costs which degrades it even more so more and more information which used to be easily shared and accessible becomes trapped in FaceBook and other walled gardens.

> 3. Even if you don't need encryption for yourself, do it for everyone else who does need encryption.

I get this, but understand that lots of small organizations and private individuals aren't going to pony up the time/ money to bridge over to the fully encrypted web and will just become nodes on FaceBook or other large sites where hosting is "burden-free".

The open web is more or less a memory already and this is just another nail in the coffin.


I too mourn the failure of the open web to gain traction, but I don't think you've identified the causes correctly.

1) I disagree that the modern web has degraded this experience much, if at all. If anything, the tools today are much better, easier, and more mature. Perhaps there's a few extra steps now, but Apache today is much easier to use than Apache in 1996, including things like installing it from a package manager. If you don't consider things like NearlyFreeSpeech and DigitalOcean "walled gardens", these have gotten much better as well. A few years back, I spent 30 minutes installing Wordpress and my completely nontechnical father was able to build a website. So no, things have not gotten harder, they've gotten easier. HTTPS perhaps makes things minimally harder, but many hosts will set up HTTPS for you with a free support ticket these days.

2) Removing the burden of HTTPS, and indeed removing the burden of a great many other things, still wouldn't bring you close to the ease of entry of Facebook or other walled gardens. Even though entry into the open web has gotten easier, it there has been a migration away from the open web because the closed web is so much easier. This isn't a problem that will be solved by getting rid of HTTPS. It's a problem that will only be solved by hacking open source software that does what Facebook et al does.


I don't even disagree that HTTPS by itself is not needed for that use case; but in my experience those "old custom appliances" are riddled with unpatched security holes and shouldn't be left open to the Internet anyway, lest they become zombie members of a botnet. Are those an exception?


"Niche stuff where you had one or two vendors in the whole arena."

If we didn't have them open to the Internet, we would have no service. There are no choices in that arena besides strawberry and vanilla. That is it, that is all.

In this case, your requirement would result in the service not existing. This is not helpful to what we're trying to do.


I think the counter-argument here is that by existing in their current form, these products either are now, or will in the future be, used as part of botstorms, exploited for illegal purposes, etc.

I'm sympathetic to your argument, but I've also seen a little tiny "I'm just storing a list of the CDs I own in a text file" apps blow up with multiple gigs of unwanted data, which _probably_ would not have happened with HTTPS.

Overall I'm on the side of "there must be some exceptions," but I have to admit that every month it's harder and harder to think of what the legitimate exceptions might actually be, given the toxic nature of the internet.


> has not made my life easier nor brought any benefit to my users

So I'm curious, is this appliance on a private network or something? That's they only way I see that it doesn't bring any benefit. If it is going out onto the public internet, I would think encryption and integrity would be a huge concern.


It goes out on the public. It's not a target because it is a library catalog. Nobody is going to man-in-the-middle looking up which shelf a book is on. I mean, I am sure you can come up with a Sneakers-style plot where it is important but no, not realistically. Could it be done? Certainly! Why would they? What's the benefit?

There's just tons of stuff out there that exists where, honest-to-gosh, credit card details and HIPAA compliance do not happen. I know Hacker News leans very heavy toward the Silicon Valley side, but I swear stuff happens in the flyover states that involves computers. It might be pedestrian and unexciting, and nobody will IPO, but they do happen.


> It's not a target because it is a library catalog.

Oh! That's actually a great little encapsulation of the larger problem here.

Before COVID hit, I was a volunteer teacher at a Girls Who Code class at a library. Most of the library's computers were running Windows 7, which of course lost security updates in January.

One of the other volunteers remarked: "Someone needs to update those to Windows 10."

I answered: "Someone should update them, yes. But no one is going to."

I don't even know if those old laptops could run Windows 10. Should the library really spend money on replacing all of them? As opposed to buying books, or teaching more students?

---

There was an article on Hacker News some time back about how the NYC subway system runs OS/2. A lot commenters said this is a huge security risk—sure, it's ostensibly not connected to the internet, but who really knows?

But, what should be done about it? It doesn't make sense to switch out the architecture of a city's subway system every 30 years—I'm not convinced it makes sense even every 50 or 100 years. How do you set up a system like that?


We have some machines that still run Windows 7 at the office, while we don't use Windows 10 for anything beyond isolated testing environments. This is a result of assessing the risks of using Windows 10 as being greater overall than the risks of using Windows 7 in the relevant cases, despite the state of official support and lack of any further security patches. And that in turn is in no small part because Windows 10 has a track record of breaking things that would be important to our business operations. Newer is not always better, and being more secure in some respects is not always being more useful overall.


For your office specifically, have you looked into Windows 10 LTSC? That's my solution when I need to run Windows at home.


Yes, we did. The higher editions of Windows 10 do seem to be qualitatively different products that don't have the technical deal-breakers we are concerned about. Unfortunately, as far as we could tell, there was no (legal, properly supported) way to get hold of any of them for small businesses like ours through simple one-off purchases of permanent licences.


I have a lot I experience navigating Microsoft's licensing for small businesses. I have a Customer who needed Windows 10 LTSC for some PCs running expensive laboratory instruments as a recent example of needing to do just what you're looking for.

You can acquire a permanent license for Windows 10 LTSC through Microsoft's Open Business licensing program. There is a minimum initial purchase quantity of 5 SKUs, but any competent reseller will just pad your order with the lowest-price-in-the-catalog SKU to get you up to that minimum.

The Open License Agreement itself expires in two years, meaning that you're subject to the minimum 5 SKU purchase to start a new one at the end of 2 years. During the term of the Agreement you can purchase licenses piecemeal. Regardless of the Agreement's term the software you license thru the program is perpetually licensed.

This won't make it any cheaper, though. Windows 10 LTSC is ridiculously expensive, to me, for what it is. Licenses acquired through this program are transferable to new hardware, at least. That's why I used it a lot over the years. Buying Office and transferring it to a new PC once in the useful life ended up being a cost savings over buying OEM Office with the original and replacement PCs.


Thank you for sharing those insights.

The idea that you have to go through a dealer, join some overcomplicated volume licensing programme, possibly buy extra stuff, and probably pay a premium for the privilege just to get a legitimate copy of LTSC to use doesn't sit well with us.

If Microsoft offered LTSC as a one-time, off-the-shelf purchase with no strings attached, I expect we'd buy several copies immediately. It seems to be the only version of Windows 10 we might actually want, other than for having the same as our customers/clients for testing purposes. But as a small business, we have limited time and resources, and we have remarkably little interest in playing big business games.


I don't like it either, but that's proprietary software. Personally, I wish my Customers didn't have business-critical applications that keep them tied to Windows and other proprietary software.


I suppose my point is that it wasn't how proprietary software tended to work until relatively recently. For many years, we (assorted small businesses) were using the Pro editions of Windows with no drama. This only became an issue when Microsoft chose to make the Pro edition of Windows 10 unsuitable for professional use (in our humble opinion) while simultaneously locking the more suitable editions behind Big Organisation Hassle.

As a direct result of that decision, they have essentially lost our business, just like certain other large software organisations whose names start with A that have adopted similar customer-hostile practices in recent years. There are viable alternatives for almost anything these days when you're a small business with the flexibility to make intelligent policy decisions about your hardware and software purchases on a case by case basis and, if appropriate, to change those policies however you want later on.


I've been pretty displeased with how Microsoft has chosen to alienate Customers the last few years. I've made a good since the late 90's installing and support Microsoft software in small businesses, and the changes in the last few years, particularly with Windows 10 and the associated Server versions, have been distressing.

I will say that I've never found the Open License program to be a tremendous hassle. There was good cost savings to be had using transferable licenses, and the product use rights and other terms and conditions were clearly spelled-out. Dealing with resellers was the worst part of it, but I managed to find good resellers who would mostly just do what I asked for and not hound me with sales-gerbil nonsense. The volume license management website was actually fairly nice, and was useful for keeping track of a Customer's license inventory.

I've had a hard time getting much free/open-source software adoption in my small business Customers. They almost always have a mission-critical application that keeps them locked to Windows (or SQL Server, Office, Exchange, etc), and no budget or desire to finance software development. The value proposition of spending money on the proprietary software is often just good enough to make it worth the cost and draconian licensing.


This is very helpful. I've bought a couple of LTSBs (now LTSC) over the years through oddball means, I strongly favor it, but it seems like Microsoft doesn't want me to be able to buy the licenses. Finding less shady-seeming resellers has not been something I've been able to manage.

I agree, they're costly.


The problem is not so much people snooping on your traffic, but injecting their own malicious content. Confidentiality isn't the only security goal of TLS.


Haven’t ISPs been caught MITM’ing literally all traffic and injecting tracking or ad code on every page? They don’t check if it’s a library catalogue or not


A person on the library network runs Wireshark to watch the network traffic, because they're bored. They see a woman sit down at the library terminal and search for "abortion", or "cancer", or "rape". Now they know something about that woman's interests that she probably would not want them to know.

That's why I encrypt everything: you just never know what kind of things are going to catch the attention of the wrong people.


Any man in the middle might inject JavaScript in the request and hijack the user's browser.


And if our users had ever mentioned this happening once, ever, in decades, it might be important.

I've never seen it happen when I used it from home, I've never heard of it happening. It's a nobody cares situation.

Now, I have had to defend university servers from quite a lot of things, in a large variety of situations. But this? This has never shown up as an issue.


What you are looking up in the library catalog is absolutely of interest to the surveillance state. Are you okay with anyone who looks the Autobiography of Malcolm X being added to a watchlist?

And incidentally, if your ISP decided to collect that information and share it with the government, they could collect that information with a MitM attack that would give you absolutely no indication that a MitM attack, so your assertion that "this has never shown up as an issue" doesn't hold much weight.


Can you say, with confidence, that it will never happen in the future? And if so, how much of your own money are you willing to put down on that? Would you stake your job/career on that claim that it won't happen in the future?


I’m not OP, but I’m willing to claim that there are going to be at least an order of magnitude more reported security vulnerabilities due to overly complex crypto-stacks than there are going to be reported successful internet-scale MITM-attacks.

For many things crypto itself is going to be a bigger security-risk than what it’s defending against.


Many bugs in "overly complex crypto-stacks" are more like "complexity to decrypt was reduced by X%". If it took a regular attacker 1,000,000 years to crack the encryption, it now takes only 900,000 years. So if you are not up against some state sponsored actors, these bugs in crypto stacks should be of no concern. The impact of these bugs is, instead of "nobody can read this data" now "only 10 people on this planet can read the data". That's still better than "anybody can read the data".

And sure there are other kinds of bugs like downgrade attacks but even if an attacker can downgrade you to use RC4 and decrypt data in real time, you are now in the same situation as you were when not using crypto at all. Not even that: to be in the same situation as with no crypto at all, the attacker would need to downgrade/break encryption and signing because breaking only one of both would still not allow modifying the data stream.

Bugs in crypto stacks that allow code execution or memory reads/writes on the server or client are rather rare.


> at least an order of magnitude more reported security vulnerabilities due to overly complex crypto-stacks than there are going to be reported successful internet-scale MITM-attacks.

On the other hand, the overly-complex crypto stacks might be the thing preventing most internet-scale MITM-attacks from being successful.


So, you will be betting your career/job on that assertion? And your money as well?

Following that, there must be a crypto-averse bank you're using to deposit your paychecks, right? And if so, can I have the URL to their public and unencrypted site?


Shouldn't the fact that there are exploitation frameworks for that specific attack vector (e.g. https://beefproject.com/) be motivation enough to not leave that vector unpatched?


> And if our users had ever mentioned this happening once, ever, in decades, it might be important.

> I've never seen it happen when I used it from home, I've never heard of it happening. It's a nobody cares situation.

It’s literally asking everyone to have an anti-nuclear defence-system at home. Utterly pointless and a waste of effort.


> I know Hacker News leans very heavy toward the Silicon Valley side, but I swear stuff happens in the flyover states that involves computers.

Yep, I live and work in one too! That's why I asked what it was. This is an edge case where I agree, it would add little utility. However, like you said, there are a lot of cases where there should be this sort of compliance but is not.

I actually thought you were referring to PLCs for public infrastructure or something similar to that. Sadly, I have gotten in arguments for people who do not want to even add encryption to talking to a PLC on the public internet.


That's definitely a case where I would find some way to lock that down in at least two ways. PLCs seem to be in that "interesting/terrifying/lucrative" triangle to me, with the middle part being the kind of thing I would protect with layers of security.

Overall, I have had to support some very odd security situations, back in the day. As an example: someone's philosophical position somehow got translated to an org-wide policy forbidding firewalls. I'll repeat that: they forbid firewalls. Because we were "open." And I had to support FTP sites. On Windows NT. I managed it without incident through layers of security and care, with watchfulness and compliance.

PLCs? Yeah, I'd lock that down like crazy.


Seriously? Knowing what books people read and search for isn't valuable information?

Do you also feel the same way about search engines? Should my Google searches be encrypted?


The info about library catalog access looks like privacy.


What does that has to do with https? https does not fix your server side bugs. Nor https prevents anyone from connecting to your server. Only(in general) thing that it provides is content encryption which is going through internet. If you hosting public website, this content is already publicly available.


>Only(in general) thing that it provides is content encryption which is going through internet. If you hosting public website, this content is already publicly available.

Why are you confusing https encryption with private vs publicly available information?

Let's unpack your concepts a bit using COVID-19 as an example[0]. The information that Wikipedia displays about COVID-19 is public information instead of top-secret classified files. But you'll notice that wikipedia serves its pages as "https". Think about why they do that. Even if you manually type "http" without the "s" in your web browser url bar[1], Wikipedia will still redirect you to "https". Why do they do that if COVID is public information?

As a web surfer, I also want wikipedia to serve its pages with "https". Think about why I would want that.

[0] https://en.wikipedia.org/wiki/COVID-19_pandemic

[1] this will still redirect to https: http://en.wikipedia.org/wiki/COVID-19_pandemic


Lots of content is publicly available but detailed information about which people are accessing exactly which parts of the content in which patterns is something else altogether and is potentially more valuable and private. https doesn’t fully protect this information but it helps.


> Niche stuff where you had one or two vendors in the whole arena

Seeing that tells me it is not just some sort of public website, and not something you just want any random person to access. Think like PLCs controlling public infrastructure (this is a real scenario in places) If it is on the public internet, I imagine the first thing you go is login to it. If it is HTTP, those credentials are going over the internet in the clear.


No, the first thing you do is not log in to it. That's the one size fits all mindset that is part of the problem. It says "Everything is running on these two webservers, therefore we just have to cover those two use cases. Everything is super-critical top secret, so of course we will want to do it."

The first thing you do is see if the book exists. Logins go to a different system, for something else.

If you stop thinking of the Internet as a place where people put in login information and credit card details to get products shipped to them, it becomes a great deal wider and more complex. Sometimes websites are just ... present to provide information. It might be backed up by a database but that is it.


>Sometimes websites are just ... present to provide information.

The wikipedia.org website just provides information instead of data input of private sensitive information such as credit-cards. But this doesn't mean high-value targets like Wikipedia should serve plain http.


Fortunately, I am not saying that Wikipedia should serve plain HTTP. "That which is not mandatory is forbidden" is what I am trying to avoid; I am moving toward options and choices. HTTP should be an option for people depending on what their needs are and how comfortable they feel with various threat models.


>; I am moving toward options and choices. HTTP should be an option for people depending on what their needs are and how comfortable they feel with various threat models.

That's fine and I agree with "http" sometimes being a valid choice.

I disagree with how you argued it using phrases like "sometimes a website just provides information instead of credit-cards". The "provides information" is a flawed mental model to base a decision tree on and just confuses people about why https is also important for non-credit-card data.

Your later qualifications specifying "threat models" is much better argued. Yes, my internal git web server doesn't need https and I don't want the hassle of getting LetsEncrypt certificate for it. And a toy website on my Raspberry Pi on my local private firewalled NAT'd LAN doesn't need https either.

It's not about "public information"; it's about "threats".


On the other side, it is now almost impossible to use the internet on a retro computer.

I absolutely understand the drive to use more secure TLS, but it's a really sad experience to see that you can load Google, but have nearly every link unable to load.

It wasn't that long ago that I could try out some ancient browser on some modern website, and at least see it fail to render well. Now you can't even connect.

This leads to interesting situations with, say, PowerPC Mac software sites. Either they have http connections, or they use user-agent sniffing to downgrade TLS.


> This leads to interesting situations with, say, PowerPC Mac software sites. Either they have http connections, or they use user-agent sniffing to downgrade TLS

That doesn't work. The user-agent is passed after the encryption channel is established.

What they do is offer all the options, and the client picks the best one they can support.

However, why would this need to be HTTPS to begin with? If you're not transmitting anything private, HTTP works just fine.


Downgrading TLS only works so far, a lot of older clients won't understand SHA-256 signatures on modern certs. I don't think anybody will do SHA-1 certs anymore, so you would need to give those users a self-signed certificate or something.


Ugh. I have a bunch of "projects" of mine on the internet, many of which run the most minimal (I'm talkin [0]) http servers on embedded hardware and stuff like arduino where HTTPS just isn't possible.

And the only I keep them online is because they don't require any upkeep whatsoever, and don't rely on external services for certs or whatever, and because the occasional web browser stumbles upon them and finds them useful. I really don't want to actually put work into them though.

[0] https://stackoverflow.com/questions/16640054/minimal-web-ser...


Users are all about privacy and security until they realise they have to actually maintain their websites to achieve it, then it becomes an unnecessary chore.


Proxy them through nginx would be what I'd do.

Not exactly your use case but when running software that has a complicated HTTPS cert system, I just add nginx in front of it and then use let's encrypt.


> Another, more relevant side of this is that it's not going to be possible for people with web servers to just let them sit.

This problem goes far beyond just HTTPS, and here's a small example. I have a side-project, which is a website where I post versions of old arcade games I've created. Now I can go months without deploying any changes but despite that things just keep breaking from time to time.

Without digging through my GitHub issues here are three examples:

- Web audio support at different times in both mobile and desktop browsers (now fixed)

- Motion control support via accelerometer (now fixed)

- Full screen support (still not fixed, although bizarrely works fine on iOS which has no explicit full screen support but will enter full screen automatically when you reorient your device)

The fact that you can't simply deploy code and have any realistic expectation that it will continue to run without supervision or tweaking for even a few months is INCREDIBLY ANNOYING.

People need to stop tweaking APIs and the behaviour backing them, and breaking compatibility all the time.


This is, in reality, the biggest problem. A lot of modern technologies have built-in assumptions that most people promoting them didn't ever think through. "Everything will be updated all the time, everywhere" is one of those assumptions. "Security" people who yammer about MitM attacks don't give the slightest fuck about that other side of the coin, because that's not what they're paid for. However, a lot of these assumptions have costs that will compound over time.

What is the cost of constantly loosing old media, for example? What is the cost of perfectly good consumer devices being rendered unusable via infrastructure updates? What is the cost of constantly rising complexity? This is not discussed with any level of honesty.


Why does the old web server even need HTTPS? Have I missed a memo that HTTP is going away?

If you're not sending anything private (ie just the contents of the website are being delivered) there isn't really any need for HTTPS, so leave that old HTTPD server running HTTP.

But, if you want your stuff encrypted, you can't rely on old versions of HTTPS so you have to use something more modern.

Also, if you want your transmissions to be secure, you probably shouldn't be relying on hardware/software that has passed EoL ages ago too.

If you want to read more, you can check out my page at wais://runkel.org/personal?old-servers


> Have I missed a memo that HTTP is going away?

https://konklone.com/post/were-deprecating-http-and-its-goin...

(FWIW, I personally don't like it and think that it's a mistake.)


Considering that post is 5 years old and HTTP still works in Firefox and Chrome, I don't think what the post says is coming is coming.


Author of the post here :)

In those 5 years, HTTPS has gone from being the minority of traffic to being ~90% of the connections observed by most Chrome clients (scroll down a few graphs for the Chrome-observed one): https://transparencyreport.google.com/https/overview

Firefox has reported similar numbers. It's now more common for new web features to require HTTPS when they are introduced, to avoid developing HTTP sites as dependencies: https://blog.mozilla.org/security/2018/01/15/secure-contexts...

That doesn't mean that HTTP is banned, but given the magnitude of the change and the size of the web, I think it's fair to say that it's being deprecated.

More practically, anyone who wanted to build a product (or a government process) on intercepting or modifying people's unencrypted web traffic would find their dataset to be an order of magnitude smaller, and orders of magnitude less useful (since so much of the remaining HTTP traffic is in the long tail of small/older sites).


A change of this magnitude is going to take many years.


Tell that to ISPs who insert ads into every non-encrypted location they can find.


Pretty sure that’s mostly a US problem, I haven’t heard of any other first world country where this regularly happens. You should probably work on fixing the problem instead of requiring everyone to accommodate you.


You're wrong, naturally, and the fact HTTPS solves the general problem is proof enough it's needed.


I'm not arguing against HTTPS. I'm saying that it's not a requirement for an old website running on an old server (which is what the post was about).


> Even with automated renewals, Let's Encrypt has changed their protocol once already, deprecating old clients and thus old configurations, and will probably do that again someday.

Just another hurdle to our effort to make things last on the Internet [1]

[1] https://jeffhuang.com/designed_to_last/


But what is "lost"? All the user gets is a warning that this site is not secure. Which is true. As long as browsers don't block these sites, or even until there is a maintained browser that can, this is just a necessary security feature.


SSLv3 is deprecated and modern clients don't allow to use it any more. Old HTTPS servers, that predates TLS are already inaccessible.


Your point being?


> As long as browsers don't block these sites

This is the trend though, and ultimately I get the impression that Google/Chrome will just say "no".


> As long as browsers don't block these sites

These warnings are a preparation to permanently block pre-TLS1.2 HTTPS. For some time after that, you will still be able to set a hidden preference to unblock them, but sooner or later, the code implementing pre-TLS1.2 HTTPS connections will be removed.


"until this long list of conditions don't change, even though the industry has repeatedly changed these very constraints several times" is not something I would classify as trivial


> As long as browsers don't block these sites

Not an expert on SEO, but I remember Google saying back in 2015 that sites using https will be preferred in search results?


Somewhat tangential: I maintain an internal webapp that runs PHP on IIS (I know, I know...). Does anyone know how I can add a legit SSL certificate to a setup like this? Everyone currently accesses it using a http://<friendlymachinename>/ URL, and I've somehow been unable to find information on how to HTTPS-enable this app!


You cannot obtain certificates in the Web PKI ("SSL Certificates" that "just work" in people's browsers) for private names like this "friendlymachinename". Public CAs are forbidden from issuing anybody such a certificate.

Such names are a bad idea for a wide variety of reasons and you should definitely look to give the machine a name from the Internet's DNS (even if the machine isn't accessible in any way from the public Internet), but assuming you cannot or don't want to for now:

You can use a variety of thin "reverse proxy" services to just wrap the HTTP service as HTTPS. Many such webapps won't care that this happened, as the maintainer you probably have a good sense of whether it could work (does the webapp use Javascript that cares about its own URLs for example because that could be a problem?). HTTPS servers such as nginx are well suited to this problem. Security between the wrapping proxy HTTPS server and your PHP on IIS setup is still zero in this setup but that might be acceptable.


As its internal, you'll need to look into setting up a PKI. You'll need to create a certificate authority that has its public cert installed on every host accessing the internal site, and then you use that CA to sign the certificate for the internal site.


This sounds like it could work. Since it's a workplace server and is only accessed internally by workplace-issued machines (which are always on the workplace VPN), I think there might be some sort of public cert already in place. Guess I just have to hunt down a certificate!


It's still preferable to use a real DNS name and a real certificate, if you possibly can, which means that nobody has to install a CA.

There's currently no way on any modern system, as far as I'm aware, to install a CA but limit it to only a specific domain and its subdomains; any CA you install can issue a certificate for any domain. (There are theoretically some certificate extensions that allow limiting a certificate to subdomains, but as far as I can tell, implementations don't reliably support those extensions.)


I'm currently using the DNS challenge of Lets Encrypt for something similar. My setup is a VM running docker with multiple sites. I just setup a DNS record (it only points to the IP of the VM which is a private (eg 192.168...) one) and setup traefik as the reverse proxy with the DNS challenge. Works really well except that my router blocked the DNS record at first.


The machine that's running this has no Internet connectivity though (which is a big reason why it's running that stack in the first place!), so I'm not sure if that approach would work?

It's a workplace server as well, so I don't really have the freedom to punch holes for outside access.


You can issue a certificate for it just via DNS challenge on another system, and then get the keys+cert to the actual system.

The crucial question is: do you control your users's DNS?

I had a setup like this in college, and wrote this: https://blog.sdslabs.co/2014/07/sdslabs-domain-working


You can use Let's encrypt and their DNS validation method, and set up a machine.internal.corp.com DNS entry pointing at its internal IP address.

Only problem is that you'll need to update DNS records every three months to get a new cert; some DNS providers have APIs that certbot can use.


You could run your own CA if everyone trusts you. Or you could set up DNS which is probably a better idea.


IIS 7.5?


Just checked, and it says IIS 8.5.


But if you really wanna run a webserver for the next 20 years without maintaining it, isn't HTTPS the least of your problems?

What about system and software updates to fix critical vulnerabilities? Hardware failures? I feel these things would take much more maintenance time than the occasional certificate renewal.


Maybe we could use a doctype that allows for plain websites (no js, no forms, no inputs) to be accessed without a warning from the browser when not using https.


All of that can be achieved with CSP headers. But I think browser vendors will ratchet up their rhetoric and claim it's still unsafe and must be warned about because someone may learn which site a user visited.


That would still open you up to MITM attacks


MITM attacks aren't much of a problem if you are just displaying some static HTML from a random blog, can't show anything else, and the user has a large confidence his browsing history won't be used against him by any large internet party (any telecom, government, your hotel, etc, even the ones not on the obvious path).

I guess that last one is a pretty big dealbreaker, but I can understand somebody saying "it's just a site full of old jokes, I don't care about it".


> displaying some static HTML from a random blog

Hard ask given how many don't work with JS disabled.


That would be nice, but not even wikipedia would use it.


There are two mutually exclusive views of the web. As a set of protocols set to allow individual humans to share information about things they love and the web as a set of protocols to make a living. Since the corps took control of the web by ignoring the w3c and forming corp controlled whatwg all browser and html spec decisions have been corporate needs motivated and these security needs have been killing the free web by requiring everyone do all the things money transacting corporations need to do.

But, you don't have to use a mainstream browser and you don't have to stop serving HTTP. It's a personal choice. The two webs can still exist alongside each other if you chose to not follow the money.


I agree; you should have both HTTP and HTTPS, rather than disallowing insecure connections entirely.


You may be forgetting that corporations and world governments find it a lot easier to track you on one than the other...

It is also silly to associate HTTP with the "personal web" when LetsEncrypt exists.


A long leash is still a leash. If a third party's authority is required to host a visitable website it will eventually cause major problems. And by third party I mean even currently-benevolent corporations like LetsEncrypt. Just look at what happened with dot org.


Lost forever is the trust internet users shared twenty years ago. We didn't worry about exploits and security updates because we didn't have to. Even if somebody cracked a server, it was to learn and for the lulz.

Now that the global internet is overrun with cybercreeps we have to use TLS and release and deploy security patches regularly.

If the early net protocols had been designed security-first, we wouldn't have this situation. But, if they had been designed security-first, the internet wouldn't have taken off. TCP/IP would still be competing with MAP/TOP and the whole x.whatever stack.

I lament the loss of innocence.


Was it trust, or was it misguided obliviousness?


Twenty(-five) years ago the Internet was Burning Man, now it's Bangkok.

"Hell is other people."


Twenty years ago was the year 2000. The web had plenty of exploits, "cybercreeps" and bad actors with malicious intent back then.


20 years ago, FFS we cared. A lot.


I think this post misses the point of HTTPS completely. It makes HTTPS sound like some new technology, even though the HTTP protocol is still used, the difference being that the connection is encrypted and integrity protected.

And that said integrity protection is what is important in today's world: advertising is being injected into HTTP content by third parties which is a very bad thing IMO.

If updating your servers once-in-a-while is too much for you, maybe running a webserver isn't for you at all - there are certainly enough hosting providers which handle that for you.


The point of the article is that the web ecosystem is breaking compatibility with “old” servers every six months or so these days.

First certbot broke. Now, older tls. Next, they’ll probably deprecate tls 1.2.

I imagine http 1 or 2 will be on the chopping block in the next few years.

They can’t kill both http 1 and http 2 because http 3 needs to use at least one of them as a signaling protocol to establish connections. I’m guessing that means there will be an http 4 that breaks with http 3, but doesn’t need a separate session establishment protocol. (Http 3 partially breaks TCP, and replaces it with userspace stuff. Http 4 would complete that process.)

The web was a success precisely because it was simple and stable enough to let everyone escape from the old hosting providers. They heavily censored content, charged high fees and so on.

Now, hosting is unnecessarily complicated, and the providers are consolidating back into a handful of players like facebook YouTube and cloudflare. Censorship and mass surveillance are on the rise. Since more people use computers than before, these players are helping kill the free press.

Telling people that operating a static web page should be a full time job, because it’s (been made) really hard is just accelerating these trends.


I completely agree on the breaking issues, it is a _lot_ of work to maintain a website these days. In 99% of the cases I'd also agree with you that there should be _no_ reason ever to break e.g. a library used or something.

But the thing about certbot and TLS is that these things are security-relevant, and IMO security one of the only (if not the only) reason to break compatibility these days. TLS ciphers break, heck even the TLS protocol itself may reveal flaws later (see POODLE, BEAST, FREAK, etc.). That's why SSLv2, SSLv3 and TLS1.0 are deprecated: Not because there is a better protocol out there, but because the protocols are inherently insecure. (There is no huge flaw in TLS1.1 I am aware of, it uses MD5 and SHA1 under the hood for master secret derivation, but that's about the only thing).

I'm with you that maintenance is a big chunk of work, but that's IMO a price you pay for being in control. I've got a few services running myself, and honestly I forget about the boxes after setup and enabling auto-upgrades, so it isn't too breaking, at least for me.


While I personally agree with making the entire web run on https, I can definitely see the argument that it requires more monitoring and maintenance, especially when your certificate provider changes their protocol.

I wonder if there can be a future drive for a system where this is not required anymore, and where we can create a decently standardized form of encryption of the same or better quality as TLS, without being dependent on external services.


Someday, you may not be able to connect to IPv4 systems. I’ve already lived through physical layer obsoletions, like 10b2. Time marches ever onward.

If you want to preserve an old webpage, you should stick it behind a reverse proxy or something so the content can still be accessible as the other layers get upgraded. You probably don’t want to run a 1990’s OS on the open internet today, anyway.


On the software side, we're getting HTTPS churn now, because we've only relatively recently started taking it seriously, after over a decade of ignoring it. TLS 1.0 is from 1999!

Hopefully, we'll eventually figure out how to make a TLS stack without endless buffer overflows and padding oracles, so it won't be necessary to upgrade servers all the time.


My dad is using an old Android Tablet to surf the web. Unfortunately there hasn't been an update available for some years.

This year it stopped displaying some websites because of a newer HTTPS algorithm which isn't supported anymore by the tablet. And that for watching the weather forecast and similar things that really don't need to be forced to HTTPS.


Can that Android tablet run the mobile version of Firefox by any chance? At least on desktop, Firefox doesn't rely on the OS for https, which is helpful on older systems. I imagine mobile would be similar.


I tried opera because I couldn't find firefox in the store. Opera worked about a month longer than the default browser, but doesn't work anymore.


My website has been served over HTTPS for the last couple of years. Of course, it's nice to get the padlock and all the other benefits of HTTPS, but I used to delight in demonstrating it working on older systems going back all the way to the original WorldWideWeb.app, and was a bit disappointed that I could no longer do so easily…


The type of static sites that live in posterity should just be on IPFS or similar. HTTPS makes better sense for more dynamic/interactive things where the server will need regular maintenance anyways.

Recognize those are two different use-cases, and the problem goes away.


> In the era of HTTP, you could have set up a web server in 2000 and it could still be running today, working perfectly well (even if it didn't support the very latest shiny thing).

Not true in the least. It could not be further removed from reality. This is silly.

People forget how terrible security was back then (not that it's orders of magnitude better now). You had to stay on top of security patches all the time. When a software update was not doable, perhaps there was a config workaround.

No, the admin work was just as frenetic back then as it is now. Perhaps the stakes were even higher (root shell anyone?).


I wish HTTPS origins were allowed to define a set of certificates to trust. Imagine a game architecture where each game server has its own self-signed certificate. For example, imagine you download a game client via HTTPS, and the game client downloads a list of official servers from the same origin. I want the HTTPS origin to be able to say "for this webpage load, trust these certificates, because they originated from an HTTPS origin."

Instead of making HTTPS hierarchical through a certificate chain, this let's it be dynamic (script-controlled) and sideways.

Thoughts?


Apple unilaterally just reduced the maximum validity of HTTPS certificates in Safari to 15 months from 27 months. Not too long ago it was over 5 years. All this bit by bit increases the burden on the smaller independent non-commercial webmasters, who in the end just give up and leads to further centralization of the web: forces them to platforms, who take care of your "safety" ( not just from MITM but usually also from "violating" content).


> who in the end just give up and leads to further centralization of the web: forces them to platforms, who take care of your "safety"

What's stopping those decentralized platforms to utilize modern certificate refresh?

You're also totally ignoring that the webmaster still has to do security updates which are probably a much bigger maintenance burden.


I ran an Apache site with 10000+ daily visitors for 10 years on my own SuSE box from home. Firewalled the box and only left ports 80, 443, 25 and 22 open. Only had to update recently when I replaced the box with Raspberry Pi (I wonder how long the SD card will last).


I have ~ 5 lets encrypt certs, with different web servers. (Some appliances, some docker, and some openbsd).

One breaks for some different random reason every six months or so. Each time it happens, I spend hours reading let’s encrypt blog posts, source code in random languages I don’t care to learn, etc.

I just got a certificate expiry warning in my inbox for a fully patched machine with perfect uptime. It’s an unnecessary waste of time. For one thing, I don’t back up the certificates, so it the certificate is compromised, then the box that serves the content is also compromised.


After more than 20 years of running my own webservers on everything from old Sparcstations to Debian VPSs, I took a few year hiatus from having a big web presence and pointed my domain at a simple github.io page. It worked so well I decided to go Github completely for my simple blog/pictures/projects web page, I’ve gone almost full circle back to the original static HTML style.


In general, anything you connect to the Internet (or perhaps even a network used by Internet-connected users) needs to be updated regularly.

That a HTTP server from 2003 continues to work today is happy coincidence, but it also means that there's probably a working 0day for that server software, so that, if you can't update it, you would have to mitigate it another way.


Isn't the more interesting part of old web servers what it actually contains in the form of content rather than the technology?


It sucks that we are going to effectively bury the "old Web" (well, Google will by ranking websites frontend over HTTPS over HTTP-only websites), but it is also really nice that people can't see what I'm doing over the wire and that I get big fat red warnings when the certificate I think I'm using isn't what I think it is.


So many people advocating against HTTPS in this page.

A lot of China developers had the same voice. They have been silent since 2015, when China ISPs and even some routers started injecting ads into plain HTTP sites. Many websites quickly adopted HTTPS for all of their pages ever since.


...and old web navigators. Protocols evolve, security requires old encryption schemes to go away, thus the OS you use has to keep up as well, and if you try to use a reasonably old live bootable DVD, you might have some surprise.


A) Just use Caddy server.

B) Host your content on IPFS.

You shouldn't need to run your own server in 2020. (Okay maybe a pinning server or service, but that's a small constant plus storage costs. Cost of enduring data should approach zero.)


You could run djb's publicfile, which serves only static files.


What if we use content hash or provider public key hash as the url? Like ipfs / zeronet.

DNS server itself is also a service you've to rely on for https to work in practice.


The solution: use PASSIV enabled FTP servers. It works in most browsers (for now)


I’m pretty sure ftp only works on browsers with patches/flags to enable it that are added by district maintainers. I remember most major browsers dropping it in official builds.


I love this article.

All this switch to HTTPS just so Google can guarantee its ads are being seen. You get some other benefits as a side effect... but that is the real reason HTTPS is everywhere.

Ah well.


Can you elaborate on this?


30 min(for a noob like me) to fix: Pfsense + HAproxy + certbot enabled you can serve old websites all day long


But are those available for "an old SGI Irix workstation or even a DEC Ultrix machine" ?


Firewall should be a separate machine. I am using 2 x 2012/2013 fanless industrial PCs next to the server rack(one main + 1 spare). The idea is that you're not losing anything or changing anything on the original website/machine. You just add one in front of it and you're done.

Would work with anything ethernet enabled as far as I know. I never worked with SGI Irix or DEC Ultrix but I assume that they can handle ethernet connections if they are serving websites.


Buying a raspberry pi to act as an nginx proxy probably costs less than the yearly electricity cost of running a machine like that.


I believe the suggestion is that you proxy them via another system.


Which will if you listen to the advice of HN will be an ec2 micro instance. Which means you're handing more of the internet over to "the big guys" exactly as the author of the article points out.


I would say depending on the traffic a raspberry pi should suffice?


Good point. That would be more than enough for low traffic.


Of course it's readily available, you have a $5000 Cisco ASA or F5 appliance sitting next to the $50000 SGI or HP workstation, to perform SSL termination and firewall.


The costs are off.

I have an SGI workstation and an HP workstation next to me. They cost $0.

That was >15 years ago, freecycled. Pretty sure they are less than $0 by now!


I like that HTTPS forces you to actually care about improving and maintaining your website. Somehow, leaving your site alone forever to gather dust is considered a good thing. The author totally missed that one.

Yes, some sites serve basic content that can stay up forever without change (thistothat.com comes to mind as a good example) but it really doesn't hurt to force people to put a little bit more care into their sites.


Books get written once. Why can't websites? We still learn from documents that are centuries old, and when a cache of them is found, it makes the news.

Yet on the other side, we let so much information expire because the underlying technology is obsolete.


Books are not going to turn into a botnet node. Books hardware is not getting less efficient when new paper is produced. Electronics will not live centuries unless you spend loads of money to maintain it.


Security arguments notwithstanding:

- Book contents frequently get updated. Revisions, translations, editions, adaptations.

- Book formats see change. There are at least some works which have seem multiple forms (oral traditions, clay tablets, vellum codices, stageplays, printed books, operatic adaptations, three-ring binders/loose-leaf circulars, magazine serials, paperbacks, radio serials, cinema series, comic-book adaptations, Broadway musicals, TV series, PS documents, PDF files, podcasts, videogame adaptations, YouTube channels, ebooks, ...)

Generally, websites are less a document format than a publishing mechanism. Print-on-demand-on-steroids.


We have the Internet Archive (archive.org) to backup lots of this information via the likes of the Wayback Machine.

Books & physically documents can decay naturally or be damaged physically, digital media can be damaged physically too. A hard drive or SSD can fail at any time, a disc can be scratched, a tape can get tangled. Easier and more accessible redundancy is an advantage of digital media.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: