Самозаверяющие сертификаты X.509

Я пытаюсь понять больше о цифровых сертификатах X.509. Кажется, вокруг много противоречий. я использую Bouncy Castle сгенерировать пару ключей, используя

public static void SaveToFile(X509Certificate newCert, AsymmetricCipherKeyPair kp, string filePath, string certAlias, string password)
{
    var newStore = new Pkcs12Store();
    var certEntry = new X509CertificateEntry(newCert);
    newStore.SetCertificateEntry(certAlias, certEntry);
    newStore.SetKeyEntry(certAlias, 
          new AsymmetricKeyEntry(kp.Private), new[] { certEntry });

    using (var certFile = File.Create(filePath))
        newStore.Save(certFile, password.ToCharArray(), new SecureRandom(new CryptoApiRandomGenerator()));
}

Это сохраняет сгенерированный сертификат на диск. Некоторые статьи говорят нам, что нет необходимости защищать паролем сертификат, так как нет PRIVATE KEY хранится там. Тогда в этой статье говорится, что сертификат действительно содержит PRIVATE KEY,

Я думаю, у меня есть два вопроса, которые, надеюсь, помогут мне понять это:

  1. Если я сгенерирую свои ключи таким образом, должен ли пароль быть ТАКИМ ЖЕ в качестве парольной фразы для PRIVATE KEY?
  2. Нужно ли распространять сертификат X.509 для подтверждения PUBLIC KEY принадлежит мне (в паре с моим именем в сертификате) или сертификат должен храниться в тайне и секретности PRIVATE KEY а для чего нужен самоподписанный сертификат?

2 ответа

Решение

Файл PKCS#12 может содержать как сертификат, так и закрытый ключ. Они, однако, хранятся как отдельные, отдельные объекты. В самом сертификате есть открытый ключ. Поскольку сертификат содержит только открытый ключ, он также считается "открытым". Вы можете свободно распространять сертификат, так как он не содержит секретного ключа, который следует хранить в тайне. Это основа безопасности в асимметричной криптографии.

Поскольку файл PKCS#12 содержит оба элемента, он зашифрован паролем для защиты закрытого ключа внутри него. При этом вы будете использовать закрытый ключ, чтобы доказать, что распространяемый вами сертификат принадлежит вам. Например, с помощью цифровой подписи на документе.

Надеюсь, это поможет!

Сертификат на самом деле является блоком информации, который связывает вашу личность (например, ваше имя, адрес электронной почты и т. Д.) С каким-либо открытым ключом. Это общедоступно, поэтому каждый может знать, что этот ключ принадлежит вам. Поэтому, когда вы что-то подпишете, они узнают, что на самом деле вы подписали это. Другое дело - проверка сертификата - это то, для чего используются доверенные корневые сертификаты.

Закрытый ключ - это ваша собственная секретная информация, и она ДОЛЖНА храниться в секрете.

Другие вопросы по тегам