A JavaFX GUI application for pushing Windows certificates to Coder Linux workspaces.
- Certificate Selection - Browse Windows Certificate Store for signing and encryption certificates
- Workspace Selection - Lists all available Coder workspaces
- Secure Export - Exports certificates as PKCS12 with PIN protection
- Remote Installation - Pushes certificates to Linux workspace at
~/.pki/ - Integrity Verification - SHA-256 checksum verification after transfer
- Login Validation - Checks Coder authentication status on startup
- Debug Mode - Optional verbose output for troubleshooting
Download and install:
java --version- Maven Download
- Add
binfolder to PATH
mvn --versionThe Coder CLI must be installed and authenticated:
- Download from your Coder deployment or Coder releases
- Add to PATH
- Authenticate:
coder login https://your-coder-deployment.com
coder list # Verify it works# Clone
git clone https://github.com/your-org/coder-file-push.git
cd coder-file-push
# Build
mvn clean package
# Run
mvn javafx:run- Launch the application
- Login check runs automatically - if not logged in, you'll be prompted to run
coder login <url> - Select a workspace from the dropdown
- Select signing and/or encryption certificates from the Windows Certificate Store
- Enter your certificate PIN/password when prompted
- Click Push Certificates
- Certificates are exported as PKCS12 and pushed to
~/.pki/on the workspace
After pushing certificates, verify on the Linux workspace:
# Check files exist
coder ssh <workspace> -- ls -la ~/.pki/
# View certificate details
coder ssh <workspace> -- openssl pkcs12 -in ~/.pki/signing-cert.p12 -info -nokeyscoder-windows-certmgr/
├── pom.xml # Maven build config
├── README.md
├── scripts/
│ ├── create-test-certs.ps1 # Create test certificates
│ └── remove-test-certs.ps1 # Remove test certificates
└── src/
├── main/
│ ├── java/com/coder/filepush/
│ │ ├── Main.java # JavaFX entry point
│ │ ├── MainController.java # UI controller
│ │ ├── CertificateInfo.java # Certificate DTO
│ │ ├── CertificateManager.java # Windows cert store access
│ │ ├── CertificatePusher.java # Remote cert installation
│ │ ├── CoderCliExecutor.java # Coder CLI wrapper
│ │ ├── CommandRunner.java # Interface for testability
│ │ ├── DefaultCommandRunner.java
│ │ └── ProcessResult.java
│ └── resources/
│ └── main.fxml # UI layout
└── test/
└── java/com/coder/filepush/
├── CertificateManagerTest.java
├── CertificatePusherTest.java
└── CoderCliExecutorTest.java
# Run unit tests
mvn test
# Create test certificates (Windows)
powershell -ExecutionPolicy Bypass -File scripts/create-test-certs.ps1
# Remove test certificates
powershell -ExecutionPolicy Bypass -File scripts/remove-test-certs.ps1Unit tests cover:
- Certificate manager operations
- Certificate pusher with mocked SSH
- Coder CLI executor
- Checksum verification
graph LR
A[GUI] --> B[MainController]
B --> C[CertificateManager]
B --> D[CertificatePusher]
C --> E[Windows Cert Store]
D --> F[CoderCliExecutor]
F --> G[CommandRunner]
G --> H[coder CLI]
H --> I[Linux Workspace]
MIT