标签: x509certificate2

使用主题密钥标识符创建自签名证书

我想创建一个带有主题密钥标识符的 RSA 算法密钥大小 2048 的自签名证书。我知道我们在openssl.conf. 我想改变什么?

genrsa -des3 -out mcedt.key 2048
req -new -key mcedt.key -out mcedt.csr
CN = server.test , OU =, O =, L = Toronto, S = ontario , C = can
x509 -req -days 365 -in mcedt.csr -signkey mcedt.key -out mcedt.crt
pkcs12 -export -in mcedt.crt -inkey mcedt.key -out mcedt.pfx
Run Code Online (Sandbox Code Playgroud)

openssl ssl-certificate x509certificate2

1
推荐指数
1
解决办法
1万
查看次数

使用VB.NET安装x509证书

通过vb.net在系统中安装x509证书时出现问题。

安装本身是成功的,但是当我通过代码进行安装时,确实在“证书管理”窗口中获得了一个条目,如下所示:

在此处输入图片说明

但是,当我在“证书管理”窗口中使用导入功能手动安装它时,确实在此证书的列表中得到两个条目:

在此处输入图片说明

我面临的问题是,当我使用此证书执行某些任务(将某些信息传递给第三方服务)时,它仅在手动导入时才有效(证书列表中有两个条目)。看起来像通过代码安装证书时,它没有完全安装。我对用于安装证书的代码进行了大量研究,看起来很简单:

    With ofd
            .Title = "Select Certificate"
            .FileName = ""
            .CheckFileExists = True
            If .ShowDialog <> Windows.Forms.DialogResult.Cancel Then
                Dim cert As New X509Certificate2(.FileName, "xxxxxxx", X509KeyStorageFlags.UserKeySet)
                Dim certStore As New X509Store(StoreName.My, StoreLocation.CurrentUser)
                certStore.Open(OpenFlags.ReadWrite)
                certStore.Add(cert)
                certStore.Close()
            End If
        End With
Run Code Online (Sandbox Code Playgroud)

我想念什么吗?

vb.net x509certificate2

1
推荐指数
1
解决办法
2157
查看次数

像浏览器一样过滤客户端证书

我有一个智能卡读卡器。当我尝试访问接受客户端证书的网站时,浏览器会向我提供包含 2 或 3 个客户端证书的列表。

所有这些证书选项都与我的机器上使用的卡密切相关。

当我尝试通过 .NET 中的 X509Store 类访问这些选项时,我得到了 256 个选项。对于用户来说太多了,无法分类!

X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
Run Code Online (Sandbox Code Playgroud)

大多数用户不应选择以星号开头的证书,因此我可以轻松过滤掉 80% 左右的证书。例如:

*.amazonaws.com *.slashdotmedia.com *.msedge.net

我的问题是:如何将选项缩小到可管理的级别,例如我的浏览器(chrome),但来自 .NET ?

.net c# x509certificate2 x509certificate x509

1
推荐指数
1
解决办法
743
查看次数

以编程方式从 PFX 文件加载 X509Certificate2 时出现 CryptographicException:

在 tmpAEC4.pfx 文件中,我在此消息的底部设置了表示证书的内容。当我尝试实例化 X509Certificate2 时:

var data = File.ReadAllBytes(@"C:\Temp\tmpAEC4.pfx");
new X509Certificate2(data, "9G8U922PWY");
Run Code Online (Sandbox Code Playgroud)

我收到以下异常

(System.Security.Cryptography.CryptographicException: 'An error occurred during encode or decode operation.):
Run Code Online (Sandbox Code Playgroud)

密码正确,就像我手动导入pfx一样,它可以工作。任何的想法?

证书:

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 …
Run Code Online (Sandbox Code Playgroud)

cryptographicexception pfx x509certificate2

1
推荐指数
1
解决办法
932
查看次数

.NET Core应用程序中是否可以从AWS Certificate Manager检索证书并在HttpClient帖子中使用它?

我的.Net核心应用程序使用HttpClient向外部Web服务发出发布请求。外部Web服务需要证书进行验证。

证书安装在AWS中,并且我有一个指向证书的ARN。

是否可以通过编程方式从AWS Certificate Manager获取证书并在我的HtppClient中使用它,例如,这是我通常用来添加证书但我需要从AWS获得证书的代码。

   private HttpClientHandler HttpClientHandler()
   {
        var handler = new HttpClientHandler
        {
            ClientCertificateOptions = ClientCertificateOption.Manual,
            SslProtocols = SslProtocols.Tls12
        };
        handler.ClientCertificates.Add(new X509Certificate2("cert.crt")); //TODO: fetch from AWS.
        return handler;
    }
Run Code Online (Sandbox Code Playgroud)

x509certificate2 aws-sdk .net-core aws-certificate-manager

1
推荐指数
1
解决办法
600
查看次数

如何获取私钥作为从 azure key Vault 获取的受密码保护的 pfx 的 Byte[]

我正在使用 GetSecretAsync() 方法从 Azure Key Vault 获取证书,然后我希望最终获得私钥和证书的 byte[]。

我的应用程序位于 .netcore3.1 这是我的代码的样子:

var certWithPrivateKey = Client.GetSecretAsync(ConfigurationSettings.AppSettings["AKVEndpoint"], ConfigurationSettings.AppSettings["CertName"]).GetAwaiter().GetResult();
var privateKeyBytes = Convert.FromBase64String(certWithPrivateKey.Value);

X509Certificate2 x509Certificate = new X509Certificate2(privateKeyBytes);
var privateKey = x509Certificate.GetRSAPrivateKey() as RSA;
Run Code Online (Sandbox Code Playgroud)

我得到了 RSACng 类型的有效私钥,但任何操作(尝试过 ExportRSAPrivateKey())都会引发“'privateKey.ExportRSAPrivateKey()' 引发类型为 'Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException'” 的错误和“The不支持请求的操作。”

我不知道接下来如何继续获取私钥和​​证书的字节[]。

c# cryptography x509certificate2 .net-core private-key

1
推荐指数
1
解决办法
1852
查看次数

如何在 .NET 中加载证书请求并从中创建证书

我想从其序列化形式加载证书请求 (CSR) 并对其进行签名。这在纯 .NET 中可能吗?

CSR 如下所示:

-----BEGIN CERTIFICATE REQUEST-----
MIIDejCCAmICAQAwZTE0MDIGCgmSJom....
-----END CERTIFICATE REQUEST-----
Run Code Online (Sandbox Code Playgroud)

它是使用 .NET 4.7.2 生成的CertificateRequest,类似于这个问题的答案: Generate and Sign Certificate Request using pure .net Framework

然后将序列化的 CSR 发送到需要创建证书的服务器 - 问题是如何做到这一点。

.net certificate x509certificate2

1
推荐指数
1
解决办法
295
查看次数

将.pfx证书附加到exe文件

我必须将软件部署到n个客户端,这些客户端将安装证书并使用它.我不想只部署两个文件(.pfx和exe)(包含.pfx的.exe).

我现在正在做的是从一个位置导入证书.

X509Certificate2^ x509 = gcnew X509Certificate2;
x509->Import( "C:\\Tmp\\certficate.pfx" );
Run Code Online (Sandbox Code Playgroud)

可能吗 ?

exe c++-cli certificate x509certificate2 visual-studio

0
推荐指数
1
解决办法
6657
查看次数

从AD Server检索X509证书

我们有什么方法可以使用AD服务器中的c#来获取X509公共证书来加密电子邮件.现在我正在使用本地商店提取证书和加密邮件.

static public X509Certificate2 GetRecipientCertPublic(string recipientName)
{  
    X509Store storeAddressBook =
        new X509Store(StoreName.AddressBook, StoreLocation.CurrentUser);
    storeAddressBook.Open(OpenFlags.ReadOnly);

    X509Certificate2Collection certColl =
        storeAddressBook.Certificates.Find(X509FindType.FindBySubjectName, recipientName, false);
    storeAddressBook.Close();

    if (certColl.Count != 0)
    {

        return certColl[0];
    }
    else
    {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

正如我所看到的Outlook中的行为不同.即使Recipeint的公共证书不在本地机器证书管理器中.它能够从组织的中心服务器或广告服务器(我不是很确定)中获取公共证书并发送加密邮件.

c# encryption certificate x509certificate2 x509certificate

0
推荐指数
1
解决办法
2935
查看次数

使用 X509Certificate2 验证证书密码

我想验证证书密码。此时我有基于处理 CryptographicException 和检查异常消息的代码。但这种方法取决于英语文化信息。

    public bool VerifyPassword(byte[] fileContent, string password)
    {
        try
        {
            var certificate = new X509Certificate2(fileContent, password);
        }
        catch (CryptographicException ex)
        {
            if (ex.Message.StartsWith("The specified network password is not correct."))
            {
                return false;
            }

            throw;
        }

        return true;
    }
Run Code Online (Sandbox Code Playgroud)

我一直在寻找如何验证证书密码的其他解决方案,但没有成功。

如何验证证书密码的正确方法是什么?

我很感激任何想法......

.net exception-handling certificate x509certificate2

0
推荐指数
1
解决办法
3667
查看次数

asp.net core 2.0中的WCF-无法使用授权建立SSL / TLS安全通道的信任关系

以前,我有一个面向应用程序的框架4.5.1,并使用Web Reference添加了WCF服务。这可以完美运行,并且能够通过服务器成功进行身份验证。

旧代码:

ServicePointManager.Expect100Continue = false;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

IService orderService = new Service();

// private method to load certificate
var cert = LoadCertificate(@"....\00050._.1.p12", "pwd");

oIPGApiOrderService.ClientCertificates.Add(cert);

oIPGApiOrderService.Url = @"service_url";

NetworkCredential nc = new NetworkCredential("username", "pwd");
oIPGApiOrderService.Credentials = nc;
Run Code Online (Sandbox Code Playgroud)

现在,我要升级到.net core 2.0,并以.net standard 2.0为目标。我已经添加了该服务正在使用服务引用(连接的服务)。生成的代码已更改,其中使用了通道工厂等。

新代码:

ServicePointManager.Expect100Continue = false;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

System.ServiceModel.BasicHttpBinding result = new System.ServiceModel.BasicHttpBinding();
result.MaxBufferSize = int.MaxValue;
result.ReaderQuotas = System.Xml.XmlDictionaryReaderQuotas.Max;
result.MaxReceivedMessageSize = int.MaxValue;
result.AllowCookies = true;
result.Security.Mode = System.ServiceModel.BasicHttpSecurityMode.Transport;

IService client = new Service(result, new EndpointAddress("service_url"));

client.ClientCredentials.ClientCertificate.Certificate = new …
Run Code Online (Sandbox Code Playgroud)

c# asp.net wcf x509certificate2 asp.net-core

0
推荐指数
1
解决办法
1180
查看次数

如何从.net中的字符串中读取X509签名证书内容?

我在一个字符串里面有X509签名证书,如:

var signingCertificate = -----BEGIN CERTIFICATE-----\r\nMIICTjCCAbegAw.........-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

现在我想阅读这个证书的内容.我知道我们可以使用X509Certificate2对象,但直接从文件读取.反正有没有从字符串中读取内容?

asp.net ssl-certificate x509certificate2 x509certificate asp.net-core

-1
推荐指数
1
解决办法
498
查看次数

这是什么"|" (管道)是指C#?

在Security Cryptography X509Certificates的上下文中,我在其中一个项目代码中遇到了这个问题.

X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
Run Code Online (Sandbox Code Playgroud)

这是什么"|" 管意味着什么?

.net c# x509certificate2

-2
推荐指数
1
解决办法
72
查看次数