Столкновение с проблемой при создании инструмента сертификации с использованием JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Столкновение с проблемой при создании инструмента сертификации с использованием Java

Сообщение Anonymous »

Номер DEA, связанный с сертификатом, может храниться в расширении 1.2.16.840.1.101.3.5.7 как DER, кодированная ASN.1. До этого момента не удалось выяснить, что такое фактическая структура и как ее можно воссоздать, чтобы иметь возможность включить любой желаемый номер DEA при генерации пользовательского сертификата
decode der: echo "" | xxd -r -p> octet_string_data.bin && openssl asn1parse -in octet_string_data.bin
должен рассмотреть, как обменивается обмено, номер DEA из расширений
не рассматривал, что расширение 1.2.16.840.1.101. 3.5.5 содержит
Обсуждение CHATGPT: https://chatgpt.com/share/6721f32d-4d80 ... 1da08247d6
>used java code
import org.bouncycastle.asn1.*;
import org.bouncycastle.asn1.x500.X500Name;
import org.bouncycastle.asn1.x509.*;
import org.bouncycastle.cert.X509CertificateHolder;
import org.bouncycastle.cert.X509v3CertificateBuilder;
import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter;
import org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilder;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.operator.ContentSigner;
import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;

import java.math.BigInteger;
import java.security.*;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
import java.util.Date;

public class CSOSCertificateGenerator {

static {
Security.addProvider(new BouncyCastleProvider());
}

public static X509Certificate generateCertificate(String deaNumber, Date expiryDate) throws Exception {
KeyPair keyPair = generateKeyPair();
X500Name issuer = new X500Name("CN=Axway Test CA, O=Axway, C=US");
X500Name subject = new X500Name("CN=" + deaNumber + ", O=Axway, C=US");

BigInteger serialNumber = new BigInteger(64, new SecureRandom());
Date notBefore = new Date();
Date notAfter = expiryDate;

X509v3CertificateBuilder certBuilder = new JcaX509v3CertificateBuilder(
issuer, serialNumber, notBefore, notAfter, subject, keyPair.getPublic());

// Encode DEA Number as ASN.1 structure
ASN1EncodableVector vector = new ASN1EncodableVector();
vector.add(new DERPrintableString(deaNumber)); // Storing DEA number
DERSequence deaASN1Sequence = new DERSequence(vector);

// Add DEA Number Extension (1.2.16.840.1.101.3.5.7)
certBuilder.addExtension(
new ASN1ObjectIdentifier("1.2.16.840.1.101.3.5.7"),
false, // Not critical
deaASN1Sequence
);

// Sign certificate
ContentSigner signer = new JcaContentSignerBuilder("SHA256WithRSAEncryption").build(keyPair.getPrivate());
X509CertificateHolder certHolder = certBuilder.build(signer);

return new JcaX509CertificateConverter().setProvider("BC").getCertificate(certHolder);
}

private static KeyPair generateKeyPair() throws NoSuchAlgorithmException {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048, new SecureRandom());
return keyPairGenerator.generateKeyPair();
}

public static void main(String[] args) {
try {
String deaNumber = "DEA1234567";
Date expiryDate = new Date(System.currentTimeMillis() + 31536000000L); // 1 year from now

X509Certificate cert = generateCertificate(deaNumber, expiryDate);

System.out.println("Generated CSOS Certificate with DEA Number: " + deaNumber);
} catch (Exception e) {
e.printStackTrace();
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... using-java

Вернуться в «JAVA»