Jestem tutaj, aby opublikować moją odpowiedź, ponieważ znalazłem ją z powyższymi komentarzami.
Nie miałem łańcucha certyfikatów, więc w pracy, którą wykonuję, mam tylko wygenerowany przeze mnie certyfikat programowy. Chciałem sprawdzić jego poprawność, dlatego stworzyłem następującą funkcję, która sprawdza certyfikat w sobie samym w innych, aby zweryfikować jego ważność.
void check_certificate_validaty(X509* certificate)
{
int status;
X509_STORE_CTX *ctx;
ctx = X509_STORE_CTX_new();
X509_STORE *store = X509_STORE_new();
X509_STORE_add_cert(store, certificate);
X509_STORE_CTX_init(ctx, store, certificate, NULL);
status = X509_verify_cert(ctx);
if(status == 1)
{
printf("Certificate verified ok\n");
}else
{
printf("%s\n", X509_verify_cert_error_string(ctx->error));
}
}
Nadzieja to pomaga ktoś :)
Można rozważyć zawężenie * * platformę, na której jesteś próbując to osiągnąć, choć nawet z tym może to być zbyt mdłe dla tego forum pytań i odpowiedzi. – WhozCraig
Nazwa funkcji jest myląca - nie w pełni sprawdza ważność certyfikatu, należy również sprawdzić, czy nazwy hostów są zgodne, nie zapomnij tego zrobić. Jest w tym funkcja, ponieważ OpenSSL 1.0.2: https://www.openssl.org/docs/manmaster/crypto/X509_check_email.html –