Selfsigned Certificate In Wsl2 Linux Nginx
26 Sep 2020 - Alejandro Piña
A self-signed certificate is used when you need create local environments to build websites or applications that needs a hostname with SSL/TLS connection whithout CA authorities
How To
Prerequisites
Install OpenSSLInstall NginxInstall Chrome/Chromium/Edge
Create CRT and KEY files with OpenSSL
Open a terminal
cd ~
mkdir local_certificates
cd local_certificates
openssl req -x509 -newkey rsa:4096 \
-sha256 -days 3650 -nodes \
-keyout local.ultranaco.com.key \
-out local.ultranaco.com.crt \
-subj "/CN=local.ultranaco.com" \
-addext "subjectAltName=DNS:local.ultranaco.com"
Copy certificate and key file into ssl folder
sudo cp local.ultranaco.com.crt /etc/ssl/certs/local.ultranaco.com.crt
sudo cp local.ultranaco.com.key /etc/ssl/private/local.ultranaco.com.key
Raise a local application with custom hostname in Nginx
Creating application with Hello World message
cd ~
mkdir myapplication
cd myapplication
echo "Hello World" > index.html
Creating configuration file to serve index.html on the port 443 with custom hostname
cd /etc/nginx/sites-available
sudo touch local.ultranaco.com.site
File contents local.ultranaco.com.site
server {
listen 443 ssl http2;
server_name local.ultranaco.com;
ssl_certificate /etc/ssl/certs/local.ultranaco.com.crt;
ssl_certificate_key /etc/ssl/private/local.ultranaco.com.key;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
root /home/ultranaco/myapplication;
index index.html;
location / {
try_files $uri $uri/ $uri.html =404;
}
}
Enabling application with symlink file
cd ../sites-enabled
sudo ln -s /etc/nginx/sites-available/local.ultranaco.com.site local.ultranaco.com.site
sudo service nginx restart
Append the below text line into /etc/hosts file for linux, if you are working on windows with WSL2 /Windows/System32/drivers/etc/hosts file
127.0.0.1 local.ultranaco.com
Make certificate trusted
Open your application with Chrome/Chromium/Edge with the following url https://local.ultranaco.com, you´ll see and error related with the certificate.
To fix the error you need to export certificate with extension .cer

Go to Settings and search Manage Certificates to import your certificate with extension .cer

Restart Chrome/Chromium/Edge and now your certificate es valid and trusted

Enjoy it, doggy!