-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
310 lines (305 loc) · 16 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>ACME for .onion domains</title>
<meta property="og:title" content="ACME for .onion domains"/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="https://acmeforonions.org"/>
<meta property="og:locale" content="en_GB"/>
<meta property="og:description"
content="A project to standardise extensions to the ACME protocol to allow its use for issuing TLS certificates to Tor hidden services."/>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
</head>
<body>
<div class="container py-4">
<div class="p-5 mb-4 bg-light rounded-3">
<div class="container-fluid">
<h1 class="display-5 fw-bold">ACME for .onion domains</h1>
<p class="col-md-8 fs-4">
A project to standardise extensions to the ACME protocol to allow its use for issuing TLS certificates
to Tor hidden services.
</p>
<hr/>
<a href="https://datatracker.ietf.org/doc/draft-ietf-acme-onion/" class="btn btn-lg btn-primary my-1">
IETF datatracker
</a>
<a href="https://as207960.github.io/acme-onion/draft-ietf-acme-onion.html" class="btn btn-lg btn-primary my-1">
Read the current working draft
</a>
<a href="https://www.ietf.org/rfcdiff?url1=draft-ietf-acme-onion&url2=https://AS207960.github.io/acme-onion/draft-ietf-acme-onion.txt" class="btn btn-lg btn-primary my-1">
Diff with the last submission
</a>
</div>
</div>
<h2>Background</h2>
<p>
As it currently stands the CA/Browser Forum
<a href="https://cabforum.org/wp-content/uploads/CA-Browser-Forum-BR-1.8.6.pdf">Baseline Requirements</a>
Appendix B allow for the issuance of TLS certificates to .onion domains, however it is not widely implemented
and no CA supports automated issuance of certificates to .onion domains.
</p>
<p>
As of January 2023 only DigiCert and HARICA offer TLS certificates to .onion domains. DigiCert only offer EV
certificates (expensive and no possibility of automatic renewal), and HARICA offer no automated process for any
of their certificates. The goal of this project is to standardise how ACME can be used to issue certificates to
.onion domains automatically, and to get CAs to implement the eventual standard.
</p>
<h2>I have a suggestion/question</h2>
<p>
We'd love to hear it! Head over to <a href="https://github.com/AS207960/acme-onion">GitHub</a> and file an
issue;
or if email is more your thing you can reach me at <a href="mailto:[email protected]">[email protected]</a>.
</p>
<h2>Other output work of this project</h2>
<p>
This project has necessitated the creation of other libraries and tools to support it, these include:
</p>
<ul>
<li><a href="https://crates.io/crates/torrosion">torrosion</a> - A Tor library for Rust</li>
<li><a href="https://github.com/as207960/bjorn">Björn</a> - Components for building an ACME CA</li>
</ul>
<h2>Reference CA</h2>
<p>
A CA issuing non publicly trusted certificates to .onion domains is provided to assist client developers in
implementing this standard.
</p>
<h3>ACME</h3>
<p>
The CA implements ACME v2, along with the extensions defined in this standard. The ACME directory is available
at <code>https://acme.api.acmeforonions.org/directory</code>. It is also available over Tor at <code>http://acme.api.35ukth27shac6ef2n3brtcjoft3yg64qxjkadvkx7ueytjolzvbyvnqd.onion/directory</code>.
</p>
<p>
Client implementations that already support the <code>http-01</code> and <code>tls-alpn-01</code> challenges
(such as Certbot) will be able to work with this CA without modification. Consider the case of having a Tor
hidden service on the domain <code>5anebu2glyc235wbbop3m2ukzlaptpkq333vdtdvcjpigyb7x2i2m2qd.onion</code> with
the Tor software setup to redirect port 80 requests to port 8080 on the local machine. The following command
can be used to obtain a certificate for this domain:
</p>
<pre><code>certbot certonly --server https://acme.api.acmeforonions.org/directory --standalone --http-01-port 8080 --http-01-address 127.0.0.1 -d 5anebu2glyc235wbbop3m2ukzlaptpkq333vdtdvcjpigyb7x2i2m2qd.onion</code></pre>
<p>
Or if the hidden service is already pointing at an Nginx server the following can be used:
</p>
<pre><code>certbot certonly --server https://acme.api.acmeforonions.org/directory --nginx -d 5anebu2glyc235wbbop3m2ukzlaptpkq333vdtdvcjpigyb7x2i2m2qd.onion</code></pre>
<p>
The <code>onion-csr-01</code> challenge, and <code>http-01</code> and <code>tls-alpn-01</code> challenges against
hidden services requiring authentication will require additional work to implement in clients.
</p>
<h4>Certbot <code>onion-csr-01</code> plugin</h4>
<p>
We have written a plugin for Certbot that implements the <code>onion-csr-01</code> challenge.
The plugin is available <a href="https://pypi.org/project/certbot-onion/">on PyPi</a>. It can be used as follows:
</p>
<pre><code>certbot certonly --server https://acme.api.acmeforonions.org/directory --authenticator onion-csr --onion-csr-hs-dir /var/lib/tor/example_hs/ -d 5anebu2glyc235wbbop3m2ukzlaptpkq333vdtdvcjpigyb7x2i2m2qd.onion</code></pre>
<h3>CAA</h3>
<p>
The CA will check CAA records for the domain being issued a certificate. Our identifying domain name for CAA is
<code>test.acmeforonions.org</code>.
</p>
<p>
A fork of Tor implementing the CAA extensions to the hidden service descriptor is available
<a href="https://github.com/AS207960/tor">on GitHub</a>. A hidden service with CAA records in its descriptor
is available at <a href="http://znkiu4wogurrktkqqid2efdg4nvztm7d2jydqenrzeclfgv3byevnbid.onion/">znkiu4wogurrktkqqid2efdg4nvztm7d2jydqenrzeclfgv3byevnbid.onion</a>;
this can be used to test client implementations that shouldn't care about CAA ignore it correctly, and to test
CAA validators against.
</p>
<h3>Certificate Transparency</h3>
<p>
All certificates issued are logged to <a href="https://certificate.transparency.dev">Certificate Transparency</a>
logs. The current logs in use are:
</p>
<ul>
<li>https://ct.googleapis.com/testtube</li>
<li>https://ct.googleapis.com/logs/crucible</li>
<li>https://ct.googleapis.com/logs/eu1/solera2025h1</li>
<li>https://ct.googleapis.com/logs/eu1/solera2025h2</li>
<li>https://ct.googleapis.com/logs/eu1/solera2026h1</li>
<li>https://ct.googleapis.com/logs/eu1/solera2026h2</li>
<li>https://ct2025.itko.dev</li>
<li>https://dodo.ct.comodo.com</li>
</ul>
<h3>OCSP</h3>
<p>
The validity of certificates issued by the CA can be checked with the OCSP responder at
<code>http://ocsp.api.acmeforonions.org</code>. It is also available over Tor at <code>http://ocsp.api.35ukth27shac6ef2n3brtcjoft3yg64qxjkadvkx7ueytjolzvbyvnqd.onion</code>.
</p>
<h3>Chain of trust</h3>
<h4>Root certificate</h4>
<p>
The root of the certificate chain is the AS207960 Test CA (<code>ECDSA P-384; C = GB, ST = Cymru, O = AS207960
Cyfyngedig, OU = AS207960 Department of Random Numbers, CN = AS207960 Test CA</code>).
<a href="/root.pem">Download as PEM</a>. <a href="https://crt.sh/?caid=272971">crt.sh</a>.
</p>
<pre>
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
11:3f:28:0b:18:01:00:c2:ee:94:96:b4:11:f6:b6:e4:a8:f0:4e:03
Signature Algorithm: ecdsa-with-SHA512
Issuer: C = GB, ST = Cymru, O = AS207960 Cyfyngedig, OU = AS207960 Department of Random Numbers, CN = AS207960 Test CA
Validity
Not Before: Jun 8 16:39:59 2021 GMT
Not After : May 27 16:39:59 2071 GMT
Subject: C = GB, ST = Cymru, O = AS207960 Cyfyngedig, OU = AS207960 Department of Random Numbers, CN = AS207960 Test CA
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (384 bit)
pub:
04:e8:f8:71:4d:4e:20:e7:d9:6c:97:d4:05:fb:9d:
a3:2f:3d:3e:ac:bd:88:ad:69:6e:f1:2c:9d:2c:60:
2f:34:dc:a3:7a:67:6f:bf:5e:d3:ff:1c:08:39:1e:
7d:47:0c:24:29:9d:e0:17:8c:1d:f9:4c:c4:f0:d4:
c0:90:e1:4e:5f:63:99:f8:f9:63:45:9d:5c:81:3c:
03:f7:b9:7f:0c:1f:4b:b7:a3:23:29:0d:5e:3b:cb:
a5:59:fa:8a:66:06:59
ASN1 OID: secp384r1
NIST CURVE: P-384
X509v3 extensions:
X509v3 Subject Key Identifier:
FD:A0:A9:78:D0:AE:85:E7:31:E8:0B:51:4D:D8:E0:24:34:73:15:7E
X509v3 Authority Key Identifier:
keyid:FD:A0:A9:78:D0:AE:85:E7:31:E8:0B:51:4D:D8:E0:24:34:73:15:7E
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
Signature Algorithm: ecdsa-with-SHA512
30:64:02:30:6f:96:05:a2:d1:18:94:12:a6:85:9b:7e:56:26:
c5:84:4e:2c:fe:e5:59:f6:fa:08:cd:ce:f4:19:54:a3:14:af:
5b:d5:8f:f9:a7:fc:ed:73:31:99:e2:09:66:cc:19:07:02:30:
32:27:0d:80:a0:9b:d4:30:54:c1:2a:76:da:6a:b9:3e:b4:5e:
dc:43:aa:f1:a7:09:5e:6a:3a:35:9f:fc:29:75:b6:27:fa:0d:
6e:19:9b:b2:c2:5f:a4:ef:3e:a9:7b:98
-----BEGIN CERTIFICATE-----
MIICsTCCAjigAwIBAgIUET8oCxgBAMLulJa0Efa25KjwTgMwCgYIKoZIzj0EAwQw
gYYxCzAJBgNVBAYTAkdCMQ4wDAYDVQQIDAVDeW1ydTEcMBoGA1UECgwTQVMyMDc5
NjAgQ3lmeW5nZWRpZzEuMCwGA1UECwwlQVMyMDc5NjAgRGVwYXJ0bWVudCBvZiBS
YW5kb20gTnVtYmVyczEZMBcGA1UEAwwQQVMyMDc5NjAgVGVzdCBDQTAgFw0yMTA2
MDgxNjM5NTlaGA8yMDcxMDUyNzE2Mzk1OVowgYYxCzAJBgNVBAYTAkdCMQ4wDAYD
VQQIDAVDeW1ydTEcMBoGA1UECgwTQVMyMDc5NjAgQ3lmeW5nZWRpZzEuMCwGA1UE
CwwlQVMyMDc5NjAgRGVwYXJ0bWVudCBvZiBSYW5kb20gTnVtYmVyczEZMBcGA1UE
AwwQQVMyMDc5NjAgVGVzdCBDQTB2MBAGByqGSM49AgEGBSuBBAAiA2IABOj4cU1O
IOfZbJfUBfudoy89Pqy9iK1pbvEsnSxgLzTco3pnb79e0/8cCDkefUcMJCmd4BeM
HflMxPDUwJDhTl9jmfj5Y0WdXIE8A/e5fwwfS7ejIykNXjvLpVn6imYGWaNjMGEw
HQYDVR0OBBYEFP2gqXjQroXnMegLUU3Y4CQ0cxV+MB8GA1UdIwQYMBaAFP2gqXjQ
roXnMegLUU3Y4CQ0cxV+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGG
MAoGCCqGSM49BAMEA2cAMGQCMG+WBaLRGJQSpoWbflYmxYROLP7lWfb6CM3O9BlU
oxSvW9WP+af87XMxmeIJZswZBwIwMicNgKCb1DBUwSp22mq5PrRe3EOq8acJXmo6
NZ/8KXW2J/oNbhmbssJfpO8+qXuY
-----END CERTIFICATE-----
</pre>
<h4>Intermediate certificate</h4>
<p>
All certificates are issued by the AS207960 Onion CA intermediate certificate (<code>ECDSA P-256; C = GB, ST =
Cymru, O = AS207960 Cyfyngedig, OU = AS207960 Department of Random Numbers, CN = AS207960 Onion CA</code>).
<a href="/int.pem">Download as PEM</a>. <a href="https://crt.sh/?caid=273180">crt.sh</a>.
</p>
<pre>
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 4098 (0x1002)
Signature Algorithm: ecdsa-with-SHA512
Issuer: C = GB, ST = Cymru, O = AS207960 Cyfyngedig, OU = AS207960 Department of Random Numbers, CN = AS207960 Test CA
Validity
Not Before: Mar 18 18:14:52 2023 GMT
Not After : Mar 15 18:14:52 2033 GMT
Subject: C = GB, ST = Cymru, O = AS207960 Cyfyngedig, OU = AS207960 Department of Random Numbers, CN = AS207960 Onion CA
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:11:33:d9:55:87:61:37:70:51:0c:6b:ce:62:d2:
e0:1c:83:0a:db:d4:64:4f:08:3a:d7:6a:ab:68:25:
7d:51:8b:06:15:34:2d:05:20:92:67:82:6b:8f:dc:
3f:82:20:d9:bf:88:f9:c6:5f:cc:98:6f:8e:37:6e:
fe:a0:73:07:cb
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Subject Key Identifier:
F9:E0:AD:E4:3E:8A:45:05:97:91:48:95:26:2E:5E:B5:1C:A1:9C:19
X509v3 Authority Key Identifier:
keyid:FD:A0:A9:78:D0:AE:85:E7:31:E8:0B:51:4D:D8:E0:24:34:73:15:7E
X509v3 Basic Constraints: critical
CA:TRUE, pathlen:0
X509v3 Key Usage: critical
Digital Signature, Certificate Sign, CRL Sign
X509v3 Name Constraints: critical
Permitted:
DNS:onion
Signature Algorithm: ecdsa-with-SHA512
30:64:02:30:2d:53:7f:45:fb:b5:4e:43:cf:24:a8:a7:ce:2a:
bf:d0:5b:89:ba:68:3c:28:cd:1e:fe:5f:4d:80:2e:84:c6:64:
06:41:12:49:35:e0:71:17:a6:bc:02:67:50:b2:1a:74:02:30:
5d:42:9d:47:bc:f6:2d:02:b6:d8:c2:a4:7a:41:72:85:76:36:
0d:cc:dc:81:86:95:02:a0:cb:9d:b8:48:ab:bc:53:a2:9c:1c:
02:90:62:f8:6a:eb:75:a6:12:08:94:5e
-----BEGIN CERTIFICATE-----
MIICnTCCAiSgAwIBAgICEAIwCgYIKoZIzj0EAwQwgYYxCzAJBgNVBAYTAkdCMQ4w
DAYDVQQIDAVDeW1ydTEcMBoGA1UECgwTQVMyMDc5NjAgQ3lmeW5nZWRpZzEuMCwG
A1UECwwlQVMyMDc5NjAgRGVwYXJ0bWVudCBvZiBSYW5kb20gTnVtYmVyczEZMBcG
A1UEAwwQQVMyMDc5NjAgVGVzdCBDQTAeFw0yMzAzMTgxODE0NTJaFw0zMzAzMTUx
ODE0NTJaMIGHMQswCQYDVQQGEwJHQjEOMAwGA1UECAwFQ3ltcnUxHDAaBgNVBAoM
E0FTMjA3OTYwIEN5ZnluZ2VkaWcxLjAsBgNVBAsMJUFTMjA3OTYwIERlcGFydG1l
bnQgb2YgUmFuZG9tIE51bWJlcnMxGjAYBgNVBAMMEUFTMjA3OTYwIE9uaW9uIENB
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEETPZVYdhN3BRDGvOYtLgHIMK29Rk
Twg612qraCV9UYsGFTQtBSCSZ4Jrj9w/giDZv4j5xl/MmG+ON27+oHMHy6N/MH0w
HQYDVR0OBBYEFPngreQ+ikUFl5FIlSYuXrUcoZwZMB8GA1UdIwQYMBaAFP2gqXjQ
roXnMegLUU3Y4CQ0cxV+MBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQD
AgGGMBcGA1UdHgEB/wQNMAugCTAHggVvbmlvbjAKBggqhkjOPQQDBANnADBkAjAt
U39F+7VOQ88kqKfOKr/QW4m6aDwozR7+X02ALoTGZAZBEkk14HEXprwCZ1CyGnQC
MF1CnUe89i0CttjCpHpBcoV2Ng3M3IGGlQKgy524SKu8U6KcHAKQYvhq63WmEgiU
Xg==
-----END CERTIFICATE-----
</pre>
<div class="p-4 bg-dark text-light rounded-3">
<div class="container-fluid">
<h2>Acknowledgements</h2>
<p>
With thanks to the <a href="https://www.opentech.fund">Open Technology Fund</a> for funding the work
going into this standard.
</p>
<img src="otf-logo.svg" alt="OTF Logo" class="col-md-4 col-sm-6 my-1">
</div>
</div>
<footer class="pt-3 mt-4 text-muted border-top">
<p>
© 2023, <a href="http://as207960.net">AS207960 Cyfyngedig</a>
</p>
<p>
AS207960 Cyfyngedig, trading as Glauca Digital, is:
</p>
<ul>
<li>
a limited company registered in Wales (№
<a href="https://find-and-update.company-information.service.gov.uk/company/12417574">12417574</a>)
</li>
<li>
a registered data controller with the Information Commissioner's Office (№
<a href="https://ico.org.uk/ESDWebPages/Entry/ZA782876">ZA782876</a>)
</li>
<li>
registered for VAT in the UK (№ GB378323867)
</li>
<li>
registered for VAT in the EU (№ EU372013983)
</li>
<li>
registered for VAT in Turkey (№ 0861333524)
</li>
<li>
registered for VAT in South Korea (№ 522-80-03080)
</li>
</ul>
</footer>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN"
crossorigin="anonymous"></script>
<script defer data-api="https://s.as207960.net/api/event" data-domain="acmeforonions.org" src="https://s.as207960.net/js/script.js"></script>
</body>
</html>