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

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

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

本文目錄一覽:

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

pos機(jī)電子簽名設(shè)置

【起因】

根據(jù)蘋(píng)果官方的說(shuō)明,自 MacOS 10.15 起,所有從互聯(lián)網(wǎng)下載的未公證的 app,默認(rèn)將無(wú)法被打開(kāi),因此,在 App Store 外分發(fā)的 app,也必須在發(fā)布前,將 app 上傳到蘋(píng)果的服務(wù)器進(jìn)行公證。

使用 xcode 自帶 archive 工具可以很方便地進(jìn)行公證,但公司的 app 是使用 python + pyqt5 開(kāi)發(fā)的,沒(méi)有辦法使用 xcode 進(jìn)行公證, 因此,我花時(shí)間,詳細(xì)研究了一下 python 的打包工具 pyinstaller,以及 macOS 的認(rèn)證命令, 最終完美解決了 python 程序的公證問(wèn)題。

【工作環(huán)境】

下面介紹的公證方法,其工作環(huán)境要求如下:

macOS CLI ( xcode-select —install )Xcodepyinstaller (> 4.5)蘋(píng)果開(kāi)發(fā)者賬號(hào)

公證的基本思路如下:

第一步:配置開(kāi)發(fā)者證書(shū),并對(duì)外部引用程序進(jìn)行簽名第二步:pyinstaller 打包程序, 并在打包過(guò)程中,對(duì)代碼、外部引用庫(kù)、外部引用文件進(jìn)行簽名第三步:轉(zhuǎn)換 app 程序?yàn)?dmg 文件第四步:xcrun altool 上傳 dmg 文件到蘋(píng)果服務(wù)器,進(jìn)行公證第五步:xcrun altool 查詢公證狀態(tài)第六步:xcrun stapler 證書(shū)蓋章第七步:正式發(fā)布 dmg 程序

下面就詳細(xì)介紹一下每一步是如何操作的:

【1. 證書(shū)及簽名】配置開(kāi)發(fā)者證書(shū)

第一步:打開(kāi) 鑰匙串訪問(wèn)

第二步:進(jìn)入 鑰匙串訪問(wèn),在菜單中選擇 ”證書(shū)助理“ -> "從證書(shū)頒發(fā)機(jī)構(gòu)請(qǐng)求證書(shū)…"

第三步: 彈窗中填寫(xiě)申請(qǐng)信息

填寫(xiě)完成后,保存到本地,文件名為 CertificateSigningRequest.certSigningRequest

第四步:登錄蘋(píng)果開(kāi)發(fā)者網(wǎng)站

(https://developer.apple.com/account/), 進(jìn)入 Certificates, IDs & Profiles 頁(yè)面,點(diǎn)擊添加按鈕,選擇 Developer ID Application

上傳剛才添加的 CertificateSigningRequest.certSigningRequest 文件

上傳成功后點(diǎn)擊下載,將證書(shū)保存到本地。

第五步:雙擊下載到本地的證書(shū),添加到鑰匙串,如下:

第六步:設(shè)置證書(shū)的訪問(wèn)權(quán)限

至此,蘋(píng)果的開(kāi)發(fā)者證書(shū)已安裝完成

外部引用程序簽名

codesign -s "Developer ID Application: XXXXX (4J45KSVBG8)" -v --deep --timestamp -o runtime 外部引用程序

其中 "Developer ID Application: XXXXX (4J45KSVBG8)" 就是鑰匙串里 證書(shū)名稱

驗(yàn)證簽名

codesign -dvvv 外部引用程序

輸出中,看到證書(shū)名稱及簽名成功

【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 來(lái)指定 app 的 bundle-id, 和 --codesign-identity 來(lái)指定開(kāi)發(fā)者賬號(hào),如果不指定的話,app 的外部引用的庫(kù)將無(wú)法進(jìn)行簽名, 公證時(shí)將報(bào)下列錯(cuò)誤。

【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. 公證】

公證

# 存儲(chǔ) App 專用密碼xcrun altool --store-password-in-keychain-item "AC_PASSWORD" -u "your-username" -p "your-password"# 上傳 dmg 到蘋(píng)果服務(wù)器公證xcrun altool --notarize-app -t osx -f MyApplication.dmg --primary-bundle-id com.xxx.xxxxx -u your-username --password "@keychain:AC_PASSWORD"

注意:上面的 password, 是 App 專用密碼, 因此,需要?jiǎng)?chuàng)建一個(gè)App 專用密碼, 創(chuàng)建的方法如下:

登錄蘋(píng)果 appleid 網(wǎng)站 (https://appleid.apple.com/account/)

創(chuàng)建成功后,一定記下生成的 App 專用密碼,方便后面使用。如果沒(méi)有記下的話,再次點(diǎn)擊”生成密碼…”, 會(huì)生成新的密碼。

【5 查詢公證結(jié)果】

盡管官方說(shuō)在一小時(shí)內(nèi),但一般很快,幾分鐘公證就會(huì)完成。完成后,下列命令查詢公證結(jié)果

# 檢查處理結(jié)果xcrun altool --notarization-info "7ad11612-c807-4899-be59-ea535317a3b4" -u your-username --password "@keychain:AC_PASSWORD"

如果公證成功,會(huì)發(fā)郵件給你。如果公證失敗的話,上述命令會(huì)返回日志 URL,通過(guò)訪問(wèn)日志 URL ,可以了解不通過(guò)的原因。

注: 7ad11612-c807-4899-be59-ea535317a3b4,這個(gè)是公證時(shí)返回的 ID, 這個(gè)ID 每次公證都是不同

【6. 文件蓋章】

在上面的公證步驟中,Apple 已經(jīng)創(chuàng)建了一張“票證”,也是一個(gè)數(shù)據(jù)庫(kù)記錄,它與應(yīng)用程序的簽名相匹配,表示應(yīng)用程序已經(jīng)公證完成。當(dāng) MacOS 運(yùn)行此應(yīng)用程序時(shí),MacOS 會(huì)聯(lián)系 Apple 服務(wù)器并索要“票證”。如果存在這樣的票證,則該應(yīng)用程序被視為“合法”的。這個(gè)過(guò)程在程序的生命周期中,只會(huì)發(fā)生一次,MacOS 會(huì)把“票證”緩存,為之后應(yīng)用程序使用。

如果想加速這個(gè)初始應(yīng)用程序的執(zhí)行,或者希望能夠在離線時(shí)運(yùn)行應(yīng)用程序,我們需要將這張“票證”裝訂到應(yīng)用程序中,下載票證并將其附加到應(yīng)用程序中方法如下:

# 給文件蓋章xcrun stapler staple MyApplication.dmg【7. APP 分發(fā)】

在最后分發(fā)前,我們最后確認(rèn)一下應(yīng)用程序是否被公證

檢驗(yàn)簽名公證

# 查詢公證spctl --verbose=4 --assess --type execute MyApplication.dmg輸入如下:MyApplication.dmg: acceptedsource=Notarized Developer IDorigin=Developer ID Application: YourName (XXX)

此命令直接使用 Gatekeeper 來(lái)評(píng)估應(yīng)用程序是否正確簽名和公證。如果顯示 accepted 的,證明公證已完成。

至此,就可以把 APP 分發(fā)給所有用戶了。(完)

以上就是關(guān)于pos機(jī)電子簽名設(shè)置,Pyinstaller 版的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)電子簽名設(shè)置的知識(shí),希望能夠幫助到大家!

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

你可能會(huì)喜歡:

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