• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick
  • Auch in diesem Jahr möchten wir auf unserer Webseite mit einem passenden Banner etwas weihnachtliche Stimmung verbreiten. Jeder Apfeltalker kann, darf und sollte uns einen Banner-Entwurf zusenden, wie und wo das geht, könnt Ihr hier nachlesen --> Klick

[11 Big Sur] Selbst Compilierte Software signieren - wie?

FritzS

Purpurroter Cousinot
Registriert
06.04.09
Beiträge
2.850
Wie lässt sich selbst compilierte Software ohne dass man Apple Entwickler ist signieren? Wie kommt man zu einem für den eigenen Rechner gültigem Zertifikat?

Konkret z.B. Serverdienste die auf Ports unter 1024 „hören“?

Es geht auch um Software aus Quellen wie MacPorts, Homebrew, Fink

Ich habe dies zum Thema gefunden werde daraus auch nicht so ganz schlau:
Der Rechner ist ein M1 Mac mit Big Sur 11.5.2

PS: In Ergänzung zu https://www.apfeltalk.de/community/threads/macports-bind-named-startet-nicht-rechteproblem.562600/
 

Marcel Bresink

Filippas Apfel
Registriert
28.05.04
Beiträge
8.876
Wie lässt sich selbst compilierte Software ohne dass man Apple Entwickler ist signieren?

Die einzige Möglichkeit ist in dem Fall, mit einer "leeren Identität" zu unterschreiben, was "Ad-Hoc-Signatur" genannt wird. Dazu unterschreibt man bei codesign einfach mit der Identität "-" (Bindestrich).

Konkret z.B. Serverdienste die auf Ports unter 1024 „hören“?

Liegt das wirklich an der Signatur oder gibt es Probleme mit Sandbox-Befugnissen? Für den Zugriff auf privilegierte Ports reicht es normalerweise aus, dass ein Programm mit effektiven root-Rechten läuft.
 

FritzS

Purpurroter Cousinot
Registriert
06.04.09
Beiträge
2.850
Die einzige Möglichkeit ist in dem Fall, mit einer "leeren Identität" zu unterschreiben, was "Ad-Hoc-Signatur" genannt wird. Dazu unterschreibt man bei codesign einfach mit der Identität "-" (Bindestrich).

Da ich das noch nie machen musste, wie geht das denn genau?

Liegt das wirklich an der Signatur oder gibt es Probleme mit Sandbox-Befugnissen? Für den Zugriff auf privilegierte Ports reicht es normalerweise aus, dass ein Programm mit effektiven root-Rechten läuft.

Bei MacPorts:
Der Daemon named läuft unter dem User named (aus Sicherheitsgründen) wird meines Wissens aber kurz mit roo-Rechten gestartet und danach der Wechsel vollzogen (habe ich mal irgendwo gelesen, dass man in Unix damit die Problematik mit zu viel Rechten umgehen kann, denn der Daemon kompromittiert würde.
Dazu gibt es einen bestimmtem 'helper' - dessen Namen weiß momentan nicht.

Homebrew geht da, soweit ich mich noch richtig erinnere, den Weg mit der Sandbox, was nicht einfach, wegen der Logfiles, zu konfigurieren ist.

Bei der Firewall (die habe ich immer bei meinen Macs aktiviert) ist named als berechtigt Daten zu empfangen eingetragen, detto auch bei LittleSnitch in beide Richtungen.

PS: Ich hätte die Freischaltung von LittleSnitch bzw. dem S.M.A.R.T Addon von DriveDX besser dokumentieren sollen, da musste ich den Mac neu starten und beim Einschalten den Knopf länger drücken (nicht so wie in der Anleitung Turn on your Mac, then press and hold Command (⌘)-R immediately).
Ich habe da 'Medium Security' ausgewählt, NoSecurity (was möglicherweise das Problem lösen würde) will ich nicht aktivieren:
Nun ein Stück weiter:

Code:
Mac-mini:~% spctl --assess --type execute /opt/local/sbin/named
objc[1937]: Class SPExecutionPolicy is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[1937]: Class AppWrapper is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[1937]: Class AppWrapperPolicyResult is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[1937]: Class AppWrapperPolicy is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[1937]: Class SPLog is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[1937]: Class MIS is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[1937]: Class SPExecutionHistoryItem is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[1937]: Class SPExecutionPolicyItem is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[1937]: Class SPDeveloperPolicy is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[1937]: Class GKScanResult is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
/opt/local/sbin/named: rejected
.......
Mac-mini:~% spctl --assess --verbose=4  /opt/local/sbin/named
objc[2918]: Class SPExecutionPolicy is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[2918]: Class AppWrapper is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[2918]: Class AppWrapperPolicyResult is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[2918]: Class AppWrapperPolicy is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[2918]: Class SPLog is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[2918]: Class MIS is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[2918]: Class SPExecutionHistoryItem is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[2918]: Class SPExecutionPolicyItem is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[2918]: Class SPDeveloperPolicy is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
objc[2918]: Class GKScanResult is implemented in both /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy and /usr/sbin/spctl. One of the two will be used. Which one is undefined.
/opt/local/sbin/named: rejected

Aus: https://developer.apple.com/library...l/CodeSigningGuide/Procedures/Procedures.html
und auch
https://developer.apple.com/library...#//apple_ref/doc/uid/DTS40007919-CH1-TNTAG208

Aber welchen Befehl müsste ich nun verwenden um das korrekt zu machen, ich will da nicht herum experimentieren?

Unter ElCapitan verwendete ist dies - ein Beispiel - aber wirkt das auch bei daemons und im speziellen noch bei Big Sur auf M1?

Code:
sudo xattr -d com.apple.quarantine /Applications/FreeFileSync/FreeFileSync.app
.....
sudo spctl --add --label "My Stuff" /Applications/FreeFileSync/FreeFileSync.app
 
Zuletzt bearbeitet:

FritzS

Purpurroter Cousinot
Registriert
06.04.09
Beiträge
2.850
Aus EtreCheck
Launchd: /opt/local/etc/LaunchDaemons/org.macports.bind9/org.macports.bind9.plist
Executable: /opt/local/bin/daemondo --label --start-cmd /opt/local/sbin/named -u named -f ; --restart-netchange --pid
Details: Exact match found in the legitimate list - probably OK

EtreCheck - Unsigned Files bind9 named.pngEtreCheck Security.pngEtreCheck Unsingned Files.png