GitLab SSL Certificate Renewal – Step-by-Step Guide
Overview
SSL certificate renewal for GitLab requires careful planning
to avoid service disruption. This guide explains the end-to-end process
for renewing GitLab SSL certificates across both Application and Database
servers, including backup, CSR generation, certificate replacement,
service restart, and verification.
This procedure ensures:
- Secure
HTTPS access
- Zero
data loss
- Safe
rollback using snapshots
- Compliance
with enterprise certificate standards
Environment Overview
|
Component |
Description |
|
GitLab
Application Server |
Hosts GitLab
UI & services |
|
GitLab
Database Server |
Hosts
PostgreSQL |
|
Access Method |
CyberArk SSH |
|
Certificate
Type |
Custom Root +
Intermediate + Signed Certificate |
High-Level Flow Diagram
Phase 1: Backup & CSR Preparation
Step 1: Take VM Snapshots
- GitLab
Application Server
- GitLab
Database Server
Ensures rollback safety in case of failure.
Access the server using CyberArk SSH.
mkdir /root/certs/newcsr
cd /root/certs/newcsr
openssl req -new -key gitlabappfqdn.key \
-config /root/certs/req.conf \
-out gitlabappfqdn.csr
Passphrase: XXXXXX
mkdir /root/certs/newcsr
cd /root/certs/newcsr
openssl req -new -key gitlabappfqdn.key \
-config /root/certs/req.conf \
-out gitlabappfqdn.csr
Phase 2: Remove Passphrase from Private Key
Step 8: Application Server
openssl rsa -in gitlabappfqdn.key -out
gitlabappfqdn_nopasswd.key
mv gitlabappfqdn_nopasswd.key gitlabappfqdn.key
openssl rsa -in gitlabappfqdn.key -out
gitlabappfqdn_nopasswd.key
mv gitlabappfqdn_nopasswd.key gitlabappfqdn.key
Copy the signed .crt and .key files to:
/root/certs/newcsr
(On both servers)
openssl x509 -in /root/certs/newcsr/gitlabappfqdn.crt
-noout -dates
scp gitlabappfqdn.crt app-server:/tmp/
Phase 3: Actual Certificate Renewal
Step 1–2: Pre-Checks
- Snapshots
confirmed
- Root,
Intermediate & Signed certificates available in:
- /root/certs/newcsr
mv gitlabappfqdn.csr
/root/certs/archive/2024/gitlabappfqdn.csr_old
mv gitlabappfqdn.key
/root/certs/archive/2024/gitlabappfqdn.key_old
Application Server
mv /etc/gitlab/ssl/gitlabappfqdn.crt
/root/certs/archive/2024/gitlabappfqdn.crt_old
Database Server
mv /var/opt/gitlab/postgresql/data/gitlabappfqdn.crt \
/root/certs/archive/2024/gitlabappfqdn.crt_old
Phase 4: Deploy New Certificates
Step 7: Application Server
cp /root/certs/newcsr/gitlabappfqdn.crt
/etc/gitlab/ssl/
cp /root/certs/newcsr/gitlabappfqdn.crt \
/var/opt/gitlab/postgresql/data/
cp /etc/gitlab/ssl/gitlabappfqdn.crt
/etc/gitlab/trusted-certs/
cp /tmp/gitlabappfqdn.crt /etc/gitlab/trusted-certs/
Phase 5: Reconfigure & Restart Services
Run on both servers:
gitlab-ctl reconfigure
gitlab-ctl restart
Application
Validation
- GitLab
UI accessible
- No
service errors
Certificate
Validation
- Open
GitLab URL (HTTPS)
- Click
padlock
- View
certificate details
- Confirm
new expiry date
Key Takeaways
✔ Safe rollback using snapshots
✔ Secure CSR handling
✔ Proper certificate archival
✔ Zero-downtime best practices
✔ Enterprise-grade compliance
Conclusion
This structured GitLab certificate renewal process ensures security,
stability, and audit readiness. Following this guide minimizes risk and
guarantees smooth certificate rotation across both application and database
layers.

Comments
Post a Comment