1. Prepare and Combine Your Files
When you download your NGINX certificate package from the ZeroSSL Dashboard, you will receive a ZIP file containing three files: certificate.crt, ca_bundle.crt, and private.key. NGINX requires the certificate and the CA bundle to be combined into a single file.
On your local machine or server, run this command to merge them:
bash
cat certificate.crt ca_bundle.crt > zerossl_bundled.crt
Use code with caution.
2. Move Files to Your Server
Upload zerossl_bundled.crt and private.key to your server’s secure SSL directories (typically /etc/ssl/ or /etc/nginx/ssl/).
bash
sudo mkdir -p /etc/nginx/ssl/://example.com
sudo mv zerossl_bundled.crt /etc/nginx/ssl/://example.com
sudo mv private.key /etc/nginx/ssl/://example.com
Use code with caution.
3. Configure Your NGINX Server Block
Open your website’s NGINX configuration file (e.g., /etc/nginx/sites-available/example.com or /etc/nginx/conf.d/default.conf). Update or create the file to point to your ZeroSSL files and listen on port 443:
nginx
server {
listen 80;
server_name example.com www.example.com;
# Redirect all HTTP requests to HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com www.example.com;
root /var/www/html;
index index.html;
# ZeroSSL Certificates
ssl_certificate /etc/nginx/ssl/://example.com;
ssl_certificate_key /etc/nginx/ssl/://example.com;
# Optimized SSL settings
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
location / {
try_files $uri $uri/ =404;
}
}
Use code with caution.
4. Verify and Restart NGINX
Test your configuration for syntax errors and restart NGINX to apply changes:
bash
sudo nginx -t
sudo systemctl restart nginx
TO SUPPORT PHP WHICH IS WORDPRESS :
Setting up ZeroSSL on NGINX for a WordPress site involves generating a certificate on the ZeroSSL Dashboard, uploading the .crt and .key files to your server, configuring your NGINX server block to use HTTPS, and updating your WordPress site URLs.
Step 1: Generate and Download the ZeroSSL Certificate
- Log into your ZeroSSL account.
- Click New Certificate and enter your WordPress domain name.
- Choose the 90-day certificate validity and complete the Domain Verification process (usually via email, HTTP File Upload, or DNS CNAME).
- Once verified, download the certificate files as a
.zip. Extract them to find three files:certificate.crt,ca_bundle.crt, and your private key (e.g.,private.key).
Step 2: Upload Files to the Server and Merge Certificates
- Upload the three certificate files to a secure directory on your server (e.g.,
/etc/ssl/certs/or/etc/nginx/ssl/). - NGINX requires the primary certificate and the CA bundle to be chained together. Run the following command via SSH to combine them into one file:
bash
cat /etc/ssl/certs/certificate.crt /etc/ssl/certs/ca_bundle.crt > /etc/ssl/certs/chained.crt
Use code with caution.
Step 3: Configure NGINX Server Block
- Open your WordPress site’s NGINX configuration file:
bash
sudo nano /etc/nginx/sites-available/your-domain.com
Use code with caution.
- Update or add the
serverblock to listen on port 443 with SSL, pointing to your uploaded keys:
nginx
server {
listen 443 ssl;
server_name your-domain.com ://your-domain.com;
ssl_certificate /etc/ssl/certs/chained.crt;
ssl_certificate_key /etc/ssl/private.key;
# Strong SSL settings recommended by ZeroSSL
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
# WordPress PHP processing
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Adjust PHP version as needed
}
}
# Redirect HTTP to HTTPS
server {
listen 80;
server_name your-domain.com ://your-domain.com;
return 301 https://$host$request_uri;
}
Use code with caution.
- Test the NGINX configuration for syntax errors:
bash
sudo nginx -t
Use code with caution.
- If successful, reload NGINX to apply the changes:
bash
sudo systemctl reload nginx
sudo systemctl restart nginx
sudo systemctl --enable nginx
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Use code with caution.
Step 4: Update WordPress Settings
- Log into your WordPress admin dashboard.
- Go to Settings > General.
- Update both the WordPress Address (URL) and Site Address (URL) to start with
https://. - (Optional but recommended) Install a redirection plugin like Really Simple SSL or edit your
wp-config.phpfile to force HTTPS across your entire database.
![]()