Che cosa entra nel calcolo della firma del certificato?

1

Ho scritto il mio codice con openssl per creare certificati. Per verificare questo codice, ho provato a ricostruire una linea di comando openssl generata come certificato autofirmato ...

openssl req -x509 -days 365 -new -out test.pem -key privateKey.pem -config ./caconfig.cnf

... con il mio codice, incluso startdate, enddate, serial, ecc.

X509* tempX509=X509_new();
X509_set_version(tempX509,0); /* set to X509 version 1 */
ASN1_INTEGER_set(X509_get_serialNumber(tempX509), serialTmp);
//X509_gmtime_adj(X509_get_notBefore(tempX509), 0);
//X509_gmtime_adj(X509_get_notAfter(tempX509), 60*60*24*daysTmp);
ASN1_TIME_set_string( X509_get_notBefore(tempX509), "YYYYMMDDHHMMSSZ");
ASN1_TIME_set_string( X509_get_notAfter(tempX509), "YYYYMMDDHHMMSSZ");
X509_set_pubkey(tempX509,pubkeyTemp);

X509_NAME *x509_name = NULL;
x509_name = X509_get_subject_name(tempX509);    

if( strlen(countryTmp) )
  if(!(X509_NAME_add_entry_by_txt(x509_name, "C",  MBSTRING_ASC, (TDF_UCHAR*)countryTmp, -1, -1, 0)))
    return K_TDF_STATUS_CERT_ADD_ERROR;

if( strlen(stateTmp) )
  if(!(X509_NAME_add_entry_by_txt(x509_name, "ST",  MBSTRING_ASC, (TDF_UCHAR*)stateTmp, -1, -1, 0)))
    return K_TDF_STATUS_CERT_ADD_ERROR;

if( strlen(localityTmp) )
  if(!(X509_NAME_add_entry_by_txt(x509_name, "L",  MBSTRING_ASC, (TDF_UCHAR*)localityTmp, -1, -1, 0)))
    return K_TDF_STATUS_CERT_ADD_ERROR;

if( strlen(organizationTmp) )
  if(!(X509_NAME_add_entry_by_txt(x509_name, "O",  MBSTRING_ASC, (TDF_UCHAR*)organizationTmp, -1, -1, 0)))
    return K_TDF_STATUS_CERT_ADD_ERROR;

if( strlen(organizationUnitTmp) )
  if(!(X509_NAME_add_entry_by_txt(x509_name, "OU",  MBSTRING_ASC, (TDF_UCHAR*)organizationUnitTmp, -1, -1, 0)))
    return K_TDF_STATUS_CERT_ADD_ERROR;

if( strlen(commonNameTmp) )
  if(!(X509_NAME_add_entry_by_txt(x509_name, "CN", MBSTRING_ASC, (TDF_UCHAR*)commonNameTmp,   -1, -1, 0)))
    return K_TDF_STATUS_CERT_ADD_ERROR;

if( strlen(emailAddressTmp) )
  if(!(X509_NAME_add_entry_by_txt(x509_name, "emailAddress", MBSTRING_ASC, (TDF_UCHAR*)emailAddressTmp,   -1, -1, 0)))
    return K_TDF_STATUS_CERT_ADD_ERROR; 

if(!(X509_set_issuer_name(tempX509, x509_name)))
  return K_TDF_STATUS_CERT_GEN_ERROR;

if(!X509_sign( tempX509, privkeyTemp, getDigestType(engine)))
  return K_TDF_STATUS_CERT_GEN_ERROR;

Sfortunatamente, la firma non è la stessa, anche se tutti gli altri dati sembrano essere gli stessi. controllato da

openssl x509 -text -noout -in test.pem

Il mio codice è basato su questo: link

Quindi, mi chiedo se ho dimenticato qualcosa per la creazione del mio certificato. Come viene calcolata la firma?

    
posta tobuh 13.04.2016 - 11:17
fonte

0 risposte

Leggi altre domande sui tag