mirror of
https://github.com/cunnie/sslip.io.git
synced 2025-10-05 23:56:50 +08:00
README tweaks
- Move "Directory Structure" lower down--it's not terribly useful, certainly less useful than the "DNS Server" section. - Remove the "tidy" turd at the bottom of the page. It adds no value, and I'm not sure how it got there in the first place. - A specific sections for flags such as `-nameservers` - Add a section about running official Docker containers. - get rid of the old, deprecated "faq" and "about" pages [#21]
This commit is contained in:
143
README.md
143
README.md
@@ -28,7 +28,7 @@ dig @localhost 192.168.0.1.sslip.io +short
|
|||||||
# should return "192.168.0.1"
|
# should return "192.168.0.1"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Quick Start Tests
|
### Quick Start Tests
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
go install github.com/onsi/ginkgo/v2/ginkgo@latest
|
go install github.com/onsi/ginkgo/v2/ginkgo@latest
|
||||||
@@ -36,24 +36,26 @@ go get github.com/onsi/gomega/...
|
|||||||
~/go/bin/ginkgo -r -p .
|
~/go/bin/ginkgo -r -p .
|
||||||
```
|
```
|
||||||
|
|
||||||
## Customizing Your Own Nameservers
|
## Running Your Own Nameservers
|
||||||
|
|
||||||
You can customize your nameserver and address records (NS, A, and AAAA), which
|
We can customize our nameserver and address records (NS, A, and AAAA), which
|
||||||
can be particularly useful in an internetless (air-gapped) environment. This can
|
can be particularly useful in an internetless (air-gapped) environment. This can
|
||||||
be done with a combination of the `-nameservers` flag and the `-addresses` flag.
|
be done with a combination of the `-nameservers` flag and the `-addresses` flag.
|
||||||
|
|
||||||
For example, let's say you're the DNS admin for pivotal.io, and you'd like to
|
For example, let's say we're the DNS admin for pivotal.io, and we'd like to
|
||||||
have a subdomain, "xip.pivotal.io", that does sslip.io-style lookups (e.g.
|
have a subdomain, "xip.pivotal.io", that does sslip.io-style lookups (e.g.
|
||||||
"127.0.0.1.xip.pivotal.io" would resolve to "127.0.0.1"). Let's say you have two
|
"127.0.0.1.xip.pivotal.io" would resolve to "127.0.0.1"). Let's say we have two
|
||||||
servers that you've set aside for this purpose:
|
servers that we've set aside for this purpose:
|
||||||
|
|
||||||
- ns-sslip-0.pivotal.io, 10.8.8.8 (IPv4)
|
- ns-sslip-0.pivotal.io, 10.8.8.8 (IPv4)
|
||||||
- ns-sslip-1.pivotal.io, fc88:: (IPv6)
|
- ns-sslip-1.pivotal.io, fc88:: (IPv6)
|
||||||
|
|
||||||
First, you'd delegate the subdomain "xip.pivotal.io" to those nameservers, and
|
First, we delegate the subdomain "xip.pivotal.io" to our two nameservers, and
|
||||||
then you'd run the following command run on each of the two servers:
|
then we run the following command run on each of the two servers:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# after we've cloned our repo
|
||||||
|
cd src/sslip.io-dns-server
|
||||||
go run main.go \
|
go run main.go \
|
||||||
-nameservers=ns-sslip-0.pivotal.io,ns-sslip-1.pivotal.io \
|
-nameservers=ns-sslip-0.pivotal.io,ns-sslip-1.pivotal.io \
|
||||||
-addresses ns-sslip-0.pivotal.io=10.8.8.8,ns-sslip-1.pivotal.io=fc88::
|
-addresses ns-sslip-0.pivotal.io=10.8.8.8,ns-sslip-1.pivotal.io=fc88::
|
||||||
@@ -63,9 +65,99 @@ go run main.go \
|
|||||||
they won't look up google.com. They are not recursive.** Don't ever configure a
|
they won't look up google.com. They are not recursive.** Don't ever configure a
|
||||||
machine to point to these nameservers.
|
machine to point to these nameservers.
|
||||||
|
|
||||||
|
### Running with Docker
|
||||||
|
|
||||||
|
Probably the easiest way to run the nameserver is with the official Docker
|
||||||
|
image,
|
||||||
|
[cunnie/sslip.io-dns-server](https://hub.docker.com/r/cunnie/sslip.io-dns-server):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run \
|
||||||
|
-it \
|
||||||
|
--rm \
|
||||||
|
-p 53:53/udp \
|
||||||
|
cunnie/sslip.io-dns-server
|
||||||
|
```
|
||||||
|
|
||||||
|
If we see the error, "`Error starting userland proxy: listen udp4 0.0.0.0:53:
|
||||||
|
bind: address already in use.`", then we turn off the systemd resolver: `sudo
|
||||||
|
systemctl stop systemd-resolved`
|
||||||
|
|
||||||
|
Let's try a more complicated setup: we're on our workstation, jammy.nono.io,
|
||||||
|
whose IP addresses are 10.9.9.114 and 2601:646:100:69f0:0:ff:fe00:72. We'd like
|
||||||
|
our workstation to be the DNS server _and_ be the NS record:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run \
|
||||||
|
-it \
|
||||||
|
--rm \
|
||||||
|
-p 53:53/udp \
|
||||||
|
cunnie/sslip.io-dns-server \
|
||||||
|
/usr/sbin/sslip.io-dns-server \
|
||||||
|
-nameservers jammy.nono.io \
|
||||||
|
-addresses jammy.nono.io=10.9.9.114,jammy.nono.io=2601:646:100:69f0:0:ff:fe00:72
|
||||||
|
```
|
||||||
|
|
||||||
|
From another machine, we run our DNS lookup to check the NS record, and we see
|
||||||
|
the expected reply:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dig ns 127.0.0.1.io @jammy.nono.io +short
|
||||||
|
...
|
||||||
|
;; ANSWER SECTION:
|
||||||
|
127.0.0.1.tx. 604800 IN NS jammy.nono.io.
|
||||||
|
|
||||||
|
;; ADDITIONAL SECTION:
|
||||||
|
jammy.nono.io. 604800 IN A 10.9.9.114
|
||||||
|
jammy.nono.io. 604800 IN AAAA 2601:646:100:69f0:0:ff:fe00:72
|
||||||
|
```
|
||||||
|
|
||||||
|
The Docker image is multi-platform supporting both x86_64 architecture as well
|
||||||
|
as ARM64 (AWS Graviton, Apple M1/M2).
|
||||||
|
|
||||||
|
## Command-line Flags
|
||||||
|
|
||||||
|
- `-port` overrides the default port, 53, which the server binds to. This can
|
||||||
|
be especially useful when running as a non-privileged user, unable to bind to
|
||||||
|
privileged ports (<1024) ("`listen udp :53: bind: permission denied`"). For
|
||||||
|
example, to run the server on port 9553: `go run main.go -port 9553`. To
|
||||||
|
query, `dig @localhost 127.0.0.1.sslip.io -p 9553`
|
||||||
|
- `-nameservers` overrides the default NS records `ns-aws.sslip.io`,
|
||||||
|
`ns-azure.sslip.io`, and `ns-gce.sslip.io`; flag, e.g. `go run main.go
|
||||||
|
-nameservers ns1.example.com,ns2.example.com`). If you're running your own
|
||||||
|
nameservers, you probably want to set this. Don't forget to set address
|
||||||
|
records for the new name servers with the `-addresses` flag (see below).
|
||||||
|
Exception: `_acme-challenge` records are handled differently to accommodate
|
||||||
|
the procurement of Let's Encrypt wildcard certificates; you can read more
|
||||||
|
about that procedure [here](docs/wildcard.md)
|
||||||
|
- `-addresses` overrides the default A/AAAA (IPv4/IPv6) address records. For
|
||||||
|
example, here's how we set the IPv4 record & IPv6 record for our nameserver
|
||||||
|
(in the `-nameservers` example above), ns1.example.com: `-addresses
|
||||||
|
ns1.example.com=10.8.8.8,ns1.example.com=fc::8888`. Note how we can set
|
||||||
|
multiple addresses for the same host using the default values—`ns.sslip.io`
|
||||||
|
has four IP addresses! `-nameservers
|
||||||
|
sslip.io=78.46.204.247,sslip.io=2a01:4f8:c17:b8f::2,k-v.io=104.155.144.4,ns.sslip.io=52.0.56.137,ns.sslip.io=52.187.42.158,ns.sslip.io=104.155.144.4,ns.sslip.io=2600:1f18:aaf:6900::a,ns-aws.sslip.io=52.0.56.137,ns-aws.sslip.io=2600:1f18:aaf:6900::a,ns-azure.sslip.io=52.187.42.158,ns-gce.sslip.io=104.155.144.4`
|
||||||
|
- `blocklistURL` overrides the default block list,
|
||||||
|
(<https://raw.githubusercontent.com/cunnie/sslip.io/main/etc/blocklist.txt>).
|
||||||
|
It's not necessary to override this if you're in an internetless environment:
|
||||||
|
if the DNS server can't download the blocklist, it prints out a message and
|
||||||
|
continues to serve DNS queries.
|
||||||
|
|
||||||
|
## DNS Server Miscellany
|
||||||
|
|
||||||
|
- it only binds to UDP (no TCP, sorry)
|
||||||
|
- The SOA record is hard-coded except the _MNAME_ (primary master name server)
|
||||||
|
record, which is set to the queried hostname (e.g. `dig big.apple.com
|
||||||
|
@ns-aws.nono.io` would return an SOA with an _MNAME_ record of
|
||||||
|
`big.apple.com.`
|
||||||
|
- The MX records are hard-coded to the queried hostname with a preference of 0,
|
||||||
|
except `sslip.io` itself, which has custom MX records to enable email
|
||||||
|
delivery to ProtonMail
|
||||||
|
- There are no SRV records
|
||||||
|
|
||||||
## Directory Structure
|
## Directory Structure
|
||||||
|
|
||||||
- `src/` contains the source code to the DNS server
|
- `src/sslip.io-dns-server/` contains the source code to the DNS server
|
||||||
- `ci/` contains the [Concourse](https://concourse.ci/) continuous integration
|
- `ci/` contains the [Concourse](https://concourse.ci/) continuous integration
|
||||||
(CI) pipeline and task
|
(CI) pipeline and task
|
||||||
- `spec/` contains the tests for the production nameservers. To run
|
- `spec/` contains the tests for the production nameservers. To run
|
||||||
@@ -76,39 +168,6 @@ machine to point to these nameservers.
|
|||||||
- `k8s/document_root_sslip.io/` contains the HTML content of the sslip.io website. Please
|
- `k8s/document_root_sslip.io/` contains the HTML content of the sslip.io website. Please
|
||||||
run `tidy -im -w 120 k8s/document_root_sslip.io/index.html` before submitting pull
|
run `tidy -im -w 120 k8s/document_root_sslip.io/index.html` before submitting pull
|
||||||
requests
|
requests
|
||||||
- `bosh-release/` _[deprecated]_ contains the [BOSH](https://bosh.io/docs/)
|
|
||||||
release. BOSH is the mechanism we previously used to deploy the servers, and
|
|
||||||
the sslip.io BOSH release is a packaging of the DNS server (analogous to a
|
|
||||||
`.msi`, `.pkg`, `.deb` or `.rpm`)
|
|
||||||
|
|
||||||
## DNS Server
|
|
||||||
|
|
||||||
The DNS server is written in Golang and can be configured via flags passed to
|
|
||||||
the command line.
|
|
||||||
|
|
||||||
- it binds to port 53, but can be overridden on the command line with the
|
|
||||||
`-port`, e.g. `go run main.go -port 9553`
|
|
||||||
- it only binds to UDP (no TCP, sorry)
|
|
||||||
- The NS records default to `ns-aws.sslip.io`, `ns-azure.sslip.io`,
|
|
||||||
`ns-gce.sslip.io`; however, they can be overridden via the `-nameservers`
|
|
||||||
flag, e.g. `go run main.go -nameservers ns1.example.com,ns2.example.com`). If
|
|
||||||
you override the name servers, don't forget to set address records for the
|
|
||||||
new name servers with the `-addresses` flag. Exception: `_acme-challenge`
|
|
||||||
records are handled differently to accommodate the procurement of Let's
|
|
||||||
Encrypt wildcard certificates; you can read more about that procedure
|
|
||||||
[here](docs/wildcard.md)
|
|
||||||
- You can add custom records via the `-addresses` flag; here's a typical
|
|
||||||
example where we set an IPv4 record & IPv6 record for a single host:
|
|
||||||
`-addresses
|
|
||||||
ns-aws.sslip.io.=52.0.56.137,ns-aws.sslip.io.=2600:1f18:aaf:6900::a`
|
|
||||||
- The SOA record is hard-coded except the _MNAME_ (primary master name server)
|
|
||||||
record, which is set to the queried hostname (e.g. `dig big.apple.com
|
|
||||||
@ns-aws.nono.io` would return an SOA with an _MNAME_ record of
|
|
||||||
`big.apple.com.`
|
|
||||||
- The MX records are hard-coded to the queried hostname with a preference of 0,
|
|
||||||
except `sslip.io` itself, which has custom MX records to enable email
|
|
||||||
delivery to ProtonMail
|
|
||||||
- There are no SRV records
|
|
||||||
|
|
||||||
### Acknowledgements
|
### Acknowledgements
|
||||||
|
|
||||||
|
@@ -1,97 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta name="generator" content="HTML Tidy for HTML5 for Apple macOS version 5.6.0">
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<!-- The above 3 meta tags *must* come first in the head; any
|
|
||||||
other head content must come *after* these tags -->
|
|
||||||
<title>About sslip.io</title>
|
|
||||||
<meta name="description" content="sslip.io">
|
|
||||||
<meta name="author" content="Brian Cunnie"><!-- cute Green Lock icon -->
|
|
||||||
<link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico"><!--
|
|
||||||
Latest compiled and minified CSS -->
|
|
||||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
|
|
||||||
<!-- Optional theme -->
|
|
||||||
<link rel="stylesheet" href="css/starter-template.css">
|
|
||||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media
|
|
||||||
queries -->
|
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via
|
|
||||||
file:// -->
|
|
||||||
<!--[if lt IE 9]> <script
|
|
||||||
src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<nav class="navbar navbar-inverse navbar-fixed-top">
|
|
||||||
<div class="container">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
|
||||||
aria-expanded="false" aria-controls="navbar"><span class="sr-only">Toggle navigation</span></button> <a class=
|
|
||||||
"navbar-brand" href="/">sslip.io</a>
|
|
||||||
</div>
|
|
||||||
<div id="navbar" class="collapse navbar-collapse">
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
<li>
|
|
||||||
<a href="/">Home</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="faq.html">FAQ</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<a href="about.html">About</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div><!--/.nav-collapse -->
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div class="container">
|
|
||||||
<div class="starter-template">
|
|
||||||
<h1>About sslip.io</h1>
|
|
||||||
<p><a href="https://github.com/tylerschultz">Tyler Schultz</a>, <a href="https://github.com/APShirley">Alvaro
|
|
||||||
Perez-Shirley</a>, and <a href="https://github.com/cunnie">Brian Cunnie</a> created sslip.io on Tuesday August
|
|
||||||
11, 2015 during a Pivotal Software-sponsored Hack Day. Thanks Pivotal!</p>
|
|
||||||
<p><a href="https://github.com/sstephenson">Sam Stephenson</a> built <a href="http://xip.io/">xip.io</a>, upon
|
|
||||||
which much of our code is based. He also suggested the name <i>sslip.io</i>.</p>
|
|
||||||
<p><a href="https://github.com/justinjsmith">Justin Smith</a> advised us on the security implications of
|
|
||||||
releasing an SSL certificate and key to the general public.</p>
|
|
||||||
<div class="row"></div>
|
|
||||||
<p>© 2015 Brian Cunnie, Pivotal Software</p>
|
|
||||||
</div>
|
|
||||||
</div><!-- /.container -->
|
|
||||||
<!-- Bootstrap core JavaScript ================================================== -->
|
|
||||||
<!--
|
|
||||||
Placed at the end of the document so the pages load faster -->
|
|
||||||
<!-- jQuery
|
|
||||||
(necessary for Bootstrap's JavaScript plugins) -->
|
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <!--
|
|
||||||
Latest compiled and minified JavaScript -->
|
|
||||||
|
|
||||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <!--
|
|
||||||
IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
|
||||||
|
|
||||||
<script src=
|
|
||||||
"https://raw.githubusercontent.com/twbs/bootstrap/master/docs/assets/js/ie10-viewport-bug-workaround.js"></script>
|
|
||||||
<!--
|
|
||||||
Google Analytics -->
|
|
||||||
|
|
||||||
<script>
|
|
||||||
(function(i, s, o, g, r, a, m) {
|
|
||||||
i['GoogleAnalyticsObject'] = r;
|
|
||||||
i[r] = i[r] || function() {
|
|
||||||
(i[r].q = i[r].q || []).push(arguments)
|
|
||||||
}, i[r].l = 1 * new Date();
|
|
||||||
a = s.createElement(o), m = s.getElementsByTagName(
|
|
||||||
o)[0];
|
|
||||||
a.async = 1;
|
|
||||||
a.src = g;
|
|
||||||
m.parentNode.insertBefore(a, m)
|
|
||||||
})(window, document, 'script',
|
|
||||||
'//www.google-analytics.com/analytics.js', 'ga');
|
|
||||||
ga('create', 'UA-43107212-2', 'auto');
|
|
||||||
ga('send', 'pageview');
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@@ -1,164 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta name="generator" content="HTML Tidy for HTML5 for Apple macOS version 5.6.0">
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<!-- The above 3 meta tags *must* come first in the head; any
|
|
||||||
other head content must come *after* these tags -->
|
|
||||||
<title>sslip.io FAQ</title>
|
|
||||||
<meta name="description" content="sslip.io">
|
|
||||||
<meta name="author" content="Brian Cunnie"><!-- cute Green Lock icon -->
|
|
||||||
<link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico"><!-- Latest
|
|
||||||
compiled and minified CSS -->
|
|
||||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
|
|
||||||
<!-- Optional theme -->
|
|
||||||
<link rel="stylesheet" href="css/starter-template.css">
|
|
||||||
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media
|
|
||||||
queries -->
|
|
||||||
<!-- WARNING: Respond.js doesn't work if you view the page via
|
|
||||||
file:// -->
|
|
||||||
<!--[if lt IE 9]> <script
|
|
||||||
src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<nav class="navbar navbar-inverse navbar-fixed-top">
|
|
||||||
<div class="container">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
|
|
||||||
aria-expanded="false" aria-controls="navbar"><span class="sr-only">Toggle navigation</span></button> <a class=
|
|
||||||
"navbar-brand" href="/">sslip.io</a>
|
|
||||||
</div>
|
|
||||||
<div id="navbar" class="collapse navbar-collapse">
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
<li>
|
|
||||||
<a href="/">Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="active">
|
|
||||||
<a href="faq.html">FAQ</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="about.html">About</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div><!--/.nav-collapse -->
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div class="container">
|
|
||||||
<div class="starter-template">
|
|
||||||
<h1>FAQ</h1>
|
|
||||||
<p class="lead">Do I have to pay to use this service?</p>
|
|
||||||
<p>No, it's free.</p>
|
|
||||||
<p class="lead">Can I use this certificate on my commerce website?</p>
|
|
||||||
<p>Although there's no technical reason why you couldn't use the sslip.io SSL key and certificate for your
|
|
||||||
commerce web, we <i>strongly</i> recommend against it: the key is publicly available; your traffic isn't secure.
|
|
||||||
sslip.io's primary purpose is to assist developers who need to test against valid SSL certs, not to safeguard
|
|
||||||
content.</p>
|
|
||||||
<p class="lead">My webserver wants a certificate and an "intermediate certificate chain"—where do I get that?</p>
|
|
||||||
<p>Certain web servers (e.g. <a href="http://www.tenable.com">Tenable's</a> <a href=
|
|
||||||
"http://www.tenable.com/products/nessus-vulnerability-scanner">Nessus</a> scanner) prefer to split the chained
|
|
||||||
certificate file (which has three concatenated certificates) into two files: one file containing a single
|
|
||||||
certificate for the server itself (e.g. the "*.sslip.io" certificate), and a second file containing the
|
|
||||||
intermediate certificate authorities (e.g. the two COMODO certificate authorities).</p>
|
|
||||||
<p>You can split the chained certificate file by hand, or you can download them, pre-split, from GitHub:</p>
|
|
||||||
<ul>
|
|
||||||
<li>the server <a href=
|
|
||||||
"https://raw.githubusercontent.com/cunnie/sslip.io/main/ssl/sslip.io.crt.pem">certificate</a> ("*.sslip.io")
|
|
||||||
</li>
|
|
||||||
<li>the intermediate certificate <a href=
|
|
||||||
"https://raw.githubusercontent.com/cunnie/sslip.io/main/ssl/intermediate-ca.crt.pem">chain</a> (the COMODO
|
|
||||||
CAs)
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<p class="lead">Why can't I use dots in my hostname? xip.io lets me use dots.</p>
|
|
||||||
<p>You can't have dots, but you can have dashes: for example, "www-sf-ca-us-10-9-9-142.sslip.io" will work with
|
|
||||||
sslip.io's wildcard SSL certificate, but "www.sf.ca.us.10.9.9.142.sslip.io" will not. This is a technical
|
|
||||||
limitation of wildcard certs and the manner in which browsers treat them (read more <a href=
|
|
||||||
"http://security.stackexchange.com/questions/10538/what-certificates-are-needed-for-multi-level-subdomains">here</a>).</p>
|
|
||||||
<p>This restricts sslip.io's usage model. For example, it won't work properly with Cloud Foundry's app domain or
|
|
||||||
system domain.</p>
|
|
||||||
<p class="lead">Does sslip.io work with name-based virtual hosting? We have multiple projects but only one
|
|
||||||
webserver.</p>
|
|
||||||
<p>sslip.io interoperates quite well with <a href=
|
|
||||||
"https://en.wikipedia.org/wiki/Virtual_hosting#Name-based">name-based virtual hosting</a>. You can prepend
|
|
||||||
identifying information to the sslip.io hostname without jeopardizing the address resolution, and then use those
|
|
||||||
hostnames to distinguish the content being served. For example, let's assume that your webserver's IP address is
|
|
||||||
10.9.9.30, and that you have three projects you're working on (Apple, Google, and Facebook). You would use the
|
|
||||||
following three sslip.io hostnames:</p>
|
|
||||||
<ul>
|
|
||||||
<li>apple-10-9-9-30.sslip.io</li>
|
|
||||||
<li>facebook-10-9-9-30.sslip.io</li>
|
|
||||||
<li>google-10-9-9-30.sslip.io</li>
|
|
||||||
</ul>
|
|
||||||
<p class="lead">Can you make the hostnames easier to remember? It's as hard as memorizing IP addresses.</p>
|
|
||||||
<p>Unfortunately, no. We appreciate that "52-0-56-137.sslip.io" is not an easy-to-remember hostname, whereas
|
|
||||||
something along the lines of "aws-server.sslip.io" would be much simpler, but we don't see an easy solution—we
|
|
||||||
need to be able to extract the IP address from the hostname in order for our DNS nameserver to reply with the
|
|
||||||
proper address when queried.</p>
|
|
||||||
<p class="lead">Do you have support for IPv6-style addresses?</p>
|
|
||||||
<p>Not yet, but if there's enough demand for it we might try implementing it.</p>
|
|
||||||
<p class="lead">Why did you choose a 4096-bit key instead of a 2048-bit key?</p>
|
|
||||||
<p>We couldn't help ourselves—when it comes to keys, longer is better. In retrospect there were flaws in our
|
|
||||||
thinking: certain hardware devices, e.g. YubiKeys, only support keys of length 2048 bits or less. Also, there was
|
|
||||||
no technical value in making a long key—it's publicly available on GitHub, so a zero-bit key would have been
|
|
||||||
equally secure.</p>
|
|
||||||
<p class="lead">Do I have to use the sslip.io domain? I'd rather have a valid cert for my domain.</p>
|
|
||||||
<p>If you want valid SSL certificate, and you don't want to use the sslip.io domain, then you'll need to purchase
|
|
||||||
a certificate for your domain. We purchased ours from <a href="https://www.cheapsslshop.com">Cheap SSL Shop</a>,
|
|
||||||
but use a vendor with whom you're comfortable.</p>
|
|
||||||
<p class="lead">What is the sslip.io certificate chain?</p>
|
|
||||||
<p>The sslip.io certificate chain is the series of certificates, each signing the next, with a root certificate
|
|
||||||
at the top. It looks like the following:</p>
|
|
||||||
<div class="col-sm-12"><img src="img/cert_chain.png" height="206"></div>
|
|
||||||
<div class="row"></div>
|
|
||||||
<p>Note that the "root" certificate is "AddTrust's External CA Root", which issued a certificate to the "COMODO
|
|
||||||
RSA Certification Authority", which in turn issued a certificate to the "COMODO RSA Domain Validation Secure
|
|
||||||
Server CA" which in turn issued our certificate, "*.sslip.io".</p>
|
|
||||||
<p class="lead">How is "sslip.io" pronounced?</p>
|
|
||||||
<p>ESS-ESS-ELL-EYE-PEE-DOT-EYE-OH</p>
|
|
||||||
<p class="lead">Where do I report bugs? I think I found one.</p>
|
|
||||||
<p>Open an issue on <a href="https://github.com/cunnie/sslip.io/issues">GitHub</a>; we're tracking our issues
|
|
||||||
there.</p>
|
|
||||||
<p class="lead">There's a typo/mistake on the sslip.io website.</p>
|
|
||||||
<p>Thanks! We love <a href="https://github.com/cunnie/sslip.io/pulls">pull requests</a>.</p>
|
|
||||||
<div class="row"></div>
|
|
||||||
<p>© 2015 Brian Cunnie, Pivotal Software</p>
|
|
||||||
</div>
|
|
||||||
</div><!-- /.container -->
|
|
||||||
<!-- Bootstrap core JavaScript ================================================== -->
|
|
||||||
<!--
|
|
||||||
Placed at the end of the document so the pages load faster -->
|
|
||||||
<!-- jQuery
|
|
||||||
(necessary for Bootstrap's JavaScript plugins) -->
|
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <!--
|
|
||||||
Latest compiled and minified JavaScript -->
|
|
||||||
|
|
||||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <!--
|
|
||||||
IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
|
||||||
|
|
||||||
<script src=
|
|
||||||
"https://raw.githubusercontent.com/twbs/bootstrap/master/docs/assets/js/ie10-viewport-bug-workaround.js"></script>
|
|
||||||
<!--
|
|
||||||
Google Analytics -->
|
|
||||||
|
|
||||||
<script>
|
|
||||||
(function(i, s, o, g, r, a, m) {
|
|
||||||
i['GoogleAnalyticsObject'] = r;
|
|
||||||
i[r] = i[r] || function() {
|
|
||||||
(i[r].q = i[r].q || []).push(arguments)
|
|
||||||
}, i[r].l = 1 * new Date();
|
|
||||||
a = s.createElement(o), m = s.getElementsByTagName(
|
|
||||||
o)[0];
|
|
||||||
a.async = 1;
|
|
||||||
a.src = g;
|
|
||||||
m.parentNode.insertBefore(a, m)
|
|
||||||
})(window, document, 'script',
|
|
||||||
'//www.google-analytics.com/analytics.js', 'ga');
|
|
||||||
ga('create', 'UA-43107212-2', 'auto');
|
|
||||||
ga('send', 'pageview');
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@@ -232,11 +232,11 @@ dig @ns.sslip.io txt ip.sslip.io +short -6 # forces IPv6 lookup; sample reply "2
|
|||||||
sslip.io software by querying the TXT record of <code>version.status.sslip.io</code>:
|
sslip.io software by querying the TXT record of <code>version.status.sslip.io</code>:
|
||||||
<pre>
|
<pre>
|
||||||
dig @ns-gce.nono.io version.status.sslip.io txt +short
|
dig @ns-gce.nono.io version.status.sslip.io txt +short
|
||||||
"2.6.0"
|
"2.6.1"
|
||||||
"2022/07/14-18:25:29-0700"
|
"2022/11/11-11:39:10-0800"
|
||||||
"6512ebd"
|
"b9f0da8"
|
||||||
</pre>
|
</pre>
|
||||||
<p>The first number, ("2.6.0"), is the version of the sslip.io DNS software, and is most relevant. The other two
|
<p>The first number, ("2.6.1"), is the version of the sslip.io DNS software, and is most relevant. The other two
|
||||||
numbers are the date compiled and the most recent git hash, but those values can differ across servers due to the
|
numbers are the date compiled and the most recent git hash, but those values can differ across servers due to the
|
||||||
manner in which the software is deployed.</p>
|
manner in which the software is deployed.</p>
|
||||||
<h4 id="metrics">Server Metrics</h4>You can retrieve metrics from a given server by querying the TXT records of
|
<h4 id="metrics">Server Metrics</h4>You can retrieve metrics from a given server by querying the TXT records of
|
||||||
@@ -380,11 +380,6 @@ Placed at the end of the document so the pages load faster -->
|
|||||||
'//www.google-analytics.com/analytics.js', 'ga');
|
'//www.google-analytics.com/analytics.js', 'ga');
|
||||||
ga('create', 'UA-43107212-2', 'auto');
|
ga('create', 'UA-43107212-2', 'auto');
|
||||||
ga('send', 'pageview');
|
ga('send', 'pageview');
|
||||||
</script>About HTML Tidy: https://github.com/htacg/tidy-html5 Bug reports and comments:
|
</script>
|
||||||
https://github.com/htacg/tidy-html5/issues Official mailing list: https://lists.w3.org/Archives/Public/public-htacg/
|
|
||||||
Latest HTML specification: http://dev.w3.org/html5/spec-author-view/ Validate your HTML documents:
|
|
||||||
http://validator.w3.org/nu/ Lobby your company to join the W3C: http://www.w3.org/Consortium Do you speak a language
|
|
||||||
other than English, or a different variant of English? Consider helping us to localize HTML Tidy. For details please
|
|
||||||
see https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Reference in New Issue
Block a user