c - openSSL:如何创建 CA 文件

标签 c sockets networking ssl openssl

我希望客户端向服务器发送证书。现在,我想使用如下代码:

   SSL_CTX *ctx;
   STACK_OF(X509_NAME) *cert_names;
   ... 
   cert_names = SSL_load_client_CA_file("/path/to/CAfile.pem");
   if (cert_names != NULL)
       SSL_CTX_set_client_CA_list(ctx, cert_names);
   else
       error_handling();
   ...

但是我该如何创建 CA 文件呢?另外,如果我只想指定一个特定的 CA,我应该使用什么命令来发送它?

我已经阅读了 SSL_CTX_set_client_CA_list(SSL_CTX *ctx,STACK_OF(X509_NAME) *list);,但我不知道如何获取该 *list范围。在这种情况下,我只有 1 个 CA。

最佳答案

您可以使用以下命令创建自己的自签名 CA 文件,

openssl req -out CA.pem -new -x509

这将生成 CA.pem 文件和相同的私钥。

稍后您可以从生成的 CA.pem 和私钥创建证书文件和 key 。

生成服务器证书和 key :

openssl genrsa -out server.key 1024

openssl req -key server.key -new -out server.req

openssl x509 -req -in server.req -CA CA.pem -CAkey privkey.pem -CAserial file.srl -out server.pem

类似地,您可以为客户端创建证书和 key 。

关于c - openSSL:如何创建 CA 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28042363/

相关文章:

大小整数类型可以与 typedef 互换使用吗?

c++ - 并发空间上很酷的开源项目?

c - 使用参数打开套接字

java - 通过套接字发送可序列化对象时出现 NotSerializableException?

iOS、testFlight、app无法联网

linux - 在 ifconfig wlan0 up 上停止自动连接

java - 使用 Java 套接字处理无法访问的 UDP 端口

c - Linux 上 POSIX 函数 "stat"的定义在哪里?

使用已在当前范围内受到限制的受限参数调用函数

c++ - 在 Linux 上读取系统调用永远占用