Код: Выделить всё
sslStream.AuthenticateAsServer(serverCertificate, clientCertificateRequired: false, checkCertificateRevocation: true);
Код: Выделить всё
serverCertificate = new X509Certificate("c:/my/path/server_pfx.pfx");
FormatException: можно преобразовать только целое число
Mono.Security.ASN1Convert.ToInt32 (Mono.Security.ASN1 asn1) (по адресу :0)
Mono.Security.X509.PKCS12.Decrypt (Mono.Security.PKCS7+EncryptedData ed) (по адресу :0)
Mono.Security.X509.PKCS12.Decode (данные System.Byte[]) (at :0)
Mono.Security.X509.PKCS12..ctor (System. Данные Byte[], пароль System.String) (в :0)
System.Security.Cryptography.X509Certificates.X509Certificate2ImplMono.ImportPkcs12 (System.Byte[] rawData, System.String пароль) (в :0 )
System.Security.Cryptography.X509Certificates.X509Certificate2ImplMono.ImportPkcs12 (System.Byte[] rawData, пароль Microsoft.Win32.SafeHandles.SafePasswordHandle) (в :0)
System.Security.Cryptography.X509Certificates. X509Certificate2ImplMono..ctor (System.Byte[] rawData, Microsoft.Win32.SafeHandles.SafePasswordHandle пароль, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags) (at:0)
Mono.X509PalImpl.ImportFallback (System. Байт [] данные, пароль Microsoft.Win32.SafeHandles.SafePasswordHandle, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags) (at :0)
Mono.X509PalImplMono.Import (System.Byte[] данные, Microsoft.Win32. Пароль SafeHandles.SafePasswordHandle, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags) (at :0)
Mono.SystemCertificateProvider.Import (данные System.Byte[], Microsoft.Win32.SafeHandles.SafePasswordHandle пароль, System.Security .Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags, Mono.CertificateImportFlags importFlags) (at :0)
Mono.SystemCertificateProvider.Mono.ISystemCertificateProvider.Import (данные System.Byte[], Microsoft.Win32.SafeHandles.SafePasswordHandle пароль, System. Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags, Mono.CertificateImportFlags importFlags) (at:0)
System.Security.Cryptography.X509Certificates.X509Helper.Import (System.Byte[] rawData, Microsoft.Win32.SafeHandles.SafePassword Обработать пароль , System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags) (в :0)
System.Security.Cryptography.X509Certificates.X509Certificate..ctor (System.String fileName, System.String пароль, System.Security.Cryptography. X509Certificates.X509KeyStorageFlags keyStorageFlags) (в :0)
System.Security.Cryptography.X509Certificates.X509Certificate..ctor (System.String fileName) (в :0)
Server.Start () (в Assets/ Scripts/Server.cs:32)
Сертификат был создан следующим образом:
Код: Выделить всё
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -sha256 -keyout key.pem -out cert.pem
openssl pkcs12 -export -in cert.pem -inkey key.pem -out server_pfx.pfx -macalg sha1
РЕДАКТИРОВАТЬ: Я подтвердил, что это проблема UNITY. Если я использую ту же самую строку кода в приложении dotnet, я не получу исключения. Однако мне не повезло, потому что, похоже, НЕТ способа загрузить сертификат с закрытым ключом в единстве.
Подробнее здесь: https://stackoverflow.com/questions/790 ... only-integ
Мобильная версия