Я создаю сертификат в Java, используя библиотеку надувных замков.Все поля в моем сгенерированном сертификате закодированы в PrintableString
.Но есть много символов, не поддерживаемых этим типом кодировки.Итак, я хочу изменить тип кодировки на UTF8String
Я говорю, что мы должны изменить атрибут directoryString
по умолчанию.Но я не нашел код Java, который может это сделать.Кто может мне помочь?Вот что я получаю при выполнении команды: openssl asn1parse -in test.cer
Просмотреть изображение здесь это код, где я генерирую сертификат, используя библиотеки bouncycustle и sun.security: String certificate = ca.getCert();
byte[] cert_bytes = certificate.getBytes();
cf = CertificateFactory.getInstance("X509");
X509Certificate cr = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(cert_bytes));
cr.getKeyUsage();
X509CertInfo info = new X509CertInfo();
Date from = new Date(System.currentTimeMillis());
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, 5);
Date to = cal.getTime();
CertificateValidity interval = new CertificateValidity(from, to);
BigInteger sn = new BigInteger(64, new SecureRandom());
org.bouncycastle.asn1.x500.X500Name x500Name = req.getSubject();
X500Name x500name_subject = new X500Name(getX500Field(COMMON_NAME, x500Name), getX500Field(COUNTRY, x500Name),
getX500Field(LOCALE, x500Name), getX500Field(ORGANIZATION, x500Name),
getX500Field(ORGANIZATION_UNIT, x500Name), getX500Field(STATE, x500Name));
X500Principal principal = cr.getSubjectX500Principal();
X500Name x500namecert = new X500Name(principal.getName());
X500Name x500name_issuer = new X500Name(x500namecert.getCommonName(), x500namecert.getCountry(),
x500namecert.getOrganization(), x500namecert.getOrganizationalUnit());