OSX:代码签名可执行文件以避免防火墙警告对话框



OSX El Capitan and Go 1.6

我想要的比标题听起来更简单。

OSX 防火墙不允许任何未知应用程序接受连接。当任何此类程序启动时,用户会看到一个对话框,是否应允许所述可执行文件接收连接。然后记住用户的选择。

例如,当

使用节点开发时,上述工作正常,其中实际的可执行文件是单个二进制文件,用户只需要允许/拒绝它一次。

当使用go(和任何其他编译语言)开发时,创建的可执行文件每次都是不同的。这意味着每次启动服务器时都会收到对话框。

避免此对话框的一种方法是使用在 OSX 本身中生成的自签名证书对可执行文件进行签名。获得证书后,我们只需对可执行文件进行签名并允许/拒绝一次。即使可执行二进制文件发生更改,也始终会记住代码签名。

所以,我的问题是

有没有办法在运行编译的二进制文件之前go运行签名命令?

更简单:在本地主机上显式启动服务器,例如:

http.ListenAndServe("localhost:8080", nil)

我最近写了一篇关于这个的小文章:

在 OSX 上禁止-接受-传入-网络连接-警告

愚蠢的我。我花了 5 分钟写问题,花了 2 分钟找到答案并编写解决它的脚本。我会在这里发布它,以防有人偶然发现同样的问题。

binary=$GOPATH/pkg/kliron/hiss/hiss.a   
go build -o $binary hiss/main.go
codesign -f -s klironCode $binary --deep   
$binary "$@"

只需使用go build.

最新更新