Ctrl K
ring2all.com

Certificates Module Documentation

Table of Contents

  1. Module Overview (Technical)
  2. Module Overview (Commercial/Business)
  3. Module Overview (End User/Administrator)
  4. Configuration Sections
  5. Settings Reference
  6. Common Scenarios & Examples
  7. Limitations & Important Notes
  8. Troubleshooting Tips
  9. Glossary

---

1. Module Overview (Technical)

What Is the Certificates Module?

Certificates is an SSL/TLS certificate management module that handles certificate lifecycle for HTTPS, SIP TLS, and WebRTC. It supports Self-Signed, Let's Encrypt (ACME), and Custom certificate types with usage assignment and auto-renewal.

Architecture

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│              Certificates Architecture                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Certificate Definition                                         │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │        Certificate: Production SSL                       │   │
│  │                                                          │   │
│  │  Type: Let's Encrypt                                    │   │
│  │  Domain: pbx.company.com                                │   │
│  │  SANs: sip.company.com, webrtc.company.com              │   │
│  │                                                          │   │
│  │  Status: ● Active                                       │   │
│  │  Expires: 2025-04-15 (90 days)                          │   │
│  │  Auto Renew: ✓                                          │   │
│  │                                                          │   │
│  │  Usage:                                                  │   │
│  │  ├─ ✓ HTTPS                                             │   │
│  │  ├─ ✓ SIP TLS                                           │   │
│  │  └─ ✓ WebRTC                                            │   │
│  │                                                          │   │
│  └──────────────────────────────────────────────────────────┘   │
│       │                                                         │
│       ▼ Applied to services                                    │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │        Services Using Certificate                        │   │
│  │                                                          │   │
│  │  HTTPS (Nginx)                                          │   │
│  │  ├─ Admin panel                                         │   │
│  │  └─ API endpoints                                       │   │
│  │                                                          │   │
│  │  SIP TLS (FreeSWITCH)                                   │   │
│  │  ├─ Encrypted SIP registrations                         │   │
│  │  └─ Secure voice traffic                                │   │
│  │                                                          │   │
│  │  WebRTC (via Nginx Proxy)                               │   │
│  │  ├─ Browser → wss://domain/ws (Nginx TLS on 443)       │   │
│  │  └─ Nginx → ws://127.0.0.1:5066 (FreeSWITCH local)     │   │
│  │                                                          │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Key Tables

TablePurpose
public.certificatesCertificate records

Key Files

FileDescription
modules/certificates/Frontend module
/etc/ssl/certs/Certificate storage
/etc/ssl/private/Private key storage
---

2. Module Overview (Commercial/Business)

Business Value

Certificates provides secure communications:

Without CertificatesWith Certificates
Insecure HTTPHTTPS encrypted
Plain SIPSIP TLS encrypted
No WebRTCSecure WebRTC
Manual renewalAuto-renewal

Use Cases

  1. HTTPS Web Interface
- Secure admin panel

- API encryption

  1. SIP TLS
- Encrypted registrations

- Secure voice traffic

  1. WebRTC
- Browser calling via Nginx proxy (wss://domain/ws)

- TLS terminated at Nginx, forwarded as plain WS to FreeSWITCH

  1. Let's Encrypt
- Free certificates

- Automatic renewal

Feature Highlights

FeatureBenefit
Self-SignedQuick setup
Let's EncryptFree, auto-renew
CustomEnterprise PKI
SANsMultiple domains
Usage ConfigPer-service assignment
Expiry TrackingAlerts for renewal
---

3. Module Overview (End User/Administrator)

What Can You Do?

  • Create self-signed certificates
  • Request Let's Encrypt certificates
  • Upload custom certificates
  • Configure Subject Alternative Names
  • Assign certificates to services
  • Enable auto-renewal
  • Monitor expiration

Certificates Interface

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│              Certificates                                       │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Manage SSL/TLS certificates for HTTPS, SIP TLS, and WebRTC   │
│                                                                 │
│  [+ Create Certificate]                                         │
│                                                                 │
│  [🔍 Search certificates...]                                    │
│                                                                 │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │ Name         │ Type        │ Domain      │ Expires │ Usage│ │
│  ├──────────────┼─────────────┼─────────────┼─────────┼──────┤ │
│  │ Production   │ Let's Enc.  │ pbx.co.com  │ 85 days │ H S W│ │
│  │ Dev Cert     │ Self-Signed │ dev.local   │ 364 days│ H    │ │
│  │ Enterprise   │ Custom      │ *.corp.com  │ 729 days│ H S W│ │
│  └───────────────────────────────────────────────────────────┘  │
│                                                                 │
│  Usage: H=HTTPS, S=SIP TLS, W=WebRTC                           │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Create Certificate - Self-Signed

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│              Create Certificate                                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ▼ General Information                                          │
│                                                                 │
│  Name: [Development Certificate         ]                      │
│  Description: [Local development use     ]                     │
│  Type: [Self-Signed ▼]                                         │
│                                                                 │
│  ──────────────────────────────────────────────────────────────│
│                                                                 │
│  ▼ Domain Configuration                                         │
│                                                                 │
│  Domain: [dev.local                      ]                     │
│    The primary domain name for this certificate                 │
│                                                                 │
│  Alt. Domains:                                                  │
│  [+ Add Domain]                                                 │
│  - sip.dev.local                                               │
│  - webrtc.dev.local                                            │
│                                                                 │
│  ──────────────────────────────────────────────────────────────│
│                                                                 │
│  ▼ Organization Information                                     │
│                                                                 │
│  Organization: [My Company               ]                     │
│  Organization Unit: [IT Department       ]                     │
│  City: [New York                         ]                     │
│  State/Province: [NY                     ]                     │
│  Country: [US                            ]                     │
│                                                                 │
│  ──────────────────────────────────────────────────────────────│
│                                                                 │
│  ▼ Self-Signed Options                                          │
│                                                                 │
│  Key Size: [2048 ▼]  (2048, 4096)                              │
│  Validity Period: [365           ] days                        │
│                                                                 │
│  ──────────────────────────────────────────────────────────────│
│                                                                 │
│  ▼ Usage Configuration                                          │
│                                                                 │
│  Use for HTTPS: ✓                                              │
│  Use for SIP TLS: ✓                                            │
│  Use for WebRTC: ✓                                             │
│  Set as Default: ✓                                             │
│                                                                 │
│  [Create Certificate] [Cancel]                                  │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Create Certificate - Let's Encrypt

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│              Create Certificate                                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ▼ General Information                                          │
│                                                                 │
│  Name: [Production SSL                   ]                     │
│  Type: [Let's Encrypt ▼]                                       │
│                                                                 │
│  ──────────────────────────────────────────────────────────────│
│                                                                 │
│  ▼ Domain Configuration                                         │
│                                                                 │
│  Domain: [pbx.company.com                ]                     │
│                                                                 │
│  Alt. Domains:                                                  │
│  - sip.company.com                                             │
│  - webrtc.company.com                                          │
│                                                                 │
│  ──────────────────────────────────────────────────────────────│
│                                                                 │
│  ▼ Let's Encrypt Configuration                                  │
│                                                                 │
│  ACME Account Email: [admin@company.com  ]                     │
│    Required for certificate notifications                       │
│                                                                 │
│  Challenge Type: [HTTP-01 ▼]                                   │
│    HTTP-01 or DNS-01                                            │
│                                                                 │
│  Auto Renew: ✓                                                 │
│  Renew Before: [30             ] days                          │
│                                                                 │
│  ℹ️ The certificate will be automatically requested from        │
│  Let's Encrypt. Make sure your domain is publicly accessible.  │
│                                                                 │
│  ──────────────────────────────────────────────────────────────│
│                                                                 │
│  ▼ Usage Configuration                                          │
│                                                                 │
│  Use for HTTPS: ✓                                              │
│  Use for SIP TLS: ✓                                            │
│  Use for WebRTC: ✓                                             │
│                                                                 │
│  [Create Certificate] [Cancel]                                  │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Create Certificate - Custom

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│              Create Certificate                                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ▼ General Information                                          │
│                                                                 │
│  Name: [Enterprise Wildcard              ]                     │
│  Type: [Custom ▼]                                              │
│                                                                 │
│  ──────────────────────────────────────────────────────────────│
│                                                                 │
│  ▼ Certificate Data                                             │
│                                                                 │
│  Certificate (PEM):                                             │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │ -----BEGIN CERTIFICATE-----                                ││
│  │ MIIDxTCCAq2gAwIBAgIJAJJp+C...                              ││
│  │ -----END CERTIFICATE-----                                  ││
│  └─────────────────────────────────────────────────────────────┘│
│                                                                 │
│  Private Key (PEM):                                             │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │ -----BEGIN RSA PRIVATE KEY-----                            ││
│  │ MIIEpAIBAAKCAQEA0Z3VS...                                   ││
│  │ -----END RSA PRIVATE KEY-----                              ││
│  └─────────────────────────────────────────────────────────────┘│
│                                                                 │
│  Certificate Chain (CA Bundle):                                 │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │ Optional: Paste intermediate CA certificates               ││
│  └─────────────────────────────────────────────────────────────┘│
│                                                                 │
│  [Validate Certificate]                                         │
│  ✓ Private key matches certificate                             │
│                                                                 │
│  [Create Certificate] [Cancel]                                  │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Quick Tips

TIP
Let's Encrypt: Free, auto-renewing, trusted by browsers.
TIP
SANs: Add all needed domains in one certificate.
WARNING
Private Key: Keep private keys secure. Never share.

---

4. Configuration Sections

General Information

FieldDescription
NameCertificate identifier
DescriptionOptional notes
TypeSelf-Signed, Let's Encrypt, Custom

Domain Configuration

FieldDescription
DomainPrimary domain (CN)
Alt. DomainsSubject Alternative Names

Organization (Self-Signed)

FieldDescription
OrganizationCompany name
Organization UnitDepartment
CityLocality
State/ProvinceRegion
CountryCountry code

Self-Signed Options

FieldDescription
Key Size2048 or 4096 bits
Validity PeriodDays until expiry

Let's Encrypt Configuration

FieldDescription
ACME EmailNotification address
Challenge TypeHTTP-01 or DNS-01
Auto RenewEnable auto-renewal
Renew BeforeDays before expiry

Certificate Data (Custom)

FieldDescription
Certificate (PEM)Public certificate
Private Key (PEM)Private key
Certificate ChainCA bundle

Usage Configuration

FieldDescription
Use for HTTPSWeb traffic
Use for SIP TLSSIP encryption
Use for WebRTCWSS protocol
Set as DefaultDefault certificate
---

5. Settings Reference

Certificate Types

TypeDescriptionUse Case
Self-SignedGenerated locallyDevelopment, internal
Let's EncryptFree, auto ACMEProduction, public
CustomUpload your ownEnterprise PKI

Certificate Status

StatusMeaning
PendingBeing issued
ActiveValid and in use
ExpiredPast validity date
RevokedManually revoked
ErrorIssue/validation error

Key Sizes

SizeSecurityPerformance
2048GoodFaster
4096BetterSlower
---

6. Common Scenarios & Examples

Scenario 1: Self-Signed for Development

  1. Create Certificate
  2. Type = Self-Signed
  3. Domain = dev.local
  4. Key Size = 2048
  5. Validity = 365 days
  6. Enable all usage
  7. Create

Scenario 2: Let's Encrypt for Production

  1. Create Certificate
  2. Type = Let's Encrypt
  3. Domain = pbx.company.com
  4. Add SANs for sip and webrtc
  5. Enter ACME email
  6. Enable Auto Renew
  7. Create (waits for validation)

Scenario 3: Upload Enterprise Certificate

  1. Create Certificate
  2. Type = Custom
  3. Paste certificate PEM
  4. Paste private key PEM
  5. Paste CA bundle (if any)
  6. Validate (key match check)
  7. Configure usage
  8. Create

Scenario 4: Add Domain to Existing

  1. Edit certificate
  2. Add new Alt. Domain
  3. Save
  4. (Let's Encrypt re-validates)

---

7. Limitations & Important Notes

Technical Notes

NOTE
Let's Encrypt: Domain must be publicly accessible.
NOTE
Rate Limits: Let's Encrypt has issuance limits.
WARNING
Key Security: Never expose private keys.

Best Practices

  1. Use Let's Encrypt: Free and trusted
  2. Auto Renew: Prevent expiry
  3. Include SANs: All needed domains
  4. Strong Keys: Use 2048+ bits
  5. Monitor Expiry: Watch warning alerts

Let's Encrypt Requirements

RequirementDetails
Public DNSDomain must resolve
Port 80HTTP-01 challenge
No FirewallAllow Let's Encrypt
Valid EmailNotifications
---

8. Troubleshooting Tips

Common Issues

SymptomPossible CauseSolution
Let's Encrypt failsDNS not publicCheck DNS resolution
Key mismatchWrong private keyVerify key matches cert
Browser warningSelf-signedUse Let's Encrypt
ExpiredRenewal failedManually renew

Check Certificate

Bash
# View certificate details
openssl x509 -in cert.pem -text -noout

# Check expiry
openssl x509 -in cert.pem -enddate -noout

# Verify key matches cert
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in key.pem | openssl md5

Test HTTPS

Bash
# Test certificate chain
openssl s_client -connect pbx.company.com:443 -servername pbx.company.com

# Check Let's Encrypt validation
curl -I http://pbx.company.com/.well-known/acme-challenge/test

---

9. Glossary

TermDefinition
SSL/TLSEncryption protocols
PEMCertificate text format
SANsSubject Alternative Names
ACMELet's Encrypt protocol
CACertificate Authority
FingerprintCertificate hash
---

Lua Script Status ℹ️

Security Module

ComponentStatus
Certificatesℹ️ SSL/TLS management - no Lua handler required
Certificates is a security management module. It manages SSL/TLS for web and telephony services. No Lua handlers are used - certificate deployment is handled by the backend service.

---

Documentation last updated: January 2026
AI Assistant

👋 Hello! I'm your Ring2All documentation assistant. I can help you find information about configuring and using the Ring2All PBX platform.

How can I help you today?