pos機電子簽名設(shè)置,Pyinstaller 版

 新聞資訊  |   2023-05-17 12:57  |  投稿人:pos機之家

網(wǎng)上有很多關(guān)于pos機電子簽名設(shè)置,Pyinstaller 版的知識,也有很多人為大家解答關(guān)于pos機電子簽名設(shè)置的問題,今天pos機之家(m.afbey.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機電子簽名設(shè)置

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è)置的知識,希望能夠幫助到大家!

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://m.afbey.com/news/47502.html

你可能會喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報,一經(jīng)查實,本站將立刻刪除。