• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

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

FritzS

Spätblühender Taffetapfe
Registriert
06.04.09
Beiträge
2.805
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

Hadelner Sommerprinz
Registriert
28.05.04
Beiträge
8.577
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

Spätblühender Taffetapfe
Registriert
06.04.09
Beiträge
2.805
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

Spätblühender Taffetapfe
Registriert
06.04.09
Beiträge
2.805
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.png EtreCheck Security.png EtreCheck Unsingned Files.png