Pergunta

Eu estou tentando descobrir se existe alguma maneira de ter um cliente .NET usar um certificado de cliente sem envolver o armazenamento de chaves do Windows de forma alguma.

Eu tenho um trecho de código como este:

test1.Service s = new test1.Service();
X509Certificate c = X509Certificate.CreateFromCertFile(@"C:\test.pem");
s.ClientCertificates.Add(c);
int result = s.TestMethod();

No entanto, isso só funciona se eu também tenho o certificado referenciado no "test.pem" instalado em meu armazenamento de certificados. Suponho que isso é porque a chave é necessário para a negociação. Se eu não tiver o certificado / chave na loja, o certificado não é enviado com o pedido.

O que eu quero fazer é ser capaz de fornecer o certificado ea chave privada a partir de um arquivo ou arquivos e não envolvem o armazenamento de certificados do Windows de forma alguma.

Existe alguma maneira de fazer isso?

Foi útil?

Solução

Eu estou indo para postar uma resposta ao meu post, mas vai deixá-la aberta para ver se os outros podem resolvê-lo diferente.

Basicamente, eu estou punting. Se você tem um arquivo PKCS12 (com ambos chave e cert no mesmo) você pode usar a classe X509Certificate2 para carregar esse arquivo e usá-lo, e ele não vai interrogar o armazenamento de chaves.

Eu não poderia encontrar uma maneira de fazer isso com chave PEM plano e arquivos cert (como o que você precisa com Python, por exemplo).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top