# ALLinSSL - Complete SSL Certificate Management Tool

## Project Introduction

ALLinSSL is a comprehensive SSL certificate lifecycle management tool that integrates certificate application, management, deployment, and monitoring. This tool helps users easily manage SSL certificates for multiple websites, providing automated certificate application, renewal, and deployment processes, while monitoring certificate status in real-time to ensure website security.

## Main Features

- **Certificate Application**: Support automatic free certificate applications from Let's Encrypt and other CAs using the ACME protocol
- **Certificate Management**: Centralized management of all SSL certificates, including manually uploaded and automatically applied certificates
- **Certificate Deployment**: Support one-click deployment to multiple platforms such as Alibaba Cloud, Tencent Cloud, BaoTa Panel, 1Panel, etc.
- **Site Monitoring**: Real-time monitoring of SSL certificate status, early warning of certificate expiration
- **Automated Tasks**: Support scheduled tasks, automatic certificate renewal and deployment
- **Multi-platform Support**: Support multiple DNS providers (Alibaba Cloud, Tencent Cloud, etc.) for DNS verification

## Technology Stack

- **Backend**: Go language
- **Frontend**: HTML/CSS/JavaScript
- **Data Storage**: SQLite
- **Certificate Management**: ACME Protocol (Let's Encrypt)
- **Scheduled Tasks**: Built-in scheduler

## Installation Guide

### System Requirements

- Operating System: Linux
- Permission Requirements: Read and write permissions to create data directories

### Installation Steps
#### 1. Install via official installation script
#### 2. Compile and install:
  - When compiling and installing, pay attention to the name and path of the executable file. In `allinssl.sh`, you need to modify the corresponding name and path, otherwise the script may not work
  - Recommended installation path is `/www/allinssl/`, executable file name should be `allinssl`, and it's recommended to create a symbolic link of `allinssl.sh` to the `/usr/bin/` directory
  - Installation:
    1. Download the latest release package and extract it
    2. Compile the Go program (allinssl)
    3. Run the executable to start the service
       - Linux: Execute `./allinssl start`

### First-time Setup

1. After first startup, set up administrator account and password
2. Set the secure entry path and port number
3. After completing the initial setup, you can access the management interface via `http://your-ip:your-port/your-secure-entry`

## User Guide

### Automated Deployment

#### Certificate Application
1. Add DNS verification credentials (supporting Alibaba Cloud, Tencent Cloud, etc.)
2. Enter the domain names for which certificates are needed
3. Enter email address (for receiving CA notifications)

#### Certificate Upload
1. Select manual certificate upload
2. Paste certificate and private key content

#### Certificate Deployment

1. Select applied or uploaded certificates
2. Choose deployment targets (supports Alibaba Cloud CDN, Tencent Cloud CDN, BaoTa Panel, 1Panel, etc.)
3. Add deployment credentials (such as API keys for Alibaba Cloud, Tencent Cloud)

#### Notifications
1. Configure notification channels
2. Enter notification content and subject


### Site Monitoring

1. Add domain names to monitor
2. The system will automatically detect the certificate status
3. Set certificate expiration reminder threshold (default is 30 days)
4. When the certificate is approaching expiration, the system will send reminders
5. When multiple consecutive website anomalies are detected, the system will send alerts


## Command Line Operations

```bash
# Basic Operations
allinssl 1: Start service
allinssl 2: Stop service
allinssl 3: Restart service
allinssl 4: Modify secure entry
allinssl 5: Modify username
allinssl 6: Modify password
allinssl 7: Modify port

# Web Service Management
allinssl 8: Disable web service
allinssl 9: Enable web service
allinssl 10: Restart web service

# Background Task Management
allinssl 11: Disable background scheduler
allinssl 12: Enable background scheduler
allinssl 13: Restart background scheduler

# System Management
allinssl 14: Disable HTTPS
allinssl 15: Get panel address
allinssl 16: Update ALLinSSL to the latest version (file overwrite installation)
allinssl 17: Uninstall ALLinSSL
```

## License

This project is licensed under the terms specified in the [LICENSE](./LICENSE) file.