Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa sezione illustra la sicurezza del trasporto di Messaggistica in coda (MSMQ), utilizzabile per proteggere i messaggi inviati a una coda.
Annotazioni
Prima di leggere questo argomento, è consigliabile leggere Concetti relativi alla sicurezza.
La figura seguente fornisce un modello concettuale di comunicazione in coda tramite Windows Communication Foundation (WCF). Questa illustrazione e terminologia viene usata per spiegare i concetti di sicurezza del trasporto.
Quando si inviano messaggi in coda tramite WCF con NetMsmqBinding, il messaggio WCF viene associato come corpo del messaggio MSMQ. La sicurezza del trasporto protegge l'intero messaggio MSMQ (intestazioni o proprietà del messaggio MSMQ e il corpo del messaggio). Poiché è il corpo del messaggio MSMQ, l'uso della sicurezza del trasporto protegge anche il messaggio WCF.
Il concetto chiave alla base della sicurezza del trasporto è che il client deve soddisfare i requisiti di sicurezza per portare il messaggio nella coda di destinazione. A differenza della sicurezza dei messaggi, in cui il messaggio è protetto per l'applicazione che riceve il messaggio.
La sicurezza del trasporto tramite NetMsmqBinding e MsmqIntegrationBinding influisce su come i messaggi MSMQ vengono protetti durante il transito tra la coda di trasmissione e la coda di destinazione, dove "protetti" implica:
Firma del messaggio per assicurarsi che non venga manomesso.
Crittografia del messaggio per assicurarsi che non sia possibile visualizzarla o manometterla. Questa opzione è consigliata, ma facoltativa.
Il gestore delle code di destinazione che consente di identificare il mittente del messaggio per evitare il ripudio.
In MSMQ, indipendentemente dall'autenticazione, la coda di destinazione dispone di un elenco di controllo di accesso (ACL) per verificare se il client dispone dell'autorizzazione per inviare il messaggio alla coda di destinazione. L'applicazione ricevente è anche verificata per l'autorizzazione a ricevere il messaggio dalla coda di destinazione.
Proprietà di sicurezza del trasporto MSMQ WCF
MSMQ usa la sicurezza di Windows per l'autenticazione. Usa l'identificatore di sicurezza di Windows (SID) per identificare il client e usa il servizio directory di Active Directory come autorità di certificazione durante l'autenticazione del client. Ciò richiede l'installazione di MSMQ con l'integrazione di Active Directory. Poiché il SID del dominio Windows viene usato per identificare il client, questa opzione di sicurezza è significativa solo quando il client e il servizio fanno parte dello stesso dominio Windows.
MSMQ offre anche la possibilità di allegare un certificato con il messaggio che non è registrato con Active Directory. In questo caso, garantisce che il messaggio sia stato firmato usando il certificato allegato.
WCF fornisce entrambe queste opzioni come parte della sicurezza del trasporto MSMQ e sono l'elemento cruciale per la sicurezza del trasporto.
Per impostazione predefinita, la sicurezza del trasporto è attivata.
Considerando queste nozioni di base, nelle sezioni seguenti vengono descritte in dettaglio le proprietà di sicurezza del trasporto associate a NetMsmqBinding e MsmqIntegrationBinding.
Modalità di autenticazione MSMQ
MsmqAuthenticationMode Determina se usare la sicurezza del dominio Di Windows o una sicurezza basata su certificati esterni per proteggere il messaggio. In entrambe le modalità di autenticazione, il canale di trasporto in coda WCF usa l'oggetto CertificateValidationMode specificato nella configurazione del servizio. La modalità di convalida del certificato specifica il meccanismo usato per verificare la validità del certificato.
Quando la sicurezza del trasporto è attivata, l'impostazione predefinita è WindowsDomain.
Modalità di autenticazione del dominio Di Windows
La scelta di usare la sicurezza di Windows richiede l'integrazione di Active Directory.
WindowsDomain è la modalità di sicurezza del trasporto predefinita. Quando questa opzione è impostata, il canale WCF collega il SID di Windows al messaggio MSMQ e usa il certificato interno ottenuto da Active Directory. MSMQ usa questo certificato interno per proteggere il messaggio. Il gestore code ricevente usa Active Directory per cercare e trovare un certificato corrispondente per autenticare il client e verifica che il SID corrisponda anche a quello del client. Questo passaggio di autenticazione viene eseguito se un certificato, generato internamente in caso di WindowsDomain modalità di autenticazione o generato esternamente nel caso della modalità di Certificate autenticazione, viene collegato al messaggio anche se la coda di destinazione non è contrassegnata come che richiede l'autenticazione.
Annotazioni
Quando si crea una coda, è possibile contrassegnare la coda come coda autenticata per indicare che la coda richiede l'autenticazione del client che invia messaggi alla coda. In questo modo non vengono accettati messaggi non autenticati nella coda.
Il SID collegato al messaggio viene usato anche per verificare l'ACL della coda di destinazione per assicurarsi che il client disponga dell'autorità per inviare messaggi alla coda.
Modalità di autenticazione del certificato
La scelta dell'uso della modalità di autenticazione del certificato non richiede l'integrazione di Active Directory. In alcuni casi, ad esempio quando MSMQ è installato in modalità gruppo di lavoro (senza integrazione di Active Directory) o quando si usa il protocollo di trasferimento SRMP (SOAP Reliable Messaging Protocol) per inviare messaggi alla coda, funziona solo Certificate .
Quando si invia un messaggio WCF con Certificate, il canale WCF non collega un SID Windows al messaggio MSMQ. Di conseguenza, l'ACL della coda di destinazione deve consentire Anonymous all'utente di accedere all'invio alla coda. Il gestore delle code di ricezione controlla se il messaggio MSMQ è stato firmato con il certificato, ma non esegue alcuna autenticazione.
Il certificato con le relative attestazioni e le informazioni sull'identità viene popolato dal canale di trasporto in coda WCF in ServiceSecurityContext. Il servizio può usare queste informazioni per eseguire la propria autenticazione del mittente.
Livello di protezione MSMQ
Il livello di protezione determina come proteggere il messaggio MSMQ per assicurarsi che non venga manomesso. Viene specificato nella MsmqProtectionLevel proprietà . Il valore predefinito è Sign.
Livello di protezione dei segni
Il messaggio MSMQ viene firmato usando il certificato generato internamente quando si usa WindowsDomain la modalità di autenticazione o un certificato generato esternamente quando si usa la Certificate modalità di autenticazione.
Livello di protezione della firma e della crittografia
Il messaggio MSMQ viene firmato usando il certificato generato internamente quando si usa WindowsDomain la modalità di autenticazione o il certificato generato esternamente quando si usa la Certificate modalità di autenticazione.
Oltre a firmare il messaggio, il messaggio MSMQ viene crittografato usando la chiave pubblica del certificato ottenuto da Active Directory che appartiene al gestore code ricevente che ospita la coda di destinazione. Il gestore della coda di invio garantisce che il messaggio MSMQ sia crittografato in transito. Il gestore code ricevente decrittografa il messaggio MSMQ usando la chiave privata del certificato interno e archivia il messaggio nella coda (se autenticato e autorizzato) in testo non crittografato.
Annotazioni
Per crittografare il messaggio, è necessario l'accesso ad Active Directory (la proprietà UseActiveDirectory di NetMsmqBinding deve essere impostata su true) e può essere usata con entrambi Certificate e WindowsDomain.
Livello di protezione Nessuno
Ciò è implicito quando MsmqProtectionLevel è impostato su None. Non può essere un valore valido per altre modalità di autenticazione.
Annotazioni
Se il messaggio MSMQ è firmato, MSMQ controlla se il messaggio è firmato con il certificato allegato (interno o esterno) indipendentemente dallo stato della coda, ovvero dalla coda autenticata o meno.
Algoritmo di crittografia MSMQ
L'algoritmo di crittografia specifica l'algoritmo da usare per crittografare il messaggio MSMQ in transito. Questa proprietà viene utilizzata solo se MsmqProtectionLevel è impostata su EncryptAndSign.
Gli algoritmi supportati sono RC4Stream e AES il valore predefinito è RC4Stream.
È possibile usare l'algoritmo AES solo se il mittente dispone di MSMQ 4.0 installato. Inoltre, la coda di destinazione deve essere ospitata anche in MSMQ 4.0.
Algoritmo hash MSMQ
L'algoritmo hash specifica l'algoritmo utilizzato per creare una firma digitale del messaggio MSMQ. Il gestore della coda ricevente usa questo stesso algoritmo per autenticare il messaggio MSMQ. Questa proprietà viene utilizzata solo se MsmqProtectionLevel è impostata su Sign o EncryptAndSign.
Gli algoritmi supportati sono MD5, SHA1, SHA256e SHA512. Il valore predefinito è SHA1.
A causa di problemi di collisione con MD5/SHA1, Microsoft consiglia SHA256 o superiore.