Chrome 58 deprecates certificats auto-signés qui omettent le nom du sujet alternatif (SAN). J'utilise Mono.Security.X509 X509CertificateBuilder() pour créer un certificat pour un service Windows OWIN sur « localhost », qui permet au navigateur de communiquer avec un scanner TWAIN. Le certificat définit actuellement uniquement le nom commun de manière à ce qu'il ne soit pas suffisant pour Chrome 58.Comment définir X509 SubjectAltName (SAN) en utilisant Mono.Security?
Quelle est la méthode correcte pour créer un certificat auto-signé qui permet à Chrome de communiquer avec le service OWIN sur localhost, à l'aide de Mono.Security.X509 ?
RSA subjectKey = new RSACryptoServiceProvider(2048);
X509CertificateBuilder cb = new X509CertificateBuilder(3);
cb.SerialNumber = GenerateSerialNumber();
cb.IssuerName = "CN=localhost";
cb.NotBefore = notBefore;
cb.NotAfter = notAfter;
cb.SubjectName = "CN=localhost";
cb.SubjectPublicKey = subjectKey;
cb.Hash = "SHA256";
byte[] rawcert = cb.Sign(subjectKey);
PKCS12 p12 = new PKCS12();
p12.Password = password;
Hashtable attributes = GetAttributes();
p12.AddCertificate(new X509Certificate(rawcert), attributes);
p12.AddPkcs8ShroudedKeyBag(subjectKey, attributes);
return p12.GetBytes();
Je sauvagement devinai cet ajout « var san = new SubjectAltNameExtension (nouvelle chaîne [0], nouvelle chaîne [1] { "DNS: localhost"}, nouvelle chaîne [1] { "IP: 127.0.0.1"}, nouvelle chaîne [1] { "URI: https: // localhost"}); cb.Extensions.Add (san); ' qui provoque l'erreur _System.FormatException: chaîne d'entrée n'était pas dans un format correct._ – Hintz