Skip to main content

Nginx SSL certificate

Create private key:

openssl genrsa -out servername.key 2048

Create configuration file with following content:

servername-key.conf
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_extensions
distinguished_name = dn

[dn]
C=CA # Country Name
ST=Region # State or Province
L=Town # Locality or City
O=Global Security
OU=IT Department # Organizational Unit
[email protected] # Email
CN = servername # Common Name

[req_extensions]
subjectAltName = @alter_name

[alter_name]
DNS.1 = servername.domain.com

Create a certificate signing request (CSR) using private key and configuration file:

openssl req -new -key servername.key -out servername.csr -config servername-key.conf
cat servername.csr

Use servername.csr for Microsoft Active Directory Certificate Services

Use folowing command to convert certificate to base64 format:

openssl base64 -in servername.csr -out servername_base64.csr
cat servername_base64.csr

Convert certificate:

openssl x509 -inform DER -in servername.cer -out servername.crt

Set permissions for key and certificate files:

chmod 400 servername.key
chmod 400 servername.crt

Convert certificate to PEM format:

openssl x509 -inform der -in ca.cer -out ca.pem

Copy certificate to /usr/local/share/ca-certificates:

cp ./certs/ca.pem /usr/local/share/ca-certificates/ca.crt

Update certificates:

update-ca-certificates

Add certificate to Nginx configuration:

nano /etc/nginx/sites-available/default
server {
listen 443 ssl;
server_name server.com;

ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;

# ...
}

Restart Nginx

sudo systemctl restart nginx