2014年8月11日月曜日

codesign を version 1 から version 2 にコマンドで更新する方法

2014年8月4日、アップルから突然メールがきた。codesignの仕様がMac OS 10.9.5以降はversion 2のものでないと認証されなくなり、これまでの codesign version 1の製品では、アプリケーション起動時に「認証していないアプリ」として警告がでるようなる。

codesign version 2にするには、Mac OS 10.9 以降の xcode で build しなおせば,自動的に version 1から version 2 に切り替わる。

しかし、古いアプリケーション(たとえばPPCにも対応しているアプリ)などは Mac OS X 10.7 の xcode 3でないと build できない。Mac OS 10.9 の環境ではbuild できないのだ。

MacApp Store を経由しないで直接配布している Developer ID アプリの場合は、 Mac OS X 10.7 の xcode 3 で build した アプリケーション(たとえば foo.app )を以下のように  Mac OS X 10.9 上のコンソールからコマンドで version 2に変更できる。


$ codesign --verbose --force --sign "Developer ID Application: your company" --deep foo.app 

終了したら、以下のコマンドで version 2 になっているかどうか、確認できる。

$ codesign -dv foo.app
[......]
Sealed Resources version=2 rules=xx files=xx
[......]

また以下のコマンドで GateKeeper が受け付けてくれるかどうか、チェックできる。

$ spctl -a -t exec -vv foo.app
foo.app: accepted
source=Developer ID

では、MacApp Store で配布する製品の場合は、どうしたらいいのだろか。MacApp Store で配布する製品でも、いろいろな理由で Mac OS X 10.9 の xcode で build できない場合がある。

うーむ。やっぱりその場合は、で Mac OS X 10.9 の xcode で buildできるようにソースコードを修正するしかないのか?