Configurare la connettività SSL nel Database di Azure per PostgreSQLConfigure SSL connectivity in Azure Database for PostgreSQL

Il Database di Azure per PostgreSQL preferisce connettere le applicazioni client al servizio di PostgreSQL usando la connettività SSL (Secure Sockets Layer).Azure Database for PostgreSQL prefers connecting your client applications to the PostgreSQL service using Secure Sockets Layer (SSL). L'applicazione delle connessioni SSL tra il server di database e le applicazioni client aiuta a proteggersi dagli attacchi "man in the middle" crittografando il flusso di dati tra il server e l'applicazione.Enforcing SSL connections between your database server and your client applications helps protect against "man in the middle" attacks by encrypting the data stream between the server and your application.

Per impostazione predefinita, il servizio di database PostgreSQL è configurato per richiedere la connessione SSL.By default, the PostgreSQL database service is configured to require SSL connection. Se l'applicazione client non supporta la connettività SSL, si è liberi di disabilitare l'opzione di richiesta SSL per la connessione al servizio di database.Optionally, you can disable requiring SSL to connect to your database service if your client application does not support SSL connectivity.

Applicazione delle connessioni SSLEnforcing SSL connections

Per impostazione predefinita, l'opzione di applicazione delle connessioni SSL è attiva quando si esegue il provisioning di tutti i Database di Azure per i server PostgreSQL attraverso l'interfaccia della riga di comando e il portale di Azure.For all Azure Database for PostgreSQL servers provisioned through the Azure portal and CLI, enforcement of SSL connections is enabled by default.

Analogamente, le stringhe di connessione predefinite nelle impostazioni "Stringhe di connessione" per il server nel portale di Azure includono i parametri obbligatori per le lingue comuni per effettuare la connessione al server di database tramite SSL.Likewise, connection strings that are pre-defined in the "Connection Strings" settings under your server in the Azure portal include the required parameters for common languages to connect to your database server using SSL. Il parametro SSL varia in base al connettore, ad esempio "ssl=true", "sslmode=require" oppure "sslmode=required" e altre varianti.The SSL parameter varies based on the connector, for example "ssl=true" or "sslmode=require" or "sslmode=required" and other variations.

Configurare l'applicazione di SSLConfigure Enforcement of SSL

Facoltativamente, è possibile disabilitare l'applicazione della connettività SSL.You can optionally disable enforcing SSL connectivity. Microsoft Azure consiglia di abilitare sempre l'impostazione Enforce SSL connection (Applica connessione SSL) per una maggiore sicurezza.Microsoft Azure recommends to always enable Enforce SSL connection setting for enhanced security.

Uso del portale di AzureUsing the Azure portal

Visitare il Database di Azure per il server PostgreSQL e fare clic su Sicurezza connessione.Visit your Azure Database for PostgreSQL server and click Connection security. Usare l'interruttore per abilitare o disabilitare l'impostazione Imponi connessione SSL.Use the toggle button to enable or disable the Enforce SSL connection setting. Fare quindi clic su Salva.Then, click Save.

Sicurezza connessione - Disabilitare l'applicazione di SSL

È possibile confermare l'impostazione aprendo la pagina Panoramica per visualizzare l'indicatore SSL enforce status (Stato di applicazione di SSL).You can confirm the setting by viewing the Overview page to see the SSL enforce status indicator.

Utilizzare l'interfaccia della riga di comando di AzureUsing Azure CLI

È possibile abilitare o disabilitare il parametro ssl-enforcement usando rispettivamente i valori Enabled o Disabled nell'interfaccia della riga di comando di Azure.You can enable or disable the ssl-enforcement parameter using Enabled or Disabled values respectively in Azure CLI.

az postgres server update --resource-group myresourcegroup --name mypgserver-20170401 --ssl-enforcement Enabled

Verificare che le connessioni SSL siano supportate dall'applicazione o dal frameworkEnsure your application or framework supports SSL connections

Per impostazione predefinita, molti framework di applicazione comuni che usano i servizi PostgreSQL per database, quali Drupal e Django, non abilitano SSL durante l'installazione.Many common application frameworks that use PostgreSQL for their database services, such as Drupal and Django, do not enable SSL by default during installation. L'abilitazione della connettività SSL deve essere eseguita dopo l'installazione o tramite i comandi dell'interfaccia della riga di comando specifici dell'applicazione.Enabling SSL connectivity must be done after installation or through CLI commands specific to the application. Se il server PostgreSQL applica le connessioni SSL e l'applicazione associata non è configurata correttamente, l'applicazione potrebbe non riuscire a connettersi al server di database.If your PostgreSQL server is enforcing SSL connections and the associated application is not configured properly, the application may fail to connect to your database server. Consultare la documentazione dell'applicazione per le informazioni su come abilitare le connessioni SSL.Consult your application's documentation to learn how to enable SSL connections.

Applicazioni che richiedono la verifica del certificato per la connettività SSLApplications that require certificate verification for SSL connectivity

In alcuni casi, le applicazioni richiedono un file del certificato locale generato da un file di certificato (.cer) dell'autorità di certificazione (CA) attendibile per connettersi in modo sicuro.In some cases, applications require a local certificate file generated from a trusted Certificate Authority (CA) certificate file (.cer) to connect securely. Vedere la procedura seguente per ottenere il file .cer, decodificare il certificato e associarlo all'applicazione.See the following steps to obtain the .cer file, decode the certificate and bind it to your application.

Scaricare il file del certificato dall'autorità di certificazione (CA)Download the certificate file from the Certificate Authority (CA)

Il certificato richiesto per comunicare con il Database di Azure per il server PostgreSQL tramite SSL si trova qui.The certificate needed to communicate over SSL with your Azure Database for PostgreSQL server is located here. Scaricare il file del certificato e salvarlo in locale.Download the certificate file locally.

Scaricare e installare OpenSSL sul computerDownload and install OpenSSL on your machine

Per decodificare il file del certificato richiesto dall'applicazione per connettersi al server di database in modo sicuro, è necessario installare OpenSSL sul computer locale.To decode the certificate file needed for your application to connect securely to your database server, you need to install OpenSSL on your local computer.

Per Linux, OS X o UnixFor Linux, OS X, or Unix

Le librerie OpenSSL vengono distribuite nel codice sorgente direttamente da OpenSSL Software Foundation.The OpenSSL libraries are provided in source code directly from the OpenSSL Software Foundation. Le istruzioni seguenti consentono di eseguire i passaggi necessari per installare OpenSSL nel computer Linux.The following instructions guide you through the steps necessary to install OpenSSL on your Linux PC. In questo articolo vengono usati i comandi noti per lavorare su Ubuntu 12.04 (e versioni successive).This article uses commands known to work on Ubuntu 12.04 and higher.

Aprire una sessione terminal e scaricare OpenSSL.Open a terminal session and download OpenSSL.

wget http://www.openssl.org/source/openssl-1.1.0e.tar.gz

Estrarre i file dal pacchetto scaricato.Extract the files from the downloaded package.

tar -xvzf openssl-1.1.0e.tar.gz

Specificare la directory in cui sono stati estratti i file.Enter the directory where the files were extracted. Per impostazione predefinita, deve essere come segue.By default, it should be as follows.

cd openssl-1.1.0e

Configurare OpenSSL eseguendo il comando indicato di seguito.Configure OpenSSL by executing the following command. Se si desidera collocare i file in una cartella diversa da /usr/local/openssl, assicurarsi di modificare quanto segue in modo appropriato.If you want the files in a folder different than /usr/local/openssl, make sure to change the following as appropriate.

./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl

Ora che OpenSSL è stato configurato correttamente, è necessario compilarlo per convertire il certificato.Now that OpenSSL is configured properly, you need to compile it to convert your certificate. A tale scopo, eseguire il comando seguente:To compile, run the following command:

make

Al termine della compilazione è possibile installare OpenSSL come eseguibile eseguendo il comando seguente:Once compilation is complete, you're ready to install OpenSSL as an executable by running the following command:

make install

Per confermare di aver installato correttamente OpenSSL nel sistema, eseguire il comando seguente e assicurarsi di ottenere lo stesso output.To confirm that you've successfully installed OpenSSL on your system, run the following command and check to make sure you get the same output.

/usr/local/openssl/bin/openssl version

In caso affermativo, si dovrebbe vedere il messaggio seguente.If successful you should see the following message.

OpenSSL 1.1.0e 7 Apr 2014

Per WindowsFor Windows

L'installazione di OpenSSL in un PC Windows può essere eseguita nei modi seguenti:Installing OpenSSL on a Windows PC can be done in the following ways:

  1. (Scelta consigliata) Usando la funzionalità Bash per Windows disponibile in Windows 10 e versioni successive, OpenSSL viene installato per impostazione predefinita.(Recommended) Using the built-in Bash for Windows functionality in Window 10 and above, OpenSSL is installed by default. Le istruzioni su come abilitare la funzionalità Bash per Windows in Windows 10 sono disponibili qui.Instructions on how to enable Bash for Windows functionality in Windows 10 can be found here.
  2. Tramite il download di un'applicazione Win32/64 bit fornita dalla community.Through downloading a Win32/64 application provided by the community. Pur non fornendo o avallando eventuali programmi di installazione di Windows specifici, OpenSSL Software Foundation offre un elenco dei programmi di installazione disponibili qui.While the OpenSSL Software Foundation does not provide or endorse any specific Windows installers, they provide a list of available installers here.

Decodificare il file del certificatoDecode your certificate file

Il file CA radice scaricato è in formato crittografato.The downloaded Root CA file is in encrypted format. Usare OpenSSL per decodificare il file del certificato.Use OpenSSL to decode the certificate file. Per farlo, eseguire questo comando OpenSSL:To do so, run this OpenSSL command:

openssl x509 -inform DER -in BaltimoreCyberTrustRoot.crt -text -out root.crt

Connessione al Database di Azure per PostgreSQL con autenticazione del certificato SSLConnecting to Azure Database for PostgreSQL with SSL certificate authentication

Ora che il certificato è stato decodificato correttamente, è possibile connettersi al server di database in modo protetto tramite SSL.Now that you have successfully decoded your certificate, you can now connect to your database server securely over SSL. Per consentire la verifica dei certificati server, il certificato deve essere posizionato nel file ~/.postgresql/root.crt nella directory home dell'utente.To allow server certificate verification, the certificate must be placed in the file ~/.postgresql/root.crt in the user's home directory. Su Microsoft Windows il file è denominato % APPDATA%\postgresql\root.crt.(On Microsoft Windows the file is named %APPDATA%\postgresql\root.crt.). Di seguito vengono fornite le istruzioni per connettersi al Database di Azure per PostgreSQL.The following provides instructions for connecting to Azure Database for PostgreSQL.

Nota

Attualmente si verifica un problema noto se si usa "sslmode = verify-full" nella connessione al servizio, ovvero la connessione avrà esito negativo con un errore indicante che il certificato del server per "<area>.control.database.windows.net" (e 7 altri nomi) non corrisponde al nome host "<servername>.postgres.database.azure.com".Currently, there is a known issue if you use "sslmode=verify-full" in your connection to the service, the connection will fail with the following error: server certificate for "<region>.control.database.windows.net" (and 7 other names) does not match host name "<servername>.postgres.database.azure.com". Se è obbligatorio usare la modalità "sslmode=verify-full", usare la convenzione di denominazione server <nomeserver>.database.windows.net come nome host nella stringa di connessione.If "sslmode=verify-full" is required, please use the server naming convention <servername>.database.windows.net as the host name in your connection string. In futuro questa limitazione verrà rimossa.We plan to remove this limitation in the future. Le connessioni che usano altre modalità SSL devono continuare a usare la convenzione di denominazione host preferita <nomeserver>.postgres.database.azure.com.Connections using other SSL modes should continue to use the preferred host naming convention <servername>.postgres.database.azure.com.

Uso dell'utilità della riga di comando PSQLUsing psql command-line utility

L'esempio seguente illustra come connettersi al server PostgreSQL tramite l'utilità della riga di comando PSQL.The following example shows how to successfully connect to your PostgreSQL server using the psql command-line utility. Usare il file root.crt creato e sslmode=verify-ca o l'opzione sslmode=verify-full.Use the root.crt file created and the sslmode=verify-ca or sslmode=verify-full option.

Usando l'interfaccia della riga di comando di PostgreSQL, eseguire il comando seguente:Using the PostgreSQL command-line interface, execute the following command:

psql "sslmode=verify-ca sslrootcert=root.crt host=mypgserver-20170401.postgres.database.azure.com dbname=postgres user=mylogin@mypgserver-20170401"

Se l'operazione va a buon fine, si dovrebbe ottenere l'output seguente:If successful, you receive the following output:

Password for user mylogin@mypgserver-20170401:
psql (9.6.2)
WARNING: Console code page (437) differs from Windows code page (1252)
     8-bit characters might not work correctly. See psql reference
     page "Notes for Windows users" for details.
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=>

Uso dello strumento GUI pgAdminUsing pgAdmin GUI tool

La configurazione di pgAdmin 4 per connettersi in modo sicuro tramite SSL richiede l'impostazione di SSL mode = Verify-CA o SSL mode = Verify-Full nel modo indicato di seguito:Configuring pgAdmin 4 to connect securely over SSL requires you to set the SSL mode = Verify-CA or SSL mode = Verify-Full as follows:

Schermata di pgAdmin - connessione - modalità SSL richiesta

Passaggi successiviNext steps

Esaminare varie opzioni di connettività dell'applicazione come descritto nell'articolo Raccolte connessioni per Database di Azure per PostgreSQL.Review various application connectivity options following Connection libraries for Azure Database for PostgreSQL.