Development Certificates for Nodinite Testing
For development and test environments that need HTTPS without a production Certificate Authority (CA), PowerShell's New-SelfSignedCertificate can generate self-signed certificates and configure browser trust automatically.
Warning
Self-signed certificates are for development and testing only. Do not use in production. Browsers show security warnings unless the certificate is manually trusted on each client machine.
Generate Self-Signed Certificate (PowerShell)
Simple Example (Minimal Configuration)
# Localhost certificate (minimal configuration)
New-SelfSignedCertificate `
-DnsName "localhost" `
-CertStoreLocation "cert:\LocalMachine\My" `
-NotAfter (Get-Date).AddYears(2)
Production-Quality Development Certificate (Recommended)
# Configure your DNS name(s)
$dnsNames = @("nodinite.dev.local", "nodinite")
# Create certificate with security best practices
$cert = New-SelfSignedCertificate `
-DnsName $dnsNames `
-Subject "CN=$($dnsNames[0])" `
-FriendlyName "Nodinite Dev SSL ($($dnsNames[0]))" `
-KeyAlgorithm RSA -KeyLength 2048 `
-HashAlgorithm SHA256 `
-KeyExportPolicy Exportable `
-NotAfter (Get-Date).AddYears(2) `
-CertStoreLocation "Cert:\LocalMachine\My"
# Display certificate details
$cert|Format-List Subject, DnsNameList, Thumbprint, NotAfter
# Export certificate for backup and trust
New-Item -ItemType Directory -Force -Path C:\certs|Out-Null
$pfxPassword = Read-Host -AsSecureString -Prompt "Enter PFX password (for backup)"
Export-PfxCertificate -Cert $cert -FilePath "C:\certs\$($dnsNames[0]).pfx" -Password $pfxPassword|Out-Null
Export-Certificate -Cert $cert -FilePath "C:\certs\$($dnsNames[0]).cer"|Out-Null
Import-Certificate -FilePath "C:\certs\$($dnsNames[0]).cer" -CertStoreLocation Cert:\LocalMachine\Root|Out-Null
Write-Host "Certificate created successfully!" -ForegroundColor Green
Write-Host "Thumbprint: $($cert.Thumbprint)" -ForegroundColor Cyan
Write-Host "Files created in C:\certs\" -ForegroundColor Yellow
What This Script Does
- Creates certificate with SHA-256 (secure), 2048-bit RSA key
- Sets Subject Alternative Names (SANs) — Certificate valid for all specified DNS names
- Exports to
.pfxformat — Includes private key, password-protected (for backup/migration) - Exports to
.cerformat — Public certificate only (for distribution to clients) - Automatically trusts certificate — Imports
.certo Trusted Root Certification Authorities - Displays subject and thumbprint — Use the subject (or a SAN) as the Certificate subject in the Nodinite Portal; you need the thumbprint only to pin this exact certificate
Certificate Storage Locations
- Personal Store (
cert:\LocalMachine\My) — Used by IIS for HTTPS binding (requires private key) - Trusted Root Certification Authorities (
cert:\LocalMachine\Root) — Same certificate copied here so browsers trust it
Important
The recommended PowerShell script above automatically handles both locations. If you used the minimal example, follow the manual trust steps below.
Tip
Nodinite v7: After generating the certificate, the Nodinite installer finds it by the Certificate subject you set in the Portal (Step 4: Servers → Core host Configuration). Make sure the subject or a SAN matches the host name, then run the update package again (Update Nodinite v7) so IIS binds the new certificate. You only need to change the Portal if you pinned a Certificate thumbprint; in that case, enter the new thumbprint or clear the field.
Trust Self-Signed Certificate (Manual Method)
If you used the minimal certificate example (not the recommended script), manually copy the certificate to Trusted Root:
Option 1: Using PowerShell
# Get the certificate thumbprint (from script output or find it)
$certificateThumbprint = "YOUR_CERTIFICATE_THUMBPRINT_HERE"
# Get certificate from Personal store
$certificate = Get-ChildItem -Path "Cert:\LocalMachine\My\$certificateThumbprint"
# Export to file
Export-Certificate -Cert $certificate -FilePath "C:\Temp\nodinite-dev.cer"
# Import to Trusted Root Certification Authorities
Import-Certificate -FilePath "C:\Temp\nodinite-dev.cer" `
-CertStoreLocation "Cert:\LocalMachine\Root"
Option 2: Using Certificate Manager (GUI)
- Press
Win+R, typecertlm.msc, press Enter - Navigate to Personal → Certificates
- Find your certificate (e.g.,
CN=nodinite.dev.local) - Right-click → Copy
- Navigate to Trusted Root Certification Authorities → Certificates
- Right-click in the right pane → Paste
Tip
Why copy to Trusted Root? Self-signed certificates act as their own Certificate Authority. Browsers check the Trusted Root store to determine if they should trust a certificate. Without this step, browsers show "Your connection is not private" warnings.
Certificate Backup
The .pfx file contains your private key (password-protected). Store it securely — you will need it if you:
- Rebuild your server
- Move the certificate to another machine
- Recover from a disaster
Next Steps
- How to perform hardening — Configure HTTPS/TLS on Nodinite v7
Related Topics
- How to perform hardening v6 — Legacy HTTPS configuration for Nodinite v6
- TLS Troubleshooting — CRL/OCSP slowness and 401 loopback errors
- Secret Management