====== 6.1 File-Share ====== Die einfachste Methode zur Verteilung: Ein Netzlaufwerk. ---- ===== Warum File-Share? ===== **Vorteile:** * ✓ Kein zusätzlicher Server nötig * ✓ Schnell eingerichtet * ✓ Berechtigungen über Windows-ACLs * ✓ Jeder kennt sich mit Ordnern aus **Nachteile:** * ✗ Keine automatische Versionierung * ✗ Kein Dependency-Management * ✗ Manuelles Kopieren nötig ---- ===== Verzeichnisstruktur ===== Eine empfohlene Struktur für den Share: \\server\builds\openssl\ ├── 3.6.0\ │ ├── win-x64\ │ │ ├── bin\ │ │ │ ├── libcrypto-3-x64.dll │ │ │ ├── libssl-3-x64.dll │ │ │ └── openssl.exe │ │ ├── ssl\ │ │ │ └── openssl.cnf │ │ └── README.txt │ ├── win-x64-fips\ │ │ └── ... (mit FIPS Provider) │ ├── linux-x64\ │ │ └── ... (Shared Objects) │ └── wasm\ │ └── ... (JS + WASM) ├── 3.5.0\ │ └── ... (ältere Version) └── latest -> 3.6.0\ ---- ===== Share einrichten ===== ==== 1. Ordner erstellen ==== # Auf dem Server mkdir D:\Builds\OpenSSL mkdir D:\Builds\OpenSSL\3.6.0 mkdir D:\Builds\OpenSSL\3.6.0\win-x64 ==== 2. Dateien kopieren ==== # Build-Ergebnis kopieren Copy-Item -Recurse "D:\Projects\openssl-3.6.0\bin\*" "D:\Builds\OpenSSL\3.6.0\win-x64\" ==== 3. Share erstellen ==== # Als Administrator New-SmbShare -Name "OpenSSL" -Path "D:\Builds\OpenSSL" -ReadAccess "Domain Users" Oder über GUI: - Rechtsklick auf Ordner - Eigenschaften → Freigabe - Erweiterte Freigabe → Berechtigungen ---- ===== Verwendung ===== ==== Von Entwickler-PC ==== # Auf Share zugreifen dir \\server\openssl\3.6.0\win-x64\bin\ # In Projekt kopieren copy "\\server\openssl\3.6.0\win-x64\bin\*.dll" C:\MeinProjekt\ ==== Als Laufwerk einbinden ==== # Dauerhaft als O: (für OpenSSL) net use O: \\server\openssl /persistent:yes # Dann einfach: copy O:\3.6.0\win-x64\bin\*.dll C:\MeinProjekt\ ---- ===== Berechtigungen ===== | Gruppe | Berechtigung | |--------|--------------| | Build-Server | Vollzugriff (schreiben neue Builds) | | Entwickler | Lesen (DLLs kopieren) | | CI/CD Agents | Lesen | ==== PowerShell ==== # Berechtigungen setzen (NTFS) $acl = Get-Acl "D:\Builds\OpenSSL" # Entwickler: Nur Lesen $rule = New-Object System.Security.AccessControl.FileSystemAccessRule( "DOMAIN\Developers", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) # Build-Account: Vollzugriff $rule = New-Object System.Security.AccessControl.FileSystemAccessRule( "DOMAIN\BuildService", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) Set-Acl "D:\Builds\OpenSSL" $acl ---- ===== "latest" Symlink ===== Für einfachen Zugriff auf die aktuelle Version: # Junction erstellen (wie Symlink) cmd /c mklink /J "D:\Builds\OpenSSL\latest" "D:\Builds\OpenSSL\3.6.0" # Dann funktioniert: # \\server\openssl\latest\win-x64\... Bei neuer Version den Symlink aktualisieren! ---- ===== Automatisierung ===== Ein PowerShell-Skript für neue Releases: # publish-openssl.ps1 param( [string]$Version = "3.6.0", [string]$SourceDir = "D:\Projects\openssl-3.6.0\bin", [string]$SharePath = "\\server\openssl" ) $TargetDir = "$SharePath\$Version\win-x64" # Ordner erstellen falls nicht vorhanden if (!(Test-Path $TargetDir)) { New-Item -ItemType Directory -Path $TargetDir -Force } # Dateien kopieren Copy-Item -Recurse -Force "$SourceDir\*" $TargetDir # README hinzufügen @" OpenSSL $Version ================ Build-Datum: $(Get-Date -Format 'yyyy-MM-dd HH:mm') Plattform: Windows x64 (VC-WIN64A) Enthält: - libcrypto-3-x64.dll - libssl-3-x64.dll - openssl.exe Post-Quantum: ML-DSA, ML-KEM "@ | Out-File "$TargetDir\README.txt" Write-Host "Veröffentlicht: $TargetDir" ---- ===== Weiter zu ===== * [[.:nuget-paket|NuGet-Paket erstellen]] * [[.:versionierung|Versionierung]] * [[.:automatisierung:start|7. CI/CD]] ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//