Metodo ICertServerPolicy::SetCertificateProperty (certif.h)

Utilizzare il metodo SetCertificateProperty per impostare una proprietà associata a un certificato.

Sintassi

HRESULT SetCertificateProperty(
  [in] const BSTR    strPropertyName,
  [in] LONG          PropertyType,
  [in] const VARIANT *pvarPropertyValue
);

Parametri

[in] strPropertyName

Specifica la proprietà da impostare. È possibile impostare una delle proprietà nome associate al certificato.

Inoltre, è possibile impostare le proprietà del certificato seguenti.

Valore Significato
NotBefore
Data/ora
Il certificato non è valido prima della data specificata.
NotAfter
Data/ora
Il certificato non è valido dopo la data specificata.
GeneralFlags
Impostare questa proprietà su 0x00000400 per impedire che la richiesta venga salvata in modo permanente nel database della CA.
Attenzione Non sovrascrivere i valori mask restituiti da GetCertificateProperty durante l'impostazione di questa proprietà. Impostare il valore eseguendo un OR bit per bit con i valori esistenti.
 
Windows Storage Server 2003: Questo campo non è supportato.
CrossForest
PROPTYPE_LONG
Valore booleano che specifica se la CA deve funzionare in modalità di registrazione tra foreste.

Windows Server 2008 e Windows Server 2003: La registrazione tra foreste non è supportata. La registrazione tra foreste è supportata a partire da Windows Server 2008 R2.

RequesterSAMName
PROPTYPE_STRING
Indica alla CA di impostare il nome dell'account richiedente ("RequesterName") e il nome distinto.
RequesterUPN
PROPTYPE_STRING
Indica alla CA di convertire il nome dell'entità utente (UPN) del richiedente nel nome del richiedente ("RequesterName") e di impostare il nome del richiedente e il nome distinto del richiedente.
RequesterDN
PROPTYPE_STRING
Indica alla CA di convertire il nome FQDN 1779 del richiedente nel nome del richiedente e di impostare il nome del richiedente ("RequesterName") e il nome distinto del richiedente.

[in] PropertyType

Specifica il tipo della proprietà da impostare. Il parametro Type deve essere d'accordo con il tipo di dati di pvarValue impostato nel campo vt della struttura VARIANT . Il parametro Type può essere impostato su uno dei tipi seguenti.

Valore Significato
PROPTYPE_LONG
Dati lunghi firmati.
PROPTYPE_DATE
Dati di data/ora.
PROPTYPE_BINARY
Dati binari.
PROPTYPE_STRING
Dati stringa Unicode

[in] pvarPropertyValue

Specifica il valore su cui impostare la proprietà.

Valore restituito

VB

Se il metodo ha esito positivo, il metodo restituisce S_OK.

Se il metodo ha esito negativo, restituisce un valore HRESULT che indica l'errore. Per un elenco dei codici di errore comuni, vedere Valori HRESULT comuni.

Commenti

È necessario chiamare ICertServerPolicy::SetContext prima di usare questo metodo.

Le proprietà del certificato NotBefore e NotAfter vincolano la durata durante la quale un certificato è valido. Il tipo di dati per queste proprietà è una data VARIANT a virgola mobile derivata da COleDateTime in Automazione.

Quando si impostano le proprietà del certificato NotBefore e NotAfter con SetCertificateProperty, si applicano le restrizioni seguenti:

  • La data NotBefore non può essere impostata su una data precedente alla data NotBefore del certificato dell'autorità di certificazione.NotBefore date.
  • La data NotAfter non può essere impostata su una data successiva alla data NotAfter del certificato CA.
  • La data NotBefore non può essere impostata su una data precedente a quella già impostata, anche se la nuova data è successiva alla data NotBefore del certificato CA.
  • La data NotAfter non può essere impostata su una data successiva a quella già impostata, anche se la nuova data è precedente alla data NotAfter del certificato CA.

Esempio

Nell'esempio seguente viene chiamato il metodo SetCertificateProperty per impostare la proprietà del certificato NotBefore. L'esempio presuppone che pServer sia valido e che sia stato chiamato il metodo ICertServerPolicy::SetContext .

HRESULT hr;
ICertServerPolicy *pServer;
SYSTEMTIME st;
BSTR bstrPropName;
VARIANT vPropValue;

bstrPropName = SysAllocString(L"NotBefore");
if (NULL == bstrPropName)
{
    printf("Unable to allocate memory.\n"); 
    return E_OUTOFMEMORY;
}

// Set the 'NotBefore' property to Noon on Jan. 1, 2000.
memset( &st, 0, sizeof(SYSTEMTIME));
st.wYear = 2000;
st.wMonth = 1;     // Jan.
st.wDay = 1;       // 1st day of month.
st.wHour = 12;     // Noon.

// Place the date into VARIANT required format.
VariantInit( &vPropValue );
vPropValue.vt = VT_DATE;
if ( !SystemTimeToVariantTime( &st, &vPropValue.date))
{
    printf("Unable to convert time.\n");
    SysFreeString(bstrPropName);
    return E_FAIL
}

// Set the NotBefore property in the certificate:
hr = pServer->SetCertificateProperty(bstrPropName,
                                     PROPTYPE_DATE, 
                                     &vPropValue);
SysFreeString(bstrPropName);
VariantClear(&vPropValue);
if (FAILED(hr))
{
    printf("SetCertificateProperty failed [%x]\n", hr);
    return hr;
}

Requisiti

Requisito Valore
Client minimo supportato Nessuno supportato
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione certif.h (include Certsrv.h)
Libreria Certidl.lib
DLL Certcli.dll

Vedi anche

ICertServerExit::GetCertificateProperty

ICertServerPolicy

ICertServerPolicy::SetContext

Proprietà nome