Regarding the immediate problem, and then a couple things you might see
after...
* Unless you have a really weird OS, I think the first problem is that
another process currently has/had port 443 open on the same network
address. (This might even be from the last run of your same program, as
the OS finishes shutting down TCP for that socket on that address. Or
it could be a Web server software that was installed on your
workstation, or from some other development tools you also ran. Or I
suppose it could be weird security software on the machine itself.)
If you're on GNU/Linux, you probably have an `lsof` command (the name
comes from "list open files" including TCP ports), which would let you do:
lsof -i :443
If it's still a headscratcher, double-check what interface IP
address(es) it's trying to listen on, make sure they're correct, and
first try to access port 443 on the addresses in a Web browser
(preferably with plausible FQDNs). It's probably something very simple,
but small chance it's something annoying, like broken routing, broken
name resolution, or naughty OS tricks that something else installed on
your workstation is doing.
* After you solve that problem, I think you're right: listening on the
special low port number 443 would normally require root privileges
(though maybe not on some non-Unix OS). I think that particular Racket
document should be changed to at least mention the problem. (I won't
try to say offhand exactly what the default advice in the Racket docs
should be for using 443 -- there's so many ways to do this, all with
different pros&cons for different needs, even if the software defaulted
to automagic. But the problem should at least be mentioned.)
* A possible third difficulty after that is that, not only is the whole
HTTPS dependency on CAs imperfect, it's an annoyance for development,
and easy to make it awful.[1]
If you want to do lightweight development from your workstation, and
your workstation has a stable, unique FQDN, which isn't easily mistaken
for production, such as
"workstation-451.development.internal.mycompany.com", one possibly-OK
way might be to get a cert for that exact FQDN, signed by whatever CA is
already trusted by browsers of people who would be using it.[2]
Or, I've also made my own CA sometimes in the past, trusted only by
myself. But that requires adding the CA as trusted to browsers, which
has its own security downsides, and can be a headache to figure out how
to do all the browsers and handhelds you go to test with.
Also, you need to decide whether you want Racket doing the SSL/TLS, or
some program fronting it. There are numerous ways to front it. Two
effects of using a separate Web server on the workstation to front are:
(1) it can solve the problem with the privileged port number (without
Racket process needing to worry about how to do that); and (2) it could
even (for better or worse; but maybe better for some students) hide the
cert key from the developer (and use OS security mechanisms more
sophisticated than root-only-low-TCP-ports to control who on the
workstation can provide the behavior behind 443, and in what way).
* These are little details of history, and knowing about them doesn't
feel very smart. We want to be smart about things much more grand. :) [3]
[1] Example: Recently, I was considering a job developing a big
enterprise cloud infrastructure technology thing. While going through
the company's main tutorial for outside enterprise developers/devops, I
saw they were having developers run their tutorial app using URLs
through a not-very-reassuring third-party dotcom, as a kind of proxy --
without any mention that this is arguably a very bad idea for almost
anyone, much less anyone doing "enterprise-grade". I think we can make
a good guess that many of those enterprise developers, already
overwhelmed with this huge mass of framework stuff that almost no one
fully understands, are going to assume this is the way it's done, and
end up doing production work with sensitive data in an insecure and
unstable way. (It gets even better: I then found a support post
responding to the event of that third-party dotcom breaking... and the
official enterprise infrastructure response to users was to switch over
to a different third-party dotcom proxy thing -- perpetuating the bad
idea, even while looking at a real-world example of one of the ways it
can fail.) Seemed like, eventually, someone is gonna get trampled by a
HIPAA-potamus, or other painful enlightenment.
[2] Preferably an organization-internal CA, to reduce phishing of
outside users, were your workstation compromised more easily than
production servers are. (The failure of cert-based server
authentication, for outside users who don't trust that
organization-internal CA, should scare away people who don't know what a
development workstation means.) Also, if the organization does this,
they have to be careful that all its important Web servers were set up
properly, or a development workstation server could steal browser
cookies from other servers.
[3] But trivia can pay off. Without spoilers, if anyone has not seen
the film "My Cousin Vinny", I recommend watching it in its entirety.
--
You received this message because you are subscribed to the Google Groups "Racket
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.