Nello script precedente (https://www.aspitalia.com/script/1280/Esporre-HTTPS-Applicazione-ASP.NET-Core-Eseguita-Docker-Container.aspx) abbiamo effettuato tutti i passi necessari per esporre un'applicazione ASP.NET Core su HTTPS e installarla all'interno di un Docker container. Dopo alcuni passaggi, infatti, siamo riusciti a creare un'immagine distribuibile, che espone la porta 443, e che contiene internamente un certificato self-signed che possiamo utilizzare nei vari ambienti di sviluppo e test.
Questo certificato è anche quello specificato nella configurazione di default, unitamente alla password e alla porta 443 che vogliamo esporre:
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } }, "https": { "port": 443, "certificate": "testcert.pfx", "password": "password" } }
Ovviamente, però, non è pensabile utilizzarlo in produzione, in cui invece abbiamo bisogno di uno rilasciato da una Certificate Authority riconosciuta. Come gestire questo aspetto con Docker? Di certo non possiamo pensare di generare una nuova immagine con il nuovo certificato. Fortunatamente abbiamo un sistema più snello: i volume.
I volume sono il sistema utilizzato da Docker per condividere file tra la macchina host e un container. Dal punto di vista del container, sono visti semplicemente come una cartella, che possiamo mappare su una qualsiasi directory della macchina host, a condizione che Docker abbia sufficienti permessi per accedervi. Sfruttarli è semplicissimo: ci basta eseguire il container specificando il parametro -v:
docker run ` -v c:/Work/Certs:/certs:ro ` -e "https__certificate=/certs/production.pfx" ` -e "https__password=pass123" ` -p 44311:443 ` webapplication13
Nel codice in alto, abbiamo mappato la cartella locale c:\Work\Certs sulla cartella /certs del container, specificandone la natura read-only con il parametro addizionale ro. Poi, sfruttando la tecnica spiegata in uno script precedente (https://www.aspitalia.com/script/1275/Configurazione-Tramite-Environment-Variable-ASP.NET-Core.aspx), abbiamo usato due environment variable per modificare la configurazione dell'applicazione, passando il percorso del nuovo file pfx e la relativa password. L'ultimo parametro -p mappa poi la porta 443 del container sulla 44311 locale: ovviamente non serve in uno scenario di produzione, ma è utile se vogliamo fare un test su una macchina che magari ha già la 443 occupata.
Questi stessi parametri possono essere specificati anche all'interno di un file docker-compose:
version: '3' services: webapplication13: image: webapplication13 volumes: - "c:/Work/Certs:/certs:ro" environment: - "https__certificate=/certs/production.pfx" - "https__password=pass123" ports: - 44311:443
In entrambi i casi, saremo in grado di riutilizzare la stessa generica immagine, ma facendo sì che sfrutti il certificato fornito dall'esterno invece che quello di test incluso al suo interno.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Configurare policy CORS in Azure Container Apps
Assegnare un valore di default a un parametro di una lambda in C#
Elencare le container images installate in un cluster di Kubernetes
Limitare le richieste lato server con l'interactive routing di Blazor 8
Code scanning e advanced security con Azure DevOps
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Miglioramenti nelle performance di Angular 16
Criptare la comunicazione con mTLS in Azure Container Apps
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Routing statico e PreRendering in una Blazor Web App
Generare file PDF da Blazor WebAssembly con iText
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
I più letti di oggi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2
- Annunciato Silverlight 4 RC e Windows Phone Developer Tools
- Speciale Razor: il nuovo view engine di WebMatrix e ASP.NET MVC
- Speciale Windows Store app: costruire app con WinRT per Windows 8
- Gestire lo stato all'interno di un class component di ReactJS
- Inserimenti bulk su database con la classe SqlBulkCopy di ADO.NET 2.0
- disponibile su MSDN la versione RTM di #VS2013 Update 2! https://aspit.co/auj #msTechEd