openSSL:如何创建 CA 文件
openSSL: How to create a CAfile
我希望客户端向服务器发送证书。现在,我想使用如下代码:
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。
通常你会做这样的事情:
SSL_CTX_set_client_CA_list(CTX, SSL_load_client_CA_file("/path/to/cacert.crt"));
我不太清楚你说的 "how do I create a CAfile" 是什么意思。 CA 证书是已签署客户端证书的证书颁发机构的 public 证书。要么是你签署的(在这种情况下你必须是 CA 并且将拥有证书),要么是第三方签署的,在这种情况下它将在你系统上的受信任证书列表中(在 Ubuntu,对于例如,它在 /etc/ssl/certs
).
您可以使用以下命令创建自己的自签名 CA 文件,
openssl req -out CA.pem -new -x509
这将生成 CA.pem 文件和相同的私钥。
稍后您可以从生成的 CA.pem 和私钥创建证书文件和密钥。
生成服务器证书和密钥:
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
类似地,您可以为客户端创建证书和密钥。
我希望客户端向服务器发送证书。现在,我想使用如下代码:
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。
通常你会做这样的事情:
SSL_CTX_set_client_CA_list(CTX, SSL_load_client_CA_file("/path/to/cacert.crt"));
我不太清楚你说的 "how do I create a CAfile" 是什么意思。 CA 证书是已签署客户端证书的证书颁发机构的 public 证书。要么是你签署的(在这种情况下你必须是 CA 并且将拥有证书),要么是第三方签署的,在这种情况下它将在你系统上的受信任证书列表中(在 Ubuntu,对于例如,它在 /etc/ssl/certs
).
您可以使用以下命令创建自己的自签名 CA 文件,
openssl req -out CA.pem -new -x509
这将生成 CA.pem 文件和相同的私钥。
稍后您可以从生成的 CA.pem 和私钥创建证书文件和密钥。
生成服务器证书和密钥:
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
类似地,您可以为客户端创建证书和密钥。