A modern, native macOS application for SSL certificate management built with Swift and SwiftUI.
- Certificate Chain Building: Automatically build complete certificate chains from any certificate
- CSR Generation: Generate Certificate Signing Requests with custom details and SANs
- Private Key Management: Extract private keys from PFX/P12 files
- PFX Creation: Create PFX files from certificates and private keys
- Automatic Updates: Built-in automatic updates powered by Sparkle framework
- Native macOS Integration: Uses macOS Security framework and system keychain
- Modern UI: Built with SwiftUI for a native macOS experience
The app includes seamless automatic updates using the Sparkle framework:
- Updates check automatically in the background
- One-click installation replaces existing app
- Configurable in Settings > Updates
- EdDSA-signed for security
For Developers: See AUTO_UPDATE_QUICKSTART.md for setup instructions.
- macOS: 13.0 (Ventura) or later
- Xcode: 14.0 or later
- Swift: 5.7 or later
-
Open the project:
cd macOS/AIOSSLTool open AIOSSLTool.xcodeprojIf the project file doesn't exist, create it:
cd macOS/AIOSSLTool swift package init --type executable --name AIOSSLTool -
In Xcode:
- Select your development team in Signing & Capabilities
- Choose your target device (Any Mac)
- Press ⌘R to build and run
cd macOS/AIOSSLTool
swift build -c releaseThe compiled binary will be in .build/release/AIOSSLTool
To create a proper macOS app bundle:
- Open in Xcode
- Product → Archive
- Distribute App → Copy App
- The
.appbundle will be exported to your chosen location
macOS/AIOSSLTool/
├── AIOSSLToolApp.swift # Main app entry point
├── ContentView.swift # Main interface
├── ViewModels/
│ └── SSLToolViewModel.swift # Business logic and state management
├── Views/
│ ├── CSRGenerationView.swift # CSR generation dialog
│ ├── ExtractPFXView.swift # PFX extraction dialog
│ └── SettingsView.swift # Settings/About view
├── Utils/
│ └── CertificateUtils.swift # Certificate operations using Security framework
├── Info.plist # App configuration
└── AIOSSLTool.entitlements # Security entitlements
If you need to create the Xcode project from scratch:
cd /Users/cameron/Documents/GitHub/AIO-SSL-Tool
mkdir -p macOS/AIOSSLTool
cd macOS/AIOSSLTool
# Create the Swift package
cat > Package.swift << 'EOF'
// swift-tools-version: 5.7
import PackageDescription
let package = Package(
name: "AIOSSLTool",
platforms: [.macOS(.v13)],
products: [
.executable(name: "AIOSSLTool", targets: ["AIOSSLTool"])
],
targets: [
.executableTarget(
name: "AIOSSLTool",
path: ".",
exclude: ["Info.plist"],
swiftSettings: [
.unsafeFlags(["-parse-as-library"])
]
)
]
)
EOFAlternatively, create an Xcode project:
# Generate Xcode project
swift package generate-xcodeproj
# Or create a new Xcode project
# File → New → Project → macOS → App
# - Product Name: AIOSSLTool
# - Interface: SwiftUI
# - Language: Swift
# - Include Tests: No-
Create New Project:
- Open Xcode
- File → New → Project
- Choose "App" under macOS
- Product Name:
AIOSSLTool - Interface: SwiftUI
- Language: Swift
-
Add Source Files:
- Drag all
.swiftfiles from the repository into the project - Ensure "Copy items if needed" is checked
- Organize into groups matching the directory structure
- Drag all
-
Configure Signing:
- Select project in navigator
- Select AIOSSLTool target
- Signing & Capabilities tab
- Choose your Team and Bundle Identifier
-
Add Entitlements (if needed):
- Signing & Capabilities → + Capability
- Add "Keychain Sharing" if accessing system keychain
- Add "File Access" for reading/writing certificates
-
Build Settings:
- Set minimum deployment target: macOS 13.0
- Enable "Hardened Runtime"
- Launch the app
- Select Save Location: Choose where to save generated files
- Browse Certificate: Load your SSL certificate
- Create Full Chain: Build the complete certificate chain
- Add Private Key: Load or generate a private key
- Create PFX: Generate a PFX file with password protection
- File → Generate CSR and Private Key: Create new CSR with custom details
- File → Extract Private Key from PFX/P12: Extract keys from existing PFX files
- The app uses macOS Security framework for certificate operations
- Private keys are handled securely in memory
- Password-protected keys and PFX files are supported
- The app requires appropriate file system permissions
This native macOS version offers several advantages:
- Better Performance: Native code runs faster than interpreted Python
- Native UI: SwiftUI provides native macOS controls and appearance
- System Integration: Direct access to macOS keychain and certificate stores
- No Dependencies: No need to install Python or external libraries
- App Store Ready: Can be distributed through Mac App Store
- Sandboxing: Supports macOS security features like sandboxing
- Security Framework: Uses
SecCertificate,SecKey, andSecTrustAPIs - SwiftUI: Modern declarative UI framework
- Combine: Reactive state management
- async/await: Modern Swift concurrency for certificate operations
If you get this error when opening the app:
xattr -cr /path/to/AIOSSLTool.appEnsure you have a valid Developer ID or run in Debug mode with your development certificate.
If the app can't access files or keychain:
- Check Signing & Capabilities in Xcode
- Add required entitlements (File Access, Keychain)
To contribute to the macOS version:
- Maintain compatibility with macOS 13+
- Follow Swift style guidelines
- Use SwiftUI for all UI components
- Leverage native Security framework APIs
- Test on multiple macOS versions
Same as the original Python version - check LICENSE file in repository root.
- v6.0 (2026): Initial macOS native version
- Complete rewrite in Swift and SwiftUI
- Native Security framework integration
- Modern macOS design language
Ported from the original Python version by CMDLAB. macOS version utilizes Apple's Security framework for industrial-strength cryptography.