Quan s'estableix una comunicació amb un servidor es pot fer xifrada. Actualment gairebé totes les connexions són xifrades, es coneix com SSL. En una connexió SSL normalment s'identifica el servidor, el client que es connecta no. Però els servidors poden anar un pas més enllà i demanar al client que s'identifiqui. Això es coneix amb varis noms, 2-way SSL, 2WSSL o Mutual authentication.
Quan es programa s'ha de tenir en compte que calen uns passos extra per configurar la connexió. Cal afegir un certificat que identifiqui al client i que alguna CA (certificate authority) del servidor validi (reconegui). El curiós és que el certificat acostuma a estar guardat en un fitxer P12, però un contenidor P12 pot tenir més d'un al seu interior. No he trobat en la llibreria C# d'accés al P12 cap forma d'accedir posant el nom del certificat. Així que millor posar un P12 que contingui un únic certificat. Les variables CertStorageP12, PwdCertStorage són la ruta d'accés al fitxer (el path amb el nom del fitxer) i la contrasenya.
HttpWebRequest req = WebRequest.CreateHttp(URL);
X509Certificate2 cert = null;
X509CertificateCollection certColl = null;
cert = new X509Certificate2(CertStorageP12, PwdCertStorage, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
certColl = new X509CertificateCollection();
certColl.Add(cert);
req.ClientCertificates = certColl;
req.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequired;
|