Capisco leggendo MSDN che le estensioni X509 v3 devono essere realizzate a mano. Ciò implica il CRL, l'AIA, i vincoli di policy e di nome, il mapping dei criteri, il periodo di utilizzo delle chiavi private e gli attributi delle directory del soggetto.
Ho provato a creare un punto di distribuzione CRL ma il risultato è spazzatura:
$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
C'è qualche riferimento su come codificare i valori per ognuno dei seguenti? Ho cercato dappertutto ma senza fortuna.
- AuthorityInformationAccess
- CrlDistributionPoints
- FreshestCRL
- NameConstraints
- PolicyConstraints
- PolicyMappings
- PrivateKeyUsagePeriod
- SubjectDirectoryAttributes
Si noti che si tratta dell'interfaccia com certenroll in Windows. openssl non è applicabile qui.