java openssl 开发,使用OpenSSL以编程方式创建X509证书

我意识到这是一个非常晚(和很长)的答案 . 但考虑到这个问题在搜索引擎结果中的排名有多好,我认为可能值得写一个体面的答案 .

您将在下面阅读的很多内容都来自this demo和OpenSSL文档 . 以下代码适用于C和C.

在我们实际创建证书之前,我们需要创建一个私钥 . OpenSSL提供 EVP_PKEY 结构,用于在内存中存储与算法无关的私钥 . 此结构在 openssl/evp.h 中声明,但由 openssl/x509.h (稍后我们将需要)包含,因此您不需要明确包含标头 .

为了分配 EVP_PKEY 结构,我们使用EVP_PKEY_new:

EVP_PKEY * pkey;

pkey = EVP_PKEY_new();

还有一个用于释放结构的相应函数 - EVP_PKEY_free - 它接受一个参数:上面初始化的 EVP_PKEY 结构 .

现在我们需要生成一个密钥 . 对于我们的示例,我们将生成RSA密钥 . 这是通过在 openssl/rsa.h 中声明的RSA_generate_key函数完成的 . 此函数返回指向 RSA 结构的指针 .

对函数的简单调用可能如下所示:

RSA * rsa;

rsa = RSA_generate_key(

2048, /* number of bits for the key - 2048 is a sensible value */

RSA_F4, /* exponent - RSA_F4 is defined as 0x10001L */

NULL, /* callback - can be NULL if we arent displaying progress */

NULL /* callback argument - n

我意识到这是一个非常晚(和很长)的答案 . 但考虑到这个问题在搜索引擎结果中的排名有多好,我认为可能值得写一个体面的答案 . 您将在下面阅读的很多内容都来自this demo和OpenSSL文档 . 以下代码适用于C和C. 在我们实际创建证书之前,我们需要创建一个私钥 . OpenSSL提供 EVP_PKEY 结构,用于在内存中存储与算法无关的私钥 . 此结构在 openssl/evp.h 中声明,但由 openssl/x509.h (稍后我们将需要)包含,因此您不需要明确包含标头 . 为了分配 EVP_PKEY 结构,我们使用EVP_PKEY_new: EVP_PKEY * pkey; pkey = EVP_PKEY_new(); 还有一个用于释放结构的相应函数 - EVP_PKEY_free - 它接受一个参数:上面初始化的 EVP_PKEY 结构 . 现在我们需要生成一个密钥 . 对于我们的示例,我们将生成RSA密钥 . 这是通过在 openssl/rsa.h 中声明的RSA_generate_key函数完成的 . 此函数返回指向 RSA 结构的指针 . 对函数的简单调用可能如下所示: RSA * rsa; rsa = RSA_generate_key( 2048, /* number of bits for the key - 2048 is a sensible value */ RSA_F4, /* exponent - RSA_F4 is defined as 0x10001L */ NULL, /* callback - can be NULL if we arent displaying progress */ NULL /* callback argument - n
经验分享 程序员 微信小程序 职场和发展