При попытке загрузить сертификат X509 я получаю исключение аргумента: можно преобразовать только целое число.C#

Место общения программистов C#
Ответить
Anonymous
 При попытке загрузить сертификат X509 я получаю исключение аргумента: можно преобразовать только целое число.

Сообщение Anonymous »

Я пытаюсь загрузить действительный X509, чтобы использовать эту функцию

Код: Выделить всё

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
Есть идеи, что я делаю неправильно? Или гораздо более простая идея: как я могу создать сертификат, который будет работать с функцией AuthenticateAsServer?
РЕДАКТИРОВАТЬ: Я подтвердил, что это проблема UNITY. Если я использую ту же самую строку кода в приложении dotnet, я не получу исключения. Однако мне не повезло, потому что, похоже, НЕТ способа загрузить сертификат с закрытым ключом в единстве.

Подробнее здесь: https://stackoverflow.com/questions/790 ... only-integ
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»