Comment déployer .net 5 api sur linux Ubuntu 20.04 (Nginx) -Linode (Partie 2) SSL/HTTPS
Nous allons ajouter un nom de domaine pour notre api dotnet et ajouter un certificat SSL pour activer https. Configuration complète pour passer en production sécurisée.

A la suite de notre tuto Comment déployer .net 5 api sur linux Ubuntu 20.04 (Nginx) -Linode (Partie 1).
Nous allons ajouter un nom de domaine pour notre api dotnet et ajouter un certificat SSL pour activer https.
Let's go…..
Achetons un nom de domaine « testlinode.com » sur Hostinger
J'utilise Hostinger pour acheter les noms de domaine. Je trouve les services de Hostinger rapide, avec un service client très réactif.
Rendez vous sur le site hostinger.
Sur mon Panel je vais sur domaine et je tape « testlinode » ça sera notre nom de domaine pour ce tuto. Nous effectuons le paiement en utilisant notre carte de crédit.
Configuration du domaine
Ensuite renseignons nos informations pour le nom de domaine
Après avoir renseigné nos informations, notre nom de domaine est maintenant disponible.
Notre nom de domaine est aussi disponible en ligne.
Revenons sur le dashboard de notre nom de domaine.
Configuration DNS
Ajoutons l'adresse IP de notre machine Ubuntu
Nous pouvons tester maintenant notre serveur nom de domaine sur Hostinger. Il est bien lié à notre machine sur linode.
Test de l'API
Testons l'endpoint http://testlinode.com/actualities
Maintenant ajoutons un certificat SSL
HTTPS est un moyen sécurisé d'envoyer des données entre un serveur Web et un navigateur Web.
Commençons par la configuration pour passer de http à https sur notre serveur linode Ubuntu.
Configuration .NET pour HTTPS
D'abord sur notre projet dotnet nous allons effectuer quelques configurations pour passer à HTTPS.
Dans notre fichier Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>().UseUrls("https://testlinode.com:5000;http://testlinode.com:5002").UseKestrel();
// webBuilder.UseStartup<Startup>().UseUrls("http://localhost:5000");
});Ensuite dans notre fichier Startup.cs
app.UseHsts();Et dans notre fichier appsettings.json
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://testlinode.com:5002"
},
"Https": {
"Url": "https://testlinode.com:5000"
}}}Rebuild et transfert
Faisons un rebuild du projet
D:\PROJET\BACK DOTNET\CHRETIEN 2\CHRETIEN2> dotnet buildMaintenant utilisons FileZilla pour le transfert vers notre machine Ubuntu 20. Utilisons une connexion FTP avec le port 22. On supprime d'abord les anciens fichiers.
Génération du certificat SSL
Générons le certificat pour notre nom de domaine
Activons https avec ufw
sudo ufw allow httpsInstallation de certificat SSL
epa@localhost:~/chretien$ sudo apt install -y certbotepa@localhost:~/chretien$ sudo certbot certonly --standalone -d testlinode.com -d www.testlinode.comou
sudo certbot certonly --standalone -d www.testlinode.comou
sudo certbot certonly --standalone -d testlinode.comConfiguration Nginx pour HTTPS
Modifions également notre fichier de configuration Nginx
epa@localhost:~/chretien$ sudo vim /etc/nginx/sites-available/defaultRemplaçons le contenu par la nouvelle configuration Nginx pour https
server {
listen 80;
server_name testlinode.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name testlinode.com;
ssl_certificate /etc/letsencrypt/live/www.testlinode.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.testlinode.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6].(?!.*SV1)";
location / {
proxy_pass https://178.79.168.173:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Redémarrons Nginx
epa@localhost:~$ sudo systemctl restart nginxConfiguration du service systemd
Créons un service pour lancer notre projet en arrière-plan
epa@localhost:~$ sudo vim /etc/systemd/system/CHRETIEN2.serviceAjoutons la configuration suivante
[Unit]
Description= Example .NET Web API App running on Ubuntu
[Service]
WorkingDirectory=/home/epa/chretien
ExecStart=/usr/bin/dotnet /home/epa/chretien/CHRETIEN2.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
SyslogIdentifier=CHRETIEN2
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.targetDémarrage du service
epa@localhost:~$ sudo systemctl enable CHRETIEN2.serviceepa@localhost:~$ sudo systemctl start CHRETIEN2.serviceVérification finale
Enfin nous avons terminé, l'activation d'un certificat ssl sur un projet .net en production.
Maintenant le certificat https est activé.
Commandes utiles pour la gestion du service
# Vérifier le statut du service
sudo systemctl status CHRETIEN2.service
# Voir les logs du service
sudo journalctl -u CHRETIEN2.service
# Redémarrer le service
sudo systemctl restart CHRETIEN2.service
# Arrêter le service
sudo systemctl stop CHRETIEN2.serviceRenouvellement automatique du certificat
Pour automatiser le renouvellement du certificat SSL, vous pouvez ajouter une tâche cron :
# Éditer la crontab
sudo crontab -e
# Ajouter cette ligne pour vérifier le renouvellement tous les jours à 2h00
0 2 * * * certbot renew --quiet && systemctl reload nginxSécurité additionnelle
Configuration de sécurité Nginx améliorée
Pour une sécurité renforcée, ajoutez ces directives dans votre configuration Nginx :
# Ajout d'en-têtes de sécurité
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# Masquer la version Nginx
server_tokens off;Pare-feu UFW
Configurez UFW pour sécuriser votre serveur :
# Autoriser SSH, HTTP et HTTPS
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Bloquer les autres ports
sudo ufw --force enableConclusion
Vous avez maintenant une API .NET 5 déployée avec succès sur Ubuntu 20.04 avec :
✅ Nom de domaine personnalisé ✅ Certificat SSL/TLS gratuit avec Let's Encrypt ✅ Redirection automatique HTTP vers HTTPS ✅ Service systemd pour la haute disponibilité ✅ Configuration Nginx optimisée ✅ Renouvellement automatique des certificats
Votre API est maintenant prête pour la production avec une sécurité et des performances optimales !
#DotNet #Ubuntu #Nginx #SSL #HTTPS #Linode #Production #Sécurité