Я создал CRL в Go (проанализировал его в PEM), и теперь я хочу воссоздать точно такой же CRL в Java (чтобы получить тот же PEM). Однако я не уверен, как это сделать, я обнаружил, что классы CRL в Go и Java сильно отличаются.
Я создал CRL на Голанге следующим образом:
var revokedCerts []pkix.RevokedCertificate
clientRevocation := pkix.RevokedCertificate{
SerialNumber: clientCert.SerialNumber,
RevocationTime: timeToUseInRevocation.UTC(),
}
revokedCerts = append(revokedCerts, clientRevocation)
crlSubject := pkix.Name{
Organization: []string{"testorg", "TestOrg"},
StreetAddress: []string{"TestAddress"},
PostalCode: []string{"0"},
Province: []string{"TestProvince"},
Locality: []string{"TestLocality"},
Country: []string{"TestCountry"},
CommonName: "Test Name",
}
var sigAlgorithm pkix.AlgorithmIdentifier
sigAlgorithm.Algorithm = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 11}
sigAlgorithm.Parameters = asn1.NullRawValue
tbsCertList := pkix.TBSCertificateList{
Version: 1,
Signature: sigAlgorithm,
Issuer: crlSubject.ToRDNSequence(),
ThisUpdate: timeToUseInRevocation,
NextUpdate: timeToUseInRevocation.Add(time.Millisecond * time.Duration(86400000)),
RevokedCertificates: revokedCerts,
}
newCRL, err := asn1.Marshal(pkix.CertificateList{
TBSCertList: tbsCertList, // new CRL
SignatureAlgorithm: sigAlgorithm,
SignatureValue: asn1.BitString{},
})
crlCreated, err := x509.ParseCRL(newCRL)
//CRL pem Block
crlPemBlock := &pem.Block{
Type: "X509 CRL",
Bytes: newCRL,
}
var crlBuffer bytes.Buffer
err = pem.Encode(&crlBuffer, crlPemBlock)
Я хочу воспроизвести это на Java.
Я знаю, что у меня есть переменные (например, подпись crl), которые являются пустыми / ноль. Это для того, что я хочу сделать.
Я мог бы взять PEM и прочитать CRL в Java, но я не смог сделать это для создания точно такого же CRL.
Я хочу создать CRL в Java также без подписи (все параметры равны).