|
1 | | -# Running unsigned SRT Router builds |
| 1 | +# Running SRT Router — Gatekeeper, SmartScreen and firewalls |
2 | 2 |
|
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. |
6 | 6 |
|
7 | | -## Why they're unsigned |
| 7 | +## Why the Windows builds are unsigned |
8 | 8 |
|
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. |
10 | 12 |
|
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 |
18 | 18 | remembers your answer. |
19 | 19 |
|
20 | 20 | > If you'd rather not trust a stranger's binary at all, every release is reproducible |
21 | 21 | > from source — see the build instructions in the README. |
22 | 22 |
|
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 |
29 | 24 |
|
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. |
32 | 29 |
|
33 | | -**2. Clear the quarantine flag** (scriptable, good for deployment) |
| 30 | +To confirm it for yourself: |
34 | 31 |
|
35 | 32 | ```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 |
37 | 35 | ``` |
38 | 36 |
|
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 | | - |
69 | 37 | ## Windows — SmartScreen |
70 | 38 |
|
71 | 39 | **"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 |
144 | 112 |
|
145 | 113 | ## Signing it yourself |
146 | 114 |
|
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 | | - |
178 | 115 | ### Windows — Authenticode |
179 | 116 |
|
180 | 117 | ```powershell |
|
0 commit comments