2017-02-10 1 views
0

Comment puis-je prendre un certificat X509 existant, faire une copie exacte et modifier le contenu à des fins de test? Le type de choses que je voudrais modifier est d'invalider la signature, changer les parties du champ objet, changer le champ d'extension des politiques de certification, changer le champ d'extension Contraintes de base, le définir comme expiré, etc.Prendre un certificat existant et manipuler le contenu

Existe-t-il des fonctionnalités existantes? (Java) qui me permet de faire cela?

+2

Le [X509V3CertificateBuilder] (https://www.bouncycastle.org/docs/pkixdocs1.5on/org/bouncycastle/cert/X509v3CertificateBuilder.html) est la chose la plus proche de ce que vous vouloir. Vous pouvez copier les champs que vous voulez du certificat d'origine. La signature ne sera plus valide une fois que vous aurez changé quoi que ce soit, mais vous pouvez signer le cert modifié avec votre propre clé privée si vous ne faites que des expériences. –

Répondre

0

Un certificat est signé numériquement par l'autorité de certification émettrice (ou auto-signé). Toute modification du contenu invalidera la signature, donc si vous faites une copie d'un certificat existant pour changer certains attributs, vous aurez besoin d'une nouvelle signature

Si vous possédez la clé privée, vous pouvez demander un nouveau certificat à l'AC en utilisant la même clé publique, mais avec des champs différents. Vous pouvez également le signer avec votre propre autorité de certification ou, s'il s'agit d'une signature personnelle, le signer avec la clé privée.

À des fins de test, vous pouvez créer vos propres certificats avec Bouncycastle. Par exemple, vous pouvez utiliser le code de Self signed X509 Certificate with Bouncy Castle in Java

2

Je ne suis pas sûr que vous puissiez réellement faire ceci ... une partie de l'avantage des certificats comme ceux-ci est qu'ils ne peuvent pas être falsifiés et modifiés.

Ne pouvez-vous pas simplement créer votre propre test? Il serait probablement plus facile d'essayer de modifier un existant.

Je peux me tromper sur celui-ci, mais je ne suis pas au courant de toute façon de le faire.