#java #certificate #x509 #csr
#java #сертификат #x509 #csr
Вопрос:
Я сгенерировал запрос на подпись сертификата (CSR) с помощью инструментаhttps://certificatetools.com/newui и теперь я хочу прочитать все поля, включая расширения.
Например, используя google.com в инструменте в качестве примера он генерирует следующий CSR:
Certificate Request:
Data:
Version: 1 (0x0)
Subject: CN = *.google.com, C = US, ST = California, L = Mountain View, O = Google LLC
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:e3:b5:a0:d8:........
Exponent: 65537 (0x10001)
Attributes:
Requested Extensions:
X509v3 Key Usage: critical
Digital Signature
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Subject Alternative Name:
DNS:*.google.com, DNS:*.android.com, DNS:*.appengine.google.com, DNS:*.cloud.google.com, ...............
Signature Algorithm: sha256WithRSAEncryption
44:a0:41:41:88:66:......
В настоящее время я читаю CSR следующим образом:
FileReader fileReader = new FileReader("/..../cert.csr");
PemReader pemReader = new PemReader(fileReader);
PKCS10CertificationRequest csr =
new PKCS10CertificationRequest(pemReader.readPemObject().getContent());
StringWriter writer = new StringWriter();
PemWriter pemWriter = new PemWriter(writer);
pemWriter.writeObject(new PemObject("CERTIFICATE REQUEST", csr.getEncoded()));
pemWriter.flush();
pemWriter.close();
String csrPEM = writer.toString();
System.out.println(csrPEM);
System.out.println("SUBJECT: " csr.getSubject().toString());
Как я могу прочитать остальные поля (например, использование расширенного ключа X509v3)?
Спасибо.
Ответ №1:
В настоящее время таким образом я читаю детали CSR в моей Java-программе, которая работает очень хорошо. Я читаю это для получения пользовательского uuid.
ByteArrayInputStream bais = new ByteArrayInputStream(csr);
CertificateRequest p10CertReq = new CertificateRequest(bais);
Name userDN = p10CertReq.getSubject();
String user = userDN.getRFC2253String();
iaik.pkcs.pkcs10.CertificateRequest
объект предоставляет метод getAttribute, который может быть использован для извлечения атрибутов