Certificati e Service Broker

In questo argomento viene descritto l'utilizzo dei certificati per la protezione remota di Service Broker da parte di SQL Server. Il termine protezione remota di Service Broker riguarda le operazioni che coinvolgono più istanze di SQL Server e che utilizzano la protezione del dialogo o la protezione del trasporto.

Panoramica

La funzionalità di protezione remota di Service Broker esegue il mapping di un'operazione dall'esterno di un'istanza a un'entità di database di SQL Server. L'operazione procede quindi nel contesto di protezione dell'entità di database mediante i normali controlli delle autorizzazioni di SQL Server. Quando, ad esempio, arriva un messaggio per una conversazione che utilizza la protezione del dialogo, Service Broker utilizza le informazioni contenute nel messaggio per identificare l'entità di database per il lato remoto della conversazione. SQL Server verifica quindi che l'entità disponga dell'autorizzazione per la connessione al database che ospita il servizio di destinazione e dell'autorizzazione per l'invio di un messaggio al servizio di destinazione.

SQL Server utilizza i certificati per verificare l'identità di un database remoto e per identificare l'entità di database locale per l'operazione. Pertanto, l'installazione di un certificato in SQL Server costituisce un'attestazione di attendibilità del database che contiene la chiave privata del certificato. Si consiglia di gestire con attenzione i certificati installati e le associazioni ai servizi remoti creati.

Nota sulla sicurezzaNota sulla sicurezza

Installare i certificati solo da fonti attendibili. Evitare di distribuire chiavi private.

Per verificare l'identità di un server remoto, SQL Server deve ricevere informazioni decrittografabili mediante la chiave pubblica contenuta in un certificato di proprietà di un'entità di database locale. Se SQL Server è in grado di decrittografare le informazioni, significa che il database remoto contiene la chiave privata corrispondente alla chiave pubblica associata al certificato locale. Dopo la verifica dell'identità di un database remoto da parte di SQL Server, il database remoto può utilizzare le autorizzazioni dell'entità di database locale.

Per la protezione del trasporto ogni database deve considerare attendibile l'altro database. È inoltre possibile utilizzare certificati o l'autenticazione di Windows. Per ulteriori informazioni sulla protezione del trasporto, vedere Protezione del trasporto di Service Broker.

Per la protezione del dialogo l'initiator del dialogo deve considerare attendibile la destinazione ed essere in grado di verificarne l'identità. La destinazione tuttavia può consentire connessioni da initiator che non forniscono informazioni di identificazione. In questo caso gli initiator utilizzano il ruolo public nel database che ospita il servizio di destinazione. Per la protezione del dialogo vengono sempre utilizzati certificati. Per ulteriori informazioni sulla protezione del dialogo, vedere Protezione del dialogo di Service Broker.

SQL Server non include metodi automatici per la configurazione della protezione di Service Broker per mezzo di certificati.

Requisiti per i certificati

Perché sia utilizzabile per la protezione di Service Broker, un certificato deve soddisfare i requisiti seguenti:

  • Le dimensioni del modulo della chiave devono essere inferiori a 2048.

  • La lunghezza totale del certificato deve essere inferiore a 32 KB.

  • Il nome del soggetto deve essere specificato.

  • Le date di validità devono essere specificate.

  • La lunghezza della chiave deve essere un valore multiplo di 64 bit.

Un certificato autofirmato creato con l'istruzione Transact-SQL CREATE CERTIFICATE soddisfa i requisiti riportati nell'elenco precedente. I certificati caricati da un file potrebbero non soddisfare questi requisiti.

Quando viene archiviato in SQL Server, il certificato deve essere crittografato con la chiave master del database. Service Broker non può utilizzare certificati crittografati solo con una password. Inoltre, la chiave master del database deve essere crittografata con la chiave del servizio dell'istanza. In caso contrario, Service Broker non è in grado di aprire la chiave master.

Per consentire a SQL Server l'utilizzo di un certificato per iniziare una conversazione, il certificato deve essere contrassegnato come ACTIVE FOR BEGIN_DIALOG. I certificati sono contrassegnati come ACTIVE FOR BEGIN_DIALOG per impostazione predefinita. È tuttavia possibile scegliere di disattivare temporaneamente un certificato durante l'aggiornamento della configurazione della protezione di un servizio. Per ulteriori informazioni, vedere CREATE CERTIFICATE (Transact-SQL) e ALTER CERTIFICATE (Transact-SQL).