如何在PEM编码的证书链中加载所有证书?

时间:2020-06-10 18:43:14

标签: python openssl ssl-certificate x509certificate pyopenssl

当我在PEM编码的完整证书链上使用OpenSSL.crypto.load_certificate(b'< PEM encoded certificate bytes >')函数时,仅第一个证书作为OpenSSL.crypto.X509对象被加载。

其余证书将被完全忽略。我认为这是因为解析器命中“ END CERTIFICATE”并停止读取。 OpenSSL(或其他地方)中是否有实用程序功能来解析和加载整个证书链?

“完整证书链”是指PEM格式的证书,其中包含多个----- BEGIN CERTIFICATE ----- / ----- END CERTIFICATE -----标记。

1 个答案:

答案 0 :(得分:1)

这是一个简短的代码段,可从PEM编码的字节缓冲区读取所有证书:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int lotto_gen()
{
    int ball = 1 + rand() % 45;
    return ball;
}
void swap(int* a, int* b)
{
    int r;
    r = *a;
    *a = *b;
    *b = r;
}
void shuffle(int* arr, int size)
{
    int i,r;
    for (i = 0; i < size; i++)
    {

        r = rand() % (size - i) + i;
        swap(arr + i, arr + r);
    }
}
int main (void)
{
    int i,j;
    int lotto[45] = { 0 };
    int size = sizeof(lotto) / sizeof(lotto[0]);
    srand(time(0));

    for (i = 0; i < 10; i++)
    {
        lotto[i]=lotto_gen();
    }
    for (j = 0; j < 10; j++)
    {

        printf("[");
        for (i = 0; i < 6; i++)
        {
            printf("%d ", lotto[i]);
        }
        printf("]\n");

    }

    return 0;
}
相关问题