網(wǎng)上有很多關(guān)于pos機電子簽名設(shè)置,Pyinstaller 版的知識,也有很多人為大家解答關(guān)于pos機電子簽名設(shè)置的問題,今天pos機之家(m.afbey.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機電子簽名設(shè)置
【起因】根據(jù)蘋果官方的說明,自 MacOS 10.15 起,所有從互聯(lián)網(wǎng)下載的未公證的 app,默認將無法被打開,因此,在 App Store 外分發(fā)的 app,也必須在發(fā)布前,將 app 上傳到蘋果的服務器進行公證。
使用 xcode 自帶 archive 工具可以很方便地進行公證,但公司的 app 是使用 python + pyqt5 開發(fā)的,沒有辦法使用 xcode 進行公證, 因此,我花時間,詳細研究了一下 python 的打包工具 pyinstaller,以及 macOS 的認證命令, 最終完美解決了 python 程序的公證問題。
【工作環(huán)境】下面介紹的公證方法,其工作環(huán)境要求如下:
macOS CLI ( xcode-select —install )Xcodepyinstaller (> 4.5)蘋果開發(fā)者賬號公證的基本思路如下:
第一步:配置開發(fā)者證書,并對外部引用程序進行簽名第二步:pyinstaller 打包程序, 并在打包過程中,對代碼、外部引用庫、外部引用文件進行簽名第三步:轉(zhuǎn)換 app 程序為 dmg 文件第四步:xcrun altool 上傳 dmg 文件到蘋果服務器,進行公證第五步:xcrun altool 查詢公證狀態(tài)第六步:xcrun stapler 證書蓋章第七步:正式發(fā)布 dmg 程序下面就詳細介紹一下每一步是如何操作的:
【1. 證書及簽名】配置開發(fā)者證書第一步:打開 鑰匙串訪問
第二步:進入 鑰匙串訪問,在菜單中選擇 ”證書助理“ -> "從證書頒發(fā)機構(gòu)請求證書…"
第三步: 彈窗中填寫申請信息
填寫完成后,保存到本地,文件名為 CertificateSigningRequest.certSigningRequest
第四步:登錄蘋果開發(fā)者網(wǎng)站
(https://developer.apple.com/account/), 進入 Certificates, IDs & Profiles 頁面,點擊添加按鈕,選擇 Developer ID Application
上傳剛才添加的 CertificateSigningRequest.certSigningRequest 文件
上傳成功后點擊下載,將證書保存到本地。
第五步:雙擊下載到本地的證書,添加到鑰匙串,如下:
第六步:設(shè)置證書的訪問權(quán)限
至此,蘋果的開發(fā)者證書已安裝完成
外部引用程序簽名codesign -s "Developer ID Application: XXXXX (4J45KSVBG8)" -v --deep --timestamp -o runtime 外部引用程序
其中 "Developer ID Application: XXXXX (4J45KSVBG8)" 就是鑰匙串里 證書名稱
驗證簽名codesign -dvvv 外部引用程序
輸出中,看到證書名稱及簽名成功
【2. pyinstaller 打包】打包代碼# 生成編譯的 spec 文件pyi-makespec -Dw --add-data "../src/*:src" --key "1234567812345678" --osx-bundle-identifier "com.xxx.xxxxx" --codesign-identity "Developer ID Application: XXXXX (4J45KSVBG8)" --osx-entitlements-file entitlements.plist -i “icon.icns" -n “MyAPP" ../main.py# compiler source codepyinstaller --clean -y MyAPP.spec
注意:上面命令中,一定要使用 --osx-bundle-identifier 來指定 app 的 bundle-id, 和 --codesign-identity 來指定開發(fā)者賬號,如果不指定的話,app 的外部引用的庫將無法進行簽名, 公證時將報下列錯誤。
【3. 打包層 dmg】./dmg-create \\--volname “XXXX" \\--volicon “xxxx.icns" \\--background “xxxx.png" \\--window-pos 200 120 \\--window-size 569 400 \\--icon-size 80 \\--icon MyAPP.app 150 150 \\--hide-extension MyAPP.app \\--app-drop-link 430 150 \\MyApplication.dmg \\./dist
【4. 公證】
公證# 存儲 App 專用密碼xcrun altool --store-password-in-keychain-item "AC_PASSWORD" -u "your-username" -p "your-password"# 上傳 dmg 到蘋果服務器公證xcrun altool --notarize-app -t osx -f MyApplication.dmg --primary-bundle-id com.xxx.xxxxx -u your-username --password "@keychain:AC_PASSWORD"
注意:上面的 password, 是 App 專用密碼, 因此,需要創(chuàng)建一個App 專用密碼, 創(chuàng)建的方法如下:
登錄蘋果 appleid 網(wǎng)站 (https://appleid.apple.com/account/)
創(chuàng)建成功后,一定記下生成的 App 專用密碼,方便后面使用。如果沒有記下的話,再次點擊”生成密碼…”, 會生成新的密碼。
【5 查詢公證結(jié)果】盡管官方說在一小時內(nèi),但一般很快,幾分鐘公證就會完成。完成后,下列命令查詢公證結(jié)果
# 檢查處理結(jié)果xcrun altool --notarization-info "7ad11612-c807-4899-be59-ea535317a3b4" -u your-username --password "@keychain:AC_PASSWORD"
如果公證成功,會發(fā)郵件給你。如果公證失敗的話,上述命令會返回日志 URL,通過訪問日志 URL ,可以了解不通過的原因。
注: 7ad11612-c807-4899-be59-ea535317a3b4,這個是公證時返回的 ID, 這個ID 每次公證都是不同
【6. 文件蓋章】在上面的公證步驟中,Apple 已經(jīng)創(chuàng)建了一張“票證”,也是一個數(shù)據(jù)庫記錄,它與應用程序的簽名相匹配,表示應用程序已經(jīng)公證完成。當 MacOS 運行此應用程序時,MacOS 會聯(lián)系 Apple 服務器并索要“票證”。如果存在這樣的票證,則該應用程序被視為“合法”的。這個過程在程序的生命周期中,只會發(fā)生一次,MacOS 會把“票證”緩存,為之后應用程序使用。
如果想加速這個初始應用程序的執(zhí)行,或者希望能夠在離線時運行應用程序,我們需要將這張“票證”裝訂到應用程序中,下載票證并將其附加到應用程序中方法如下:
# 給文件蓋章xcrun stapler staple MyApplication.dmg【7. APP 分發(fā)】
在最后分發(fā)前,我們最后確認一下應用程序是否被公證
檢驗簽名公證# 查詢公證spctl --verbose=4 --assess --type execute MyApplication.dmg輸入如下:MyApplication.dmg: acceptedsource=Notarized Developer IDorigin=Developer ID Application: YourName (XXX)
此命令直接使用 Gatekeeper 來評估應用程序是否正確簽名和公證。如果顯示 accepted 的,證明公證已完成。
至此,就可以把 APP 分發(fā)給所有用戶了。(完)
以上就是關(guān)于pos機電子簽名設(shè)置,Pyinstaller 版的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機電子簽名設(shè)置的知識,希望能夠幫助到大家!
