8
votes

Comment puis-je générer un fichier .pfx?

existe-t-il un moyen de créer des fichiers .pfx afin de signer des documents, J'ai trouvé un programme appelé Certificat X509 générer, mais je veux savoir si cela peut être généré en code utilisant C #.


4 commentaires

Qu'est-ce qui vous fait penser que vous avez besoin d'un fichier PFX?


Je travaille dans un projet ASP.NET et je dois maintenant cela afin de signer numériquement un document


Signez-vous chaque document avec le même certificat?


Non, c'est ce que j'ai besoin de savoir comment générer les certificats PFX, chaque utilisateur a son propre certificat


6 Réponses :


6
votes

Il existe un outil de ligne de commande Microsoft Makecert qui peut être utilisé pour générer des certificats. Cela fait partie du SDK Windows. Sur ma machine, il y a une demi-douzaine versions par ex. Dans C: \ Program Files (x86) \ microsoft sdks \ windows \ v7.0a \ bin \ x64 . Ensuite, dans votre code, vous pouvez démarrer un processus pour exécuter l'exécutable avec les paramètres appropriés.


0 commentaires

3
votes

Vous pouvez vérifier le API de château Bouncy , il peut être utilisé pour générer des certificats à l'aide de C #.


1 commentaires

Y a-t-il un échantillon d'API BC?



1
votes

Tout d'abord, la signature de documents avec des certificats auto-signés n'a aucun sens, sauf si vous avez une hiérarchie personnalisée PKI dans votre organisation (et dans ce dernier cas, vous devez bien savoir ce que vous faites, ce qui semble ne être pas le cas) .

PFX est un conteneur pour un ou plusieurs certificats avec des clés privées associées. Donc, vous ne générez pas «fichier PFX». Vous générez un clavier et créez un certificat, qui peut ensuite être exporté vers un fichier PFX ou vers un autre format.

Comme mentionné ci-dessus, Bouncycastle peut générer des certificats et notre bibliothèque SecureBlackBox peut également générer des certificats et les enregistrer et les charger de nombreux formats différents.


2 commentaires

Cela a un sens idéal si vous êtes un développeur et que vous souhaitez créer et tester un code qui fonctionnera avec le fichier .pfx.


@Gangnus avant de commenter, veuillez lire le sujet. L'OP ne voulait rien tester. Il souhaite signer des documents pour les utilisateurs (lire les commentaires de l'OP à la question). S'il vous plaît, lisez les réponses dans le contexte de la question et non comme une abstraction.



0
votes

Si vous lisez à propos de MakeCert comme la réponse de @David Clarke fait référence à, vous verrez pour répondre à votre exigence, vous devez juste avoir besoin d'un MakeCert géré écrit dans .NET.

Heureusement, les mono les ont mis en œuvre il y a longtemps,

https://github.com/mono/ Mono / Blob / Master / MCS / Outils / Sécurité / Makecert.cs


0 commentaires

0
votes

Vous pouvez faire de la signature numérique à l'aide d'Adobe Reader

Si vous utilisez Adobe X -Provenir à la 3ème option de gauche -Ceur que vous puissiez voir le réglage de la signature -oper cela et aller à ajouter une pièce d'identité -Juste entrez vos coordonnées et votre fichier .PFX est prêt est prêt où vous l'avez parcouru .... -Il est valable 6 ans


0 commentaires

0
votes

Vous pouvez utiliser bibliothèque openssl.net pour cela.

Voici Exemple de code Comment le faire: P>

    public X509Certificate2 GeneratePfxCertificate(string certificatePath, string privateKeyPath,
        string certificatePfxPath, string rootCertificatePath, string pkcs12Password)
    {
        string keyFileContent = File.ReadAllText(privateKeyPath);
        string certFileContent = File.ReadAllText(certificatePath);
        string rootCertFileContent = File.ReadAllText(rootCertificatePath);

        var certBio = new BIO(certFileContent);
        var rootCertBio = new BIO(rootCertFileContent);

        CryptoKey cryptoKey = CryptoKey.FromPrivateKey(keyFileContent, string.Empty);
        var certificate = new OpenSSL.X509.X509Certificate(certBio);
        var rootCertificate = new OpenSSL.X509.X509Certificate(rootCertBio);

        using (var certChain = new Stack<OpenSSL.X509.X509Certificate> { rootCertificate })
        using (var p12 = new PKCS12(pkcs12Password, cryptoKey, certificate, certChain))
        using (var pfxBio = BIO.MemoryBuffer())
        {
            p12.Write(pfxBio);
            var pfxFileByteArrayContent =
                pfxBio.ReadBytes((int)pfxBio.BytesPending).Array;

            File.WriteAllBytes(certificatePfxPath, pfxFileByteArrayContent);
        }

        return new X509Certificate2(certificatePfxPath, pkcs12Password);
    }


0 commentaires