Как я могу установить безопасное соединение в качестве сервера в Unity (SSL)?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу установить безопасное соединение в качестве сервера в Unity (SSL)?

Сообщение Anonymous »

Моя основная проблема заключается в том, что я не могу загрузить X509Certificate2, чтобы использовать SSL-шифрование в Unity.
Сейчас я использую Unity Editor 2021.3.5f1. Изменение версии Unity для меня не является жизнеспособным решением.
Итак, что я пробовал.
  • Загрузка сертификат прямо вверх:

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

X509Certificate2 serverCertificate = new X509Certificate2("c:/my/path/server_pfx.pfx");
Это не удалось, поскольку я получил исключение формата

FormatException: можно преобразовать только целое число Mono.Security. ASN1Convert.ToInt32

Сертификат создан с помощью

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

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
  • Загрузка сертификата без закрытого ключа и добавление закрытого ключа на C#

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

X509Certificate2 pubOnly = new X509Certificate2("c:/my/path/cert.pem");
// Loading the prviate Key.
string privateKeyPem = File.ReadAllText("c:/my/path/key.pem");
RSA rsa = RSA.Create();
var privateKey = privateKeyPem.Replace("-----BEGIN PRIVATE KEY-----",string.Empty).Replace("-----END PRIVATE KEY-----", string.Empty);
privateKey = privateKey.Replace(Environment.NewLine, string.Empty);
var privateKeyBytes = Convert.FromBase64String(privateKey);
rsa.ImportPkcs8PrivateKey(privateKeyBytes, out int _);

// Now creating the certificate with the private key.
X509Certificate2 pubWithPrivate = pubOnly.CopyWithPrivateKey(rsa);
this.serverCertificate = new
X509Certificate2(pubWithPrivate.Export(X509ContentType.Pfx));
Это также не работает, поскольку rsa.ImportPkcs8PrivateKey выдает исключение PlatformNotSupported.
  • Я пробовал использовать Unity Transport. Версия — 1.0.0.
    Я устанавливаю пакет, но когда дохожу до этой строки кода:

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

var settings = new NetworkSettings();
settings.WithSecureServerParameters(
certificate: SecureParameters.MyGameServerCertificate,
privateKey: SecureParameters.myGameServerPrivateKey
);
Отсюда
Я получаю сообщение об ошибке компиляции, сообщающее, что WithSecureServerParameters не существует. Насколько я могу судить, эта функция доступна в версии 1.0.0 Unity Transport, поэтому я понятия не имею, что делать.
Может ли кто-нибудь подсказать мне, как исправить КАКАЯ-ЛИБО из этих проблем? Или предложите мне что-нибудь еще?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -unity-ssl
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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