I have explained How to Install GitLab in a Disconnected Environment in a past article. In this article you will learn how to use self-signed or custom SSL certificates to secure your GitLab servers.
You can use any of the below listed certificates depends on your environments for this method.
- Self-signed SSL certificates and key
- Custom CA signed SSL certificate and key
- Let’s Encrypt SSL certificates and key
Follow below steps to configure GitLab with custom SSL certificate.
Copy SSL Certificate and Key
Create the ssl directory if does not exist.
$ mkdir /etc/gitlab/ssl/
Copy custom SSL certificate and key to the /etc/gitlab/ssl/ directory.
sudo ls -l /etc/gitlab/ssl
total 8
-rw-r--r--. 1 root root 2222 Dec 22 13:06 gitlab-ce.lab.local.crt
-rw-------. 1 root root 1679 Dec 22 13:06 gitlab-ce.lab.local.key
Configure /etc/gitlab/gitlab.rb
Edit /etc/gitlab/gitlab.rb file and configure below items.
- Disable Let’s Encrypt and renewal in
/etc/gitlab/gitlab.rbfile
letsencrypt['auto_renew'] = false
- You can use any custom names or keep the file format as per GitLab configuration. In my case, I follow the GitLab file format and did not change filename or path inside configuration for SSL.
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}.crt"
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key"
- Change the
external_urlparameter in/etc/gitlab/gitlab.rbfile (fromhttptohttps)
external_url 'https://gitlab-ce.lab.local'
Reconfigure the GitLab
Reconfigure the GitLab and wait for re-configuration to complete.
$ sudo gitlab-ctl reconfigure
Restart GitLab to use the latest configuration
$sudo gitlab-ctl restart
Now verify access to `` from a web browser and verify the SSL certificate.

Gineesh Madapparambath
Gineesh Madapparambath is the founder of techbeatly. He is the co-author of The Kubernetes Bible, Second Edition and the author of Ansible for Real Life Automation. He has worked as a Systems Engineer, Automation Specialist, and content author. His primary focus is on AI, Ansible Automation, Containerization (OpenShift & Kubernetes), and Infrastructure as Code (Terraform). (Read more: gineesh.com)

Editorial
