Entiendo de leer MSDN que las extensiones de X509 v3 deben ser hechas a mano. Esto implica las restricciones de CRL, AIA, nombre y política, la asignación de políticas, el período de uso de la clave privada y los atributos del directorio del sujeto.
Intenté hacer un punto de distribución de CRL pero el resultado es basura:
$crlExt = New-Object -ComObject X509Enrollment.CX509Extension
$crlOid = New-Object -ComObject X509Enrollment.CObjectId
$crlOid.InitializeFromValue('2.5.29.31')
$crlValue = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('http://www.test.com'))
$crlExt.Initialize($crlOid, 0x1, $crlValue)
$crlExt.Critical = $false
¿Hay alguna referencia sobre cómo codificar los valores para cada uno de los siguientes? He buscado por todas partes pero sin suerte.
- AuthorityInformationAccess
- CrlDistributionPoints
- FreshestCRL
- NameConstraints
- PolicyConstraints
- PolicyMappings
- PrivateKeyUsagePeriod
- SubjectDirectoryAttributes
Tenga en cuenta que se trata de la interfaz de certenroll com en Windows. openssl no es aplicable aquí.