使用OpenSSL检查以编程方式创建的自签名证书

使用OpenSSL检查以编程方式创建的自签名证书,ssl,openssl,certificate,Ssl,Openssl,Certificate,我已经按照以下说明创建了证书: 现在,我正在检查这一代产品是否正确。为此,我首先使用OpenSSL命令行创建一个证书,然后(基于上面给定的链接)以编程方式使用完全相同的值(开始日期、结束日期、序列号等)创建我的证书 以下是用于创建自签名证书的openssl命令: openssl req -x509 -days 365 -new -out test.pem -key privateKey.pem -config ./caconfig.cnf 下面是我的代码示例: X509* tempX509=

我已经按照以下说明创建了证书:

现在,我正在检查这一代产品是否正确。为此,我首先使用OpenSSL命令行创建一个证书,然后(基于上面给定的链接)以编程方式使用完全相同的值(开始日期、结束日期、序列号等)创建我的证书

以下是用于创建自签名证书的openssl命令:

openssl req -x509 -days 365 -new -out test.pem -key privateKey.pem -config ./caconfig.cnf
下面是我的代码示例:

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;
使用命令行检查内容时,我注意到除了签名不同之外,所有内容都是正确的。我敢肯定我用的是同一把钥匙

签名受哪些数据的影响?也许我错过了什么。
是否有其他方法来验证我的生成代码是否正确?

能否提供用于使用OpenSSL命令行生成X509证书的命令?Stack Overflow是一个解决编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。还有。@Jay我使用了这个命令:openssl req-x509-days 365-new-out test.pem-key privateKey.pem-config./caconfig.cnf我还试图用相同的密钥建立一个演示CA签名证书。。。也没有成功。@jww很抱歉给您带来不便。我认为这是关于验证我的代码,所以我在谈论我的软件算法,这个验证我的代码的特定编程问题,以及一个常用工具(openssl)。给定的链接是这个问题的基础。