como la respuesta de Helephant es el mejor si necesita los valores hash de certificado (es decir, varias direcciones IP en una sola máquina con varios certificados SSL), usted necesita saber cómo obtener los certificados/hashes. Las pocas líneas a continuación muestran cómo encontrar la información, ya que la documentación de MSDN es tan pobre para este tema.
No se puede actualizar de forma remota un enlace SSL utilizando ServerManager.OpenRemote() - parece haber un error con esto. Appcmd tampoco te ayudará.
Si desea convertir una cadena de bytes de nuevo en una matriz de bytes (si se conoce el hash), here's how.
static void Main(string[] args)
{
var store2 = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine);
Console.WriteLine("TrustedPublisher:");
PrintCerts(store2);
Console.WriteLine();
Console.WriteLine("MY:");
store2 = new X509Store(StoreName.My, StoreLocation.LocalMachine);
PrintCerts(store2);
Console.WriteLine();
Console.WriteLine("CertificateAuthority:");
store2 = new X509Store(StoreName.CertificateAuthority, StoreLocation.LocalMachine);
PrintCerts(store2);
Console.WriteLine();
}
static string PrintHash(byte[] cert)
{
StringBuilder builder = new StringBuilder();
foreach (byte b in cert)
{
builder.AppendFormat("{0:x2}", b);
}
return builder.ToString();
}
static void PrintCerts(X509Store store)
{
store.Open(OpenFlags.OpenExistingOnly);
foreach (var cert in store.Certificates)
{
Console.Write("{0} - {1}", cert.FriendlyName, PrintHash(cert.GetCertHash()));
Console.WriteLine();
}
}
Ejemplo de salida:
MI:
www.awesomesite .com - cc2b5fc8216a949b58aadc21089c12b2c090f6bd
Sé que esta es una vieja pregunta, pero he notado que si configuro los valores 'CertificateHash' y' CertificateStoreName' para el enlace y llamo 'CommitChanges' todo supuestamente tiene éxito, pero el enlace no está establecido. No estoy seguro de por qué parece suceder. – Fizz