Получение открытого ключа из файла CSR с помощью Bouncy Castle на java
У меня есть сгенерированный клиентом CSR-файл, из которого я хочу извлечь открытый ключ. Они предоставили KeyStore Explorer программное обеспечение, чтобы проверить его.
Однако я не могу извлечь открытый ключ из него с помощью инструмента. Как получить открытый ключ из файла CSR с помощью программы Java using BC?
CSR генерируется с помощью RSA 2048, используя SHA1 с RSA.
Из инструмента я могу видеть данные ASN1 открытого ключа, но не формат ASCII. По крайней мере, как я могу использовать данные ASN1, чтобы получить открытый ключ в формате ASCII с использованием BC
SEQUENCE
{
SEQUENCE
{
OBJECT IDENTIFIER=RSA encryption (1.2.840.113549.1.1.1)
NULL
}
BIT STRING= //BITS HERE
}
2 ответа:
Это зависит от того, что вы подразумеваете под "форматом ASCII". Но в целом вы можете сделать что-то вроде этого:
// Read the CSR FileReader fileReader = new FileReader("/path/to/your.csr"); PemReader pemReader = new PemReader(fileReader); PKCS10CertificationRequest csr = new PKCS10CertificationRequest(pemReader.readPemObject().getContent()); pemReader.close(); fileReader.close(); // Write the Public Key as a PEM-File StringWriter output = new StringWriter(); PemWriter pemWriter = new PemWriter(output); PemObject pkPemObject = new PemObject("PUBLIC KEY", csr.getSubjectPublicKeyInfo().getEncoded()); pemWriter.writeObject(pkPemObject); pemWriter.close(); System.out.println(output.getBuffer()); // Extract the Public Key as "RSAKeyParameters" so you can use for // encryption/signing operations. RSAKeyParameters pubkey = (RSAKeyParameters)PublicKeyFactory.createKey(csr.getSubjectPublicKeyInfo());
Вот что вы получите.:
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxlRixVjOXAmUQ2zORREO VSQDQejyjWzT3bDznPltiPMwM3SOmPmZyrB8jF3iFvzdFge1QG2WdDj7PzmysXNL /1xRa0efWv8nURx1eV86hvU6ThNqY3WPyYYXSjTcN74uhGSJo7d5zG6JSL4Cj+l4 RO+nh/5Pa8438ufS+9hXndKPFT2aub9roKysxWpsctpNoOIjfyxkLv9Z9sqxuggG nwYkwYmoDjPAQp2gRpCp7Hw5F6jSkA33NR5S/aPdyvzKZDbuoRdAl2sTubL1TLG3 nC6tetGsmFRRkNiJjPSNtbXXtN6RB2eJL0epyaFFLksFBaL6nvYIgB1uqFroUY15 2QIDAQAB -----END PUBLIC KEY-----
Я проверил это с помощью последней версии BC-provider. Вам нужны как "провайдер", так и " PKIX/PKCS..."jar (в противном случае вам придется иметь дело с устаревшими API-вызовами).