Björn Benouarets 178d4b807d docs: add comprehensive README documentation
- Add detailed project overview and features
    - Include installation and setup instructions
    - Document all supported certificate types
    - Add usage examples and API documentation
    - Include security features and deployment guidelines
    - Add project structure and testing information
    - Provide contribution guidelines and support information
2025-09-30 11:47:08 +02:00

CertMan - Enterprise Certificate Management System

CertMan is a comprehensive, enterprise-grade certificate management system built in Go. It provides a robust solution for managing digital certificates, Certificate Authorities (CAs), and certificate lifecycle operations in enterprise environments.

🚀 Features

Core Functionality

  • Certificate Authority Management: Create and manage root and intermediate CAs
  • Certificate Lifecycle Management: Generate, validate, revoke, and renew certificates
  • Multiple Certificate Types: Support for web, client, email, code signing, IoT, VPN, and more
  • Database Integration: PostgreSQL and SQLite support with GORM ORM
  • Secure Storage: Encrypted storage for certificates and private keys
  • Comprehensive Validation: Built-in validation for certificate requests and attributes

Enterprise Features

  • Multi-Organization Support: Manage certificates across multiple organizations
  • User Management: Role-based access control and user authentication
  • Audit Trail: Complete logging and tracking of certificate operations
  • CRL Support: Certificate Revocation List generation and management
  • SAN Support: Subject Alternative Name extensions for modern certificate requirements
  • High Security: 4096-bit RSA keys and enterprise-grade encryption

📋 Prerequisites

  • Go 1.25.1 or later
  • PostgreSQL 12+ or SQLite 3
  • Git

🛠️ Installation

1. Clone the Repository

git clone https://git.secnex.io/secnex/certman.git
cd certman

2. Install Dependencies

go mod download

3. Configure Environment Variables

Create a .env file or set the following environment variables:

# Database Configuration
DB_DRIVER=postgres          # or "sqlite"
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=certman
DB_SSLMODE=disable

# For SQLite (simpler setup)
DB_DRIVER=sqlite
DB_NAME=certman

4. Run Database Migrations

The application will automatically run database migrations on startup.

5. Build and Run

# Build the application
go build -o certman main.go

# Run the application
./certman

🏗️ Project Structure

certman/
├── certificate/          # Certificate management services
│   ├── authority.go      # Certificate Authority service
│   ├── certificate.go    # Certificate service
│   └── utils/            # Certificate utilities
├── config/               # Configuration management
├── database/             # Database connection and migrations
├── models/               # Data models and types
├── repositories/         # Data access layer
├── storage/              # File storage management
├── utils/                # Utility functions
├── data/                 # Certificate and key storage (excluded from git)
├── main.go               # Application entry point
├── go.mod                # Go module definition
└── README.md             # This file

🔧 Usage Examples

Creating a Root Certificate Authority

caService := certificate.NewCertificateAuthorityService(db, "data/certs/ca", "data/private/ca")

req := &certificate.CreateRootCARequest{
    Name:           "Enterprise Root CA",
    CommonName:     "Enterprise Root CA",
    Organization:   "Your Company",
    Country:        "US",
    OrganizationID: orgID,
    ValidityYears:  50,
}

rootCA, err := caService.CreateRootCA(req)

Creating an Intermediate CA

req := &certificate.CreateIntermediateCARequest{
    Name:           "Enterprise Intermediate CA",
    CommonName:     "Enterprise Intermediate CA",
    Organization:   "Your Company",
    Country:        "US",
    OrganizationID: orgID,
    ParentCAID:     rootCA.ID,
    ValidityYears:  30,
}

intermediateCA, err := caService.CreateIntermediateCA(req)

Generating a Web Certificate

certService := certificate.NewCertificateService(db, "data/certs", "data/private", caService)

req := &certificate.CreateCertificateRequest{
    Name:                   "Web Server Certificate",
    CommonName:             "example.com",
    Organization:           "Your Company",
    Country:                "US",
    Type:                   models.CertificateTypeWeb,
    CertificateAuthorityID: intermediateCA.ID,
    DNSNames:               []string{"example.com", "www.example.com"},
    IPAddresses:            []net.IP{net.ParseIP("192.168.1.100")},
    KeyType:                "rsa",
    KeySize:                4096,
    ValidityYears:          2,
}

certificate, err := certService.CreateCertificate(req)

📊 Supported Certificate Types

CertMan supports a wide range of certificate types for various enterprise use cases:

Web & Server Certificates

  • web - HTTPS/TLS web server certificates
  • server - General server certificates

Client Certificates

  • client - Client authentication certificates
  • user - User identity certificates

Email Certificates

  • email - S/MIME email certificates

Code Signing

  • code - Code signing certificates

IoT & Devices

  • iot - Internet of Things certificates
  • device - Device certificates
  • sensor - Sensor device certificates

VPN Certificates

  • vpn - VPN certificates
  • openvpn - OpenVPN specific certificates
  • wireguard - WireGuard specific certificates

Database Certificates

  • database - Database connection certificates
  • mysql - MySQL specific certificates
  • postgresql - PostgreSQL specific certificates
  • mongodb - MongoDB specific certificates

API & Services

  • api - API service certificates
  • service - Microservice certificates
  • microservice - Microservice architecture certificates

Container & Orchestration

  • docker - Docker container certificates
  • kubernetes - Kubernetes cluster certificates
  • container - Container orchestration certificates

Cloud & Infrastructure

  • cloud - Cloud service certificates
  • aws - Amazon Web Services certificates
  • azure - Microsoft Azure certificates
  • gcp - Google Cloud Platform certificates

Network & Security

  • network - Network infrastructure certificates
  • firewall - Firewall certificates
  • proxy - Proxy server certificates
  • loadbalancer - Load balancer certificates

Mobile & Applications

  • mobile - Mobile application certificates
  • android - Android specific certificates
  • ios - iOS specific certificates
  • app - Application certificates

Document & File Signing

  • document - Document signing certificates
  • pdf - PDF signing certificates
  • office - Microsoft Office signing certificates

Specialized Certificates

  • timestamp - Time stamping certificates
  • ocsp - OCSP responder certificates
  • custom - Custom certificate types
  • special - Specialized use case certificates

🔒 Security Features

  • High-Grade Encryption: 4096-bit RSA keys for maximum security
  • Secure Storage: Encrypted storage for private keys and certificates
  • Access Control: Role-based permissions and user management
  • Audit Logging: Comprehensive logging of all operations
  • Certificate Validation: Built-in validation for certificate integrity
  • CRL Support: Certificate Revocation List management
  • SAN Validation: Subject Alternative Name validation and support

🧪 Testing

Run the test suite:

go test ./...

Run tests with coverage:

go test -cover ./...

📝 API Documentation

The application provides a comprehensive API for certificate management operations. Key endpoints include:

  • Certificate Authority Management

    • Create Root CA
    • Create Intermediate CA
    • List CAs
    • Get CA Details
  • Certificate Management

    • Generate Certificate
    • Validate Certificate
    • Revoke Certificate
    • Renew Certificate
    • List Certificates
  • User & Organization Management

    • Create User
    • Create Organization
    • Manage Permissions

🚀 Deployment

Docker Deployment

FROM golang:1.25.1-alpine AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN go build -o certman main.go

FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/certman .
COPY --from=builder /app/data ./data
CMD ["./certman"]

Production Considerations

  1. Database Security: Use strong passwords and enable SSL
  2. File Permissions: Ensure proper file permissions for certificate storage
  3. Backup Strategy: Implement regular backups of certificates and database
  4. Monitoring: Set up monitoring for certificate expiration
  5. Access Control: Implement proper network security and access controls

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🆘 Support

For support and questions:

🏢 About SecNex

CertMan is developed by SecNex, a leading provider of enterprise security solutions. For more information about our services and products, visit secnex.io.


⚠️ Security Notice: This software handles sensitive cryptographic material. Always follow security best practices when deploying in production environments. Ensure proper access controls, regular security updates, and comprehensive backup strategies.

Description
No description provided
Readme 80 KiB
2025-10-01 07:19:24 +00:00
Languages
Go 100%