I need to distribute macOS app for beta testing using Developer ID signing.
I followed the guide from this post: https://developer.apple.com/forums/thread/125508?answerId=402187022#402187022. You can check out my progress in this repo: https://github.com/PhilipDukhov/wireguard-apple
Step 1. First of all I converted network extension to system one
I had to use the following code to determine path of the extension:
let extensionPath = Bundle.main.bundleURL
.appendingPathComponent("Contents")
.appendingPathComponent("Library")
.appendingPathComponent("SystemExtensions")
.appendingPathComponent("WireGuardNetworkExtension.systemextension")
.path
In order to create a tunnel I use SecAccessCreate with the results of both app and extension SecTrustedApplicationCreateFromPath. There’s no constant for "SystemExtensions" folder, also SecTrustedApplicationCreateFromPath is deprecated, does it mean there’s a new way to do so?
Yet it works on this step, which you can check out on commit 07df864a8d27948b3aa0c33cf4276835e58eeeee
Step 2. Then I created all needed provision profiles, changed signing settings and updated both .entitlements with packet-tunnel-provider-systemextension. The project builds and runs, and tunnel gets successfully created, but when I try to connect and run the extension, it fails. Console has following errors:
[NWPrivilegedHelper startXPCListener]_block_invoke client pid 123 does not have any known entitlement
NEVPNTunnelPlugin(com.bubble.bubble-vpn[6191]): Validation of the extension failed
WireGuardNetworkExtension: SIOCGIFMTU failed: Device not configured
I tried both disabling SIP and notarizing the app. The result code is on this commit: 357059234935ab1442bb6be0324809920355bfc9
Tunnel created in Step 1 works on step 2, so create a new one to test it out. If you need a test config file let me know: philip.dukhov@gmail.com.
Post
Replies
Boosts
Views
Activity
I need to make distribute my mac VPN app through Developer ID.
As I understand, to do so I need to convert my app NE to a system. Is there any guide to do so?
I created a new system NE target, importer all files from old target, but looks like it's not enough. It doesn't work, in console when I'm trying to establish a connection I found these errors:
neagent: 			 NEAgentSession: failed to create the delegate
nesessionmanager: 	 Tearing down XPC connection due to setup error: Error Domain=NEAgentErrorDomain Code=2 "(null)"
New plist contains NEMachServiceName, probably I need to use it to esatablish connection?
I'm developing a VPN app. It's already in AppStore - https://apps.apple.com/ua/app/bubble-securitycloud/id1513609900?mt=12.
After updating to Big Sur on my developing mac I started getting an error when hit download button:
Unable to Download App.
"Bubble SecurityCloud" could not be installed. Please try again later.
On an other mac it downloads and works fine.
I tried removing defaults; also tried removing network extension using pluginkit, which I usually need to do in order to switch between development and AppStore versions.
Is there any system files that can be cleared to fix the problem?