@@ -7,14 +7,14 @@ having to install any software or having to share your private keys with anyone.
77It uses the non-profit [ Let's Encrypt] ( https://letsencrypt.org/ ) certificate
88authority to issue the free certificates. Hooray for free certs!
99
10- ##Donate
10+ ## Donate
1111
1212If this script is useful to you, please donate to the EFF. I don't work there,
1313but they do fantastic work.
1414
1515[ https://eff.org/donate/ ] ( https://eff.org/donate/ )
1616
17- ##How to use this website
17+ ## How to use this website
1818
1919Go to: https://gethttpsforfree.com
2020
@@ -35,14 +35,14 @@ These should all be installed by default in Linux and Mac OSX. If you're
3535running Windows, you might need to install [ Cygwin] ( https://cygwin.com/install.html )
3636to get openssl and echo working on Windows.
3737
38- ##How this website works
38+ ## How this website works
3939
4040This website works by making requests to the Let's Encrypt [ API] ( https://acme-v01.api.letsencrypt.org )
4141(using the [ ACME] ( https://github.com/ietf-wg-acme/acme ) protocol). There's 5 steps to the process,
4242which are explained below. Also, I encourage you to read the source code (it's not that long) and
4343pop open your browser's debugger to see the ajax requests that are going on. Please, audit this!
4444
45- ###Step 1: Account Info
45+ ### Step 1: Account Info
4646
4747First, the ACME protocol requires you register a public key and contact information
4848so you can sign all the requests you make to the API. In this step, you need to
@@ -80,15 +80,15 @@ This step converts it to this JWK:
8080}
8181```
8282
83- ###Step 2: Certificate Signing Request
83+ ### Step 2: Certificate Signing Request
8484
8585Second, you need to specify the domains you want certificates for. That's done
8686through a certificate signing request ([ CSR] ( https://en.wikipedia.org/wiki/Certificate_signing_request ) ).
8787The javascript in this section uses the [ ASN1.js] ( https://lapo.it/asn1js/ ) library
8888to parse the CSR and read the domains. NOTE: the private key for the domain cert
8989cannot be the same as your account private key, according to ACME.
9090
91- ###Step 3: Sign API Requests
91+ ### Step 3: Sign API Requests
9292
9393Third, you need tell the Let's Encrypt API that you want to register and get certs
9494for some domains. These requests must be signed with your account private key, so
@@ -97,6 +97,7 @@ challenges for each domain, so if you want both `example.com` and `www.example.c
9797need to make two new-authz calls.
9898
9999Here's the list of requests that need to be made to the API:
100+
100101* ` /acme/new-reg ` - Register the account public key (discarded if already registered)
101102* ` /acme/new-authz ` - Asks for challenges for the domain for which you want a cert.
102103* ` /acme/new-authz ` - (...needs to be called for each domain)
@@ -121,7 +122,7 @@ ajax requests to the above endpoints for `new-reg` and each `new-authz`. If the
121122account public key has already been registered the ` new-reg ` response is a 409
122123Conflict, which is ignored.
123124
124- ###Step 4: Verify Ownership
125+ ### Step 4: Verify Ownership
125126
126127The response for each ` /new-authz ` has some challenges you need perform to
127128prove you own the domain. The challenge that this website chooses is "http-01",
@@ -146,13 +147,13 @@ challenge url to tell Let's Encrypt to verify the domain. Once this is done for
146147all the domains in your CSR, an ajax request is made to ` /new-cert ` with the
147148previously signed payload from step 3.
148149
149- ###Step 5: Install Certificate
150+ ### Step 5: Install Certificate
150151
151152The response from ` /new-cert ` should be your new certificate! Congrats! This
152153step prints the certificate and also prints the intermediate certificate you
153154need to chain this certificate to the root certificate.
154155
155- ##Privacy
156+ ## Privacy
156157
157158This website is entirely static files and only makes ajax requests to the
158159Let's Encrypt API. It does not track or remember anything when you leave.
@@ -163,7 +164,7 @@ Finally, since this website is completely static, it's un-hostable! Just
163164right-click and "Save Page As...", save the complete website to your local
164165computer, then open it in a browser. It still works when hosted locally!
165166
166- ##Feedback/Contributing
167+ ## Feedback/Contributing
167168
168169I'd love to receive feedback, issues, and pull requests to make this script
169170better. The main script itself, ` js/index.js ` , is less than 800 lines of code, so
@@ -177,7 +178,7 @@ TODO (pull requests welcome):
177178* ~~ Installation instructions for Apache~~
178179* Accept GPG public keys as account public keys
179180
180- ##What's NOT on the Roadmap
181+ ## What's NOT on the Roadmap
181182
182183* Third party libraries (asn1.js is the only one)
183184* Fonts or images
0 commit comments