Skip to content

Commit 2105a61

Browse files
docs: macOS builds are signed and notarised
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 0a63bc7 commit 2105a61

1 file changed

Lines changed: 21 additions & 84 deletions

File tree

docs/UNSIGNED.md

Lines changed: 21 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,39 @@
1-
# Running unsigned SRT Router builds
1+
# Running SRT Router — Gatekeeper, SmartScreen and firewalls
22

3-
Everything this project releases is built and published unsigned. This page explains
4-
what each operating system will say, exactly how to get past it, and how to sign the
5-
artifacts yourself if you'd rather not click through warnings.
3+
macOS builds are signed and notarised, so they just open. The Windows
4+
builds are unsigned and SmartScreen will object once. This page covers
5+
that, the firewall prompts, and how to verify a download.
66

7-
## Why they're unsigned
7+
## Why the Windows builds are unsigned
88

9-
Clearing these warnings for redistribution costs money, not effort:
9+
macOS signing is covered: this project carries an Apple Developer Program
10+
membership and a *Developer ID Application* certificate, and every macOS
11+
artefact is notarised by Apple.
1012

11-
| Platform | What's needed | Cost |
12-
|---|---|---|
13-
| macOS | Apple Developer Program + a *Developer ID Application* certificate, plus notarization of every build | $99/year |
14-
| Windows | An Authenticode code-signing certificate (OV, or EV to skip SmartScreen reputation-building) | ~$200–500/year |
15-
16-
This project carries neither. Nothing is wrong with the downloads — the OS simply has
17-
no publisher identity to check them against, so it assumes the worst once and then
13+
Windows is not. An Authenticode certificate (OV, or EV to skip building
14+
SmartScreen reputation) runs ~$200-500/year, and the certificate authorities
15+
will only issue one to a registered legal entity — which this project is not.
16+
Nothing is wrong with the Windows downloads; Windows simply has no publisher
17+
identity to check them against, so it assumes the worst once and then
1818
remembers your answer.
1919

2020
> If you'd rather not trust a stranger's binary at all, every release is reproducible
2121
> from source — see the build instructions in the README.
2222
23-
## macOS — Gatekeeper
24-
25-
macOS quarantines anything downloaded from a browser, then refuses to launch it because
26-
**"the developer cannot be verified"**. Any one of these clears it:
27-
28-
**1. Right-click → Open** (simplest, per-app, once)
23+
## macOS — nothing to do
2924

30-
Right-click (or Control-click) the app → **Open****Open** in the dialog. The plain
31-
double-click won't offer this — it has to be the context menu.
25+
Every macOS artefact is Developer ID-signed, notarised by Apple and stapled,
26+
so it opens on a double-click with no warning and no quarantine step. That
27+
covers the nested helper binaries inside the bundle too, which is what the
28+
old right-click-Open workaround never did.
3229

33-
**2. Clear the quarantine flag** (scriptable, good for deployment)
30+
To confirm it for yourself:
3431

3532
```sh
36-
xattr -dr com.apple.quarantine "/Applications/SRT Router.app"
33+
spctl -a -vv -t install "/Applications/<app>.app"
34+
# accepted / source=Notarized Developer ID
3735
```
3836

39-
**3. Approve it after the fact**
40-
41-
Launch it once, let macOS block it, then go to **System Settings → Privacy & Security**
42-
and click **Open Anyway** next to the message about the blocked app.
43-
44-
### The CLI build
45-
46-
The command-line archive isn't an app bundle, so there's no right-click → Open. Extract
47-
it, then:
48-
49-
```sh
50-
xattr -dr com.apple.quarantine ./srt-router
51-
chmod +x ./srt-router
52-
./srt-router --help
53-
```
54-
55-
### `.pkg` installers
56-
57-
A `.pkg` from an unidentified developer is blocked the same way. Right-click → **Open**,
58-
or clear the flag on the installer itself before running it:
59-
60-
```sh
61-
xattr -dr com.apple.quarantine ~/Downloads/<file>.pkg
62-
```
63-
64-
### Apple Silicon and the `.zip` trap
65-
66-
If you copy an app out of a `.zip` with Finder the quarantine flag comes with it. Prefer the
67-
`.dmg` or `.pkg`, or run the `xattr` command above after copying.
68-
6937
## Windows — SmartScreen
7038

7139
**"Windows protected your PC — Microsoft Defender SmartScreen prevented an
@@ -144,37 +112,6 @@ The `.deb` and `.rpm` packages are unsigned too, so your package manager may obj
144112

145113
## Signing it yourself
146114

147-
### macOS — ad-hoc (local machine only)
148-
149-
An ad-hoc signature stops the OS re-prompting on **your own machine**. It is **not**
150-
notarization and will do nothing for anyone else:
151-
152-
```sh
153-
codesign --force --deep --sign - "/Applications/SRT Router.app"
154-
```
155-
156-
Verify it took:
157-
158-
```sh
159-
codesign -dv --verbose=4 "/Applications/SRT Router.app"
160-
spctl -a -vv "/Applications/SRT Router.app" # still reports "rejected" — ad-hoc is not notarization
161-
```
162-
163-
### macOS — real signing and notarization
164-
165-
With an Apple Developer Program membership and a *Developer ID Application* certificate:
166-
167-
```sh
168-
codesign --force --deep --options runtime --timestamp \
169-
--sign "Developer ID Application: Your Name (TEAMID)" "<artifact>"
170-
xcrun notarytool submit "<artifact>.zip" --apple-id you@example.com \
171-
--team-id TEAMID --password "app-specific-password" --wait
172-
xcrun stapler staple "<artifact>"
173-
```
174-
175-
Note the **hardened runtime** (`--options runtime`) — notarization rejects builds without
176-
it, and a hardened build with an ad-hoc signature won't launch at all.
177-
178115
### Windows — Authenticode
179116

180117
```powershell

0 commit comments

Comments
 (0)