Скопируйте CRL, который был создан в Go - PullRequest
2 голосов
/ 09 июля 2019

Я создал 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 также без подписи (все параметры равны).

...