首页 > 编程语言 >mac nwjs程序签名公证

mac nwjs程序签名公证

时间:2024-10-25 16:17:01浏览次数:8  
标签:nwjs apple 公证 -- mac 签名 com ID

为什么需要公证

mac os14.5之后的系统,如果不对应用进行公证,安装,打开,权限使用上都会存在问题,而且有些问题你强制开启(sudo spctl --master-disable)使用后可能会有另外的问题,

例如在安全和隐私里面想开启麦克风和视像头的时候找不到自己的应用;或是无法收到桌面通知(这些问题也是有的电脑会有的不会,可能跟以前是否已经安装过有关,具体的机制没有细究,总之就是可能出现未知问题)

 

如何公证?

公证前准备:

开发者账号中,必须生成两份重要证书:

develop ID Application 证书 —— 用来对 .app 进行分发签名。类似于 iOS 的 inhouse enterprise(企业内部分发应用)

develop ID Installer 根证书 —— 用来对打包生成的 .dmg, .pkg 进行签名

一个主账号授权的副账号,用来做 .pkg / .dmg 的公正用。(可以直接用主账号)

这个副账号对应的专有密钥(需要在 https://appleid.apple.com 中生成)

副账号所属的 Team ID

如何生成develop ID Application 证书和的develop ID Installer 根证书

Sign In - Apple

Application证书安装后,设置成始终信任,避免老是频繁询问需要输入密码。

打包的设备需要安装这2份证书,并且需要安装在钥匙串的登录里面,双击安装默认好像是安装在系统,如果安装在这里签名命令执行可能失败。

如何获取用于公证的专有密钥

Manage your Apple Account

如何创建appid(app 的 bundle ID)? (mac的公证不确认是否需要该项操作,目前是有com.moa.pc和com.sangfor.meeting)

Sign In - Apple

公证主要用到几个命令

1.签名应用

签名的要求一:是app里面的所有2进制文件,.app应用都需要签名,并且app包里面不能包含zip等压缩包

签名的要求二:签名的应用必须开启hardened runtime

签名的命令:

codesign --verbose --force --deep --strict --options runtime --timestamp --sign "develop ID Application 证书" --entitlements neededToRun.entitlements "需要签名的文件或应用"

命令里面neededToRun.entitlements是个文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.device.camera</key>
    <true/>
    <key>com.apple.security.device.audio-input</key>
    <true/>
    <key>com.apple.security.device.microphone</key>
    <true/>
    <key>com.apple.security.automation.apple-events</key>
    <true/>
    <key>com.apple.security.cs.allow-dyld-environment-variables</key>
    <true/>
    <key>com.apple.security.cs.allow-jit</key>
    <true/>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.apple.security.cs.disable-executable-page-protection</key>
    <true/>
    <key>com.apple.security.cs.disable-library-validation</key>
    <true/>
  </dict>
</plist>

例如:

codesign --verbose --force --deep --strict --options runtime --timestamp --sign "Developer ID Application: XXX" --entitlements neededToRun.entitlements "./XXX.app/Contents/MacOS/nwjs"

neededToRun.entitlements这个文件跟hardened runtime相关,如果需要开启一些权限,处理配置plist之外还要配置这个文件。

签名需要注意,签名也是有顺序的,一般是从文件夹最里面前到外面,如果包有其他的修改,nwjs这个文件都需要重新签名。对应sing.js里面的sign([`${contents}/MacOS/nwjs`]);

2.打包签名pkg包

命令:

pkgbuild --component 打包的应用 --install-location 安装目录 --scripts 安装脚本相关 --version 版本 --identifier pkgid  --sign install的签名证书 输出的pkg包名字

3.验证签名结果(验证签名成功不等于所有app里面所有文件都签名成功

命令:

codesign --verify -vvvv "应用或文件路径"

例如:

codesign --verify -vvvv "./XXXapp/Contents/MacOS/nwjs"

4.上传公证pkg包

命令:

xcrun notarytool submit --apple-id 账号 --password 密码 --team-id ID号 xxxxx.pkg

5. 检测公证结果

一般执行完上述第4步后,就可以开始使用以下命令查看公证结果,立即检测的话一般是处于公证中的状态,这个状态一般持续1分钟左右,一般等个1-2分钟后就会有结果。

命令:

xcrun notarytool info --apple-id 账号 --password 密码 --team-id ID号 RequestUUID

例如:

xcrun notarytool info --apple-id 账号 --password 密码 --team-id ID号 0818c020-fd0c-4886-a056-056481858828

标签:nwjs,apple,公证,--,mac,签名,com,ID
From: https://blog.csdn.net/hongkid/article/details/143237265

相关文章

  • 苹果预告下周发布Mac新品:全系标配M4系列芯片
    10月25日消息,苹果高管GregJoswiak在社交平台上预告,苹果会在下周推出Mac新品。据悉,苹果不会举办新品发布会,而是以新闻稿的形式发布产品,届时苹果官网会同步上架。这次苹果将同时发布iMac、Macmini和MacBookPro,这些新品都将标配M4系列处理器,内存同时升级到16GB,为AppleIntellig......
  • Android 9.0 修改WLAN热点名称为MAC地址后四位
    这个需求主要是读取mac地址,mac地址一般是用写号工具写入到NVRAM,所以需要从NVRAM读取准确的地址。导入nvram操作用到的库:frameworks/opt/net/wifi/service/Android.mkLOCAL_STATIC_JAVA_LIBRARIES:=\vendor.mediatek.hardware.nvram-V1.0-java读取wifimac地址......
  • macOS 13 Ventura (苹果最新系统)v13.7正式版
    Apple今日发布了macOS的下一个版本,称为macOSVentura,它具有多项新功能,包括StageManager、ContinuityCamera、新的安全更新等。完整的兼容性列表如下:iMac(2017年及更高版本)iMacProMacBookair(2018年及更新机型)MacBookPro(2017年及更新机型)MacPro(2019年及更新机......
  • 在 Mac 上有什么好的打开 .sqlite 或者 .db 数据库文件的软件
    在Mac上好的打开.sqlite或者.db数据库文件的软件有:1.DBBrowserforSQLite;2.SQLiteStudio;3.Base;4.PawSQLitePawset;5.NavicatforSQLite;6.DBeaver。DBBrowserforSQLite是一款免费、开源的SQLite数据库浏览器,适用于Mac、Windows和Linux系统。在Mac上打开.sql......
  • mac scrcpy 报错 does not exist or is not a regular file,ERROR: Server connection
    scrcpymac与极空间冲突问题:➜~scrcpyscrcpy2.7<https://github.com/Genymobile/scrcpy>INFO:ADBdevicefound:INFO:-->(usb)8AJY0LU0QdevicePixel_3_XLstat:NosuchfileordirectoryERROR:'/Applications/极空间.ap......
  • Cinemachine系列——CinemachineSmoothPath&Body Tracked Dolly
    今天来看下我感觉比较有意思的功能,将摄像机像电影一样固定在一条轨道上进行拍摄。通过PackageManager导入Cinemachine插件,在导入CinemachineSample后,我们可以在Assets文件夹下Cinemachine/2.6.17(这个是你下载的cinemachine版本号)/CinemachineExampleScenes/Scenes/TrackedDo......
  • Mac装的windows和原生windows有什么区别
    Mac上安装的Windows(通过BootCamp或虚拟机方式)与原生Windows系统在多个方面存在差异,包括:1.硬件兼容性;2.性能表现;3.用户体验;4.系统更新与维护;5.成本和许可;6.目标用户群;7.安全性和隐私。硬件兼容性是两者最显著的区别,Mac上的Windows需要通过特定的驱动程序来支持Apple的硬件,而原生W......
  • Cinemachine系列——最佳视野(一)&CinemachineClearShot
    这里介绍一下,自动切换到场景中最佳视野的摄像机的第一种方式。首先介绍一下CinemachineClearShot组件,它是自动完成这项工作的核心。通过PackageManager导入Cinemachine插件,在导入CinemachineSample后,我们可以在Assets文件夹下Cinemachine/2.6.17(这个是你下载的cinemachine版本......
  • Cinemachine——磁力吸实现&CinemachineTargetGroup
    视角“聚焦”是游戏过场动画中常见的功能,Cinemachine实现这个功能,让我们看看具体怎么使用吧。通过PackageManager导入Cinemachine插件,在导入CinemachineSample后,我们可以在Assets文件夹下Cinemachine/2.6.17(这个是你下载的cinemachine版本号)/CinemachineExampleScenes/Scenes......
  • 智能修图软件:Perfectly Clear Workbench AI图像清晰修复软件「mac +win】
    PerfectlyClearWorkbench是一款专为Mac和Windows用户打造的智能图像清晰修复软件。它采用先进的人工智能和机器学习算法,自动识别并修复图像中的曝光不足、色偏、噪点等问题。软件内置丰富的预设和一键增强功能,支持批量处理,大幅提高工作效率。同时,它也提供手动调整选项,满足用户......