"iTunes.app" to accept incoming network connections?

Every time I open iTunes I get the the following warning:

Do you want the application "iTunes.app" to accept incoming network connections?

Clicking Deny may limit the application's behavior. This setting can be changed in the Firewall pane of Security preferences.

warning box

I always click "Allow" but it still pops up.

I set the OS X firewall to allow incoming connections for iTunes.

Any suggestions on how to fix this?


Solution 1:

It's probably easiest to reinstall iTunes.

If the firewall does not remember your choice, then the digital signature (Code Signing) of iTunes is broken. By default, the OS X firewall accepts any software that was signed by Apple without even asking you. So: it should not have asked you. And once asked, it should be able to remember, based on the digital signature. A broken signature (for example caused by changing the contents of the iTunes.app package) will prevent all this.

(Did you by any chance manually change the iTunes icon the application somehow? Or did you install some plugins?)

You can validate the signature of your iTunes by copying the first line and paste it in Terminal:

codesign -vvv /Applications/iTunes.app/

/Applications/iTunes.app/: valid on disk
/Applications/iTunes.app/: satisfies its Designated Requirement

(More details at If Mac code signing is tampered with, what might fail?)

Solution 2:

If you see

$ codesign -vvv /Applications/iTunes.app/
/Applications/iTunes.app/: a sealed resource is missing or invalid
/Applications/iTunes.app/Contents/Resources/English.lproj/iTunesDJSettings.nib/objects.xib: resource added

just delete the files that say "resource added" and verify against codesign again. Once it validates iTunes.app should not popup any more message.

If you wish to resign the thing yourself you can create a signing identity from http://developer.apple.com/mac/library/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html

However, I don't recommend it for iTunes, though I used it for other apps.