web-dev-qa-db-ja.com

既存の公証Java MacOS Catalinaのアプリケーション

私はJavaアプリケーションを配布しています。これは開発者が署名したものですが、公証されていません。ドキュメントは私が使用しないXcodeを使用したアプリの作成に偏っているので、これからどこから始めればよいかわからないため、しかし、私は自分のアプリを公証し、次に進む最も簡単な方法が欲しいだけです。

ドキュメントを読んで、私はすでにいくつかの懸念があります:

  • 私は現在Java 8を使用していますが、Java 8アプリを公証することができますか、またはJavaに移動する必要がありますか? = 11.私がサポートする他のいくつかのプラットフォームで問題が発生するため、私はむしろJava 11に移動しません。

  • 私の開発Macマシンは古いMacBook Proであり、OSX El Capitan 10.11.6を超えてアップデートできないので、このマシンで公証することはできますか?私は最近のマシンを持っていますが、それは開発用にセットアップされていません。最初にこれをセットアップするのは問題があったので、開発者ID証明書をそこに転送することについていくつかの懸念があります。

  • AppBundler fork https://github.com/TheInfiniteKind/appbundler/ を使用してアプリをパッケージ化します

  • これは、署名などを行うantスクリプトビルドファイルによって呼び出され、最終的にdmgCanvasを使用してdmgを作成します

  • 以下のantスクリプトを投稿します。誰かが基本的な手順から始められることを願っています

    #!/bin/bash
    #set -x
    
    cd /Users/paul/code/jthink/songkong/src/main/scripts
    hiutil -C  -fapplehelpbook/SongKongHelp/SongKongHelp.helpindex applehelpbook/SongKongHelp/
    cd /Users/paul/code/jthink/songkong
    rm -fr /Applications/SongKong.app
    mvn clean
    mvn -DskipTests=true install
    rm -fr target/songkong-6.6
    unzip target/songkong-6.6-distribution.Zip -d target
    ant
    while read line; do
      echo "$line"
      if [[ "$line" = "<string>1.0</string>" ]]; then
        cat mergefile.txt    # or echo or printf your extra lines
      fi
    done < /Applications/SongKong.app/Contents/Info.plist > Info.new
    while read line; do
      echo "$line"
      if [[ "$line" = "<false/></dict>" ]]; then
        cat mergefile2.txt
      fi
    done < Info.new > Info.new2
    rm /Applications/SongKong.app/Contents/Info.plist
    rm Info.new
    mv Info.new2 /Applications/SongKong.app/Contents/Info.plist
    Sudo cp -r target/songkong-6.6/applehelpbook/SongKongHelp /Applications/SongKong.app/Contents/Resources
    rm /Applications/SongKong.app/Contents/PlugIns/jdk1.8.0_192.jdk/Contents/MacOS/libjli.dylib
    cp /Applications/SongKong.app/Contents/PlugIns/jdk1.8.0_192.jdk/Contents/Home/jre/lib/jli/libjli.dylib /Applications/SongKong.app/Contents/PlugIns/jdk1.8.0_192.jdk/Contents/MacOS
    export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate"
    
    /usr/bin/codesign --sign "Developer ID Application: P Taylor" --force --deep --verbose /Applications/SongKong.app
    /usr/bin/codesign --verify --deep  --verbose /Applications/SongKong.app
    
    cd /Users/paul/code/jthink/SongKong
    /usr/local/bin/dmgcanvas /Users/paul/code/jthink/SongKong/dmgCanvas_songkong.dmgCanvas /Users/paul/songkong-osx.dmg -v SongKong
    
4
Paul Taylor

** 2020年2月3日の更新Appleは公証要件を厳しくし、プロセスは現在私のために機能していません。私は AdoptOpenJdk ですが、まだ機能していません。

これらは私の現在のステップです

  • 新しいマシンのセットアップ(srcコードecteraのセットアップ)
  • AdoptJdkをインストールJava 11ビルド用
  • AdoptJdk Java 11 JREをアプリ内にバンドルするためにインストールします
  • XCodeをインストールしてから、Preferences:Downloadsに移動し、Install Command Line Toolsを選択します。
  • KeyChain Export Developer Id Certificateを.p12形式で使用して新しいマシンにインポートする
  • DmgCanvas 3を購入してインストール($ 30USD)
  • 更新Apple開発者アカウント
  • AppleIdアカウントの2段階認証を設定します(これは一部はWebサイトで行われ、一部はiCloudアプリで行われます)
  • アプリ固有のパスワードを作成します(後で必要になるのでメモしておきます)
  • ビルドスクリプトの終わりをそれに応じて(appSpecificPasswordの代わりに)作成したスクリプトに変更しました

    export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate"
    /usr/bin/codesign --sign "Developer ID Application: P Taylor" --force --deep --verbose /Applications/SongKong.app
    /usr/bin/codesign --verify --deep  --verbose /Applications/SongKong.app
    cd /Users/paul/code/jthink/SongKong
    /usr/local/bin/dmgcanvas /Users/paul/code/jthink/SongKong/dmgCanvas_songkong.dmgCanvas /Users/paul/songkong-osx.dmg -v SongKong -identity "Developer ID Application: P Taylor" -notarizationAppleID [email protected] -notarizationPassword appSpecificPassword  -notarizationPrimaryBundleID songkong
    

アプリに署名したが、検証に失敗した

pauls-Mac-mini:songkong paul$ export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate"
pauls-Mac-mini:songkong paul$ /usr/bin/codesign --sign "Developer ID Application: P Taylor" --force --deep --verbose /Applications/SongKong.app
/Applications/SongKong.app: signed app bundle with Mach-O thin (x86_64) [com.jthink.songkong]
pauls-Mac-mini:songkong paul$ /usr/bin/codesign --verify --deep  --verbose /Applications/SongKong.app
/Applications/SongKong.app: a sealed resource is missing or invalid
file added: /Applications/SongKong.app/Contents/PlugIns/macosjre/Contents/_CodeSignature/CodeResources
pauls-Mac-mini:songkong paul$ ls -l /Applications/SongKong.app/Contents/PlugIns/macosjre/Contents/_CodeSignature/CodeResources
-rw-r--r--  1 paul  admin  14689 13 Apr 15:02 /Applications/SongKong.app/Contents/PlugIns/macosjre/Contents/_CodeSignature/CodeResources

したがって、封印が失敗するため、公証は明らかに失敗します。

その後、songkong.entitlementsファイルを作成し、他の回答で指定されているオプションの一部を使用するため、

/usr/bin/codesign --timestamp --options runtime --entitlements /Users/paul/code/jthink/songkong/songkong.entitlements --sign "Developer ID Application: P Taylor" --force --deep --verbose /Applications/SongKong.app

しかし、検証行は、同じように例外的に失敗します。

0
Paul Taylor