first commit
This commit is contained in:
		
							
								
								
									
										72
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,72 @@ | ||||
| # CertPusher | ||||
|  | ||||
| Automated SSL certificate distribution tool for deploying certificates to multiple remote servers via SSH/SCP. | ||||
|  | ||||
| ## Features | ||||
|  | ||||
| - **Multi-server deployment**: Deploy certificates to unlimited number of servers | ||||
| - **Smart certificate comparison**: Checks if remote certificate needs updating via HTTPS | ||||
| - **Flexible SSH authentication**: Global or per-host SSH key configuration | ||||
| - **Post-deployment commands**: Execute commands after certificate upload (reload services, etc.) | ||||
| - **Comprehensive logging**: Debug-level logging with timestamped log files | ||||
| - **Safe execution**: Compares certificates before uploading to avoid unnecessary restarts | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| git clone https://github.com/yourusername/certpusher.git | ||||
| cd certpusher | ||||
| pip install -r requirements.txt | ||||
|  | ||||
| ## Configuration | ||||
|  | ||||
| 1. Copy the example configuration: | ||||
|  | ||||
| cp config.ini.example config.ini | ||||
|  | ||||
| 2. Edit `config.ini` with your server details: | ||||
|  | ||||
| ### Global Section | ||||
| - `source_cert_path`: Path to the SSL certificate to distribute | ||||
| - `default_ssh_key`: Default SSH private key path | ||||
|  | ||||
| ### Host Sections | ||||
| Each host requires: | ||||
| - `hostname`: IP address or hostname | ||||
| - `port`: SSH port (default: 22) | ||||
| - `username`: SSH username | ||||
| - `remote_cert_path`: Destination path for the certificate | ||||
| - `post_upload_command`: Command to run after upload (optional) | ||||
| - `check_url`: HTTPS URL to check current certificate (optional) | ||||
| - `ssh_key_path`: Override default SSH key (optional) | ||||
|  | ||||
| ## Usage | ||||
|  | ||||
| python certpusher.py config.ini | ||||
|  | ||||
|  | ||||
| ## SSH Key Setup | ||||
|  | ||||
| Generate SSH key for authentication: | ||||
|  | ||||
| ssh-keygen -t ed25519 -f ~/.ssh/certpusher_key | ||||
|  | ||||
| ssh-copy-id -i ~/.ssh/certpusher_key.pub user@remote-host | ||||
|  | ||||
| 2025-10-26 22:00:00 - CertPusher - INFO - ============================================================ | ||||
| 2025-10-26 22:00:00 - CertPusher - INFO - CertPusher - SSL Certificate Distribution Tool | ||||
| 2025-10-26 22:00:00 - CertPusher - INFO - ============================================================ | ||||
| 2025-10-26 22:00:01 - CertPusher - INFO - Processing host: webserver1 | ||||
| 2025-10-26 22:00:02 - CertPusher - INFO - ✓ Successfully processed webserver1 | ||||
|  | ||||
|  | ||||
| ## Security Considerations | ||||
|  | ||||
| - Store SSH private keys securely with proper permissions (chmod 600) | ||||
| - Use dedicated SSH keys for certificate deployment | ||||
| - Limit SSH key access with `authorized_keys` restrictions | ||||
| - Consider using SSH certificates for enhanced security | ||||
| - Rotate SSH keys regularly | ||||
|  | ||||
| ## License | ||||
|  | ||||
| MIT License | ||||
		Reference in New Issue
	
	Block a user
	 Mateusz Gruszczyński
					Mateusz Gruszczyński