2017-05-02 3 views
0

Chromeは、主語代替名(SAN)を省略した自己署名証明書を非推奨にしました。 Mono.Security.X509 X509CertificateBuilder()を使用して、ブラウザがTWAINスキャナと通信できるようにする 'localhost'上のWindows OWINサービスの証明書を作成します。証明書は現在、一般名のみを設定してChrome 58には不十分です。Mono.Securityを使ってX509 SubjectAltName(SAN)を設定するには?

ChromeがMono.Security.X509を使用してローカルホスト上のOWINサービスと通信できるようにする自己署名証明書を作成する正しい方法?

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(); 
+0

、Jexusマネージャでこれをテストしました"DNS:localhost"}、新しい文字列[1] {"IP:127.0.0.1"}、新しい文字列[1] {"URI:https:// localhost"}); cb.Extensions.Add(san); 'エラー_System.FormatExceptionが発生します:入力文字列が正しい形式ではありません。 – Hintz

答えて