gpt4 book ai didi

c - X509_NAME_get_text_by_NID 返回带有数字的 CN 作为文本

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:42 26 4
gpt4 key购买 nike

当我发出以下命令时:

cn[(sizeof cn) - 1] = 0;
if (X509_NAME_get_text_by_NID(subj_p, NID_commonName,
cn, (sizeof cn) - 1) <= 0) {
fprintf(stderr, "Subject has no CN\n");
return -1;
}
if (strncasecmp(cn, options.server_p, sizeof cn) != 0) {
fprintf(stderr, "Subject CN mismatch (%s != %s)\n",
options.server_p, cn);
return -1;
}

options.server_pa1.accessmylan.com

我收到以下错误:

Subject CN mismatch (b1.accessmylan.com != BONE.ACCESSMYLAN.COM)

如果我尝试使用不同的服务器,我会得到:

Subject CN mismatch (a1.accessmylan.com != aone.ACCESSMYLAN.COM)

有人知道为什么会发生这种情况和/或如何解决吗?谢谢!

最佳答案

正如您所显示的错误,这两个通用名称确实不同。它们在任何意义上都不相同。

据我所知,b1.accessmylan.comBONE.ACCESSMYLAN.COM 实际上是不同的。

请检查您的证书及其通用名称并输入。

在你的代码中

cn[(sizeof cn) - 1] = 0;

您正在使用 sizeof 来计算 cn 的元素数。 sizeof 运算符给出字节数,而不是元素数。

正确的做法(如果 cn 在范围内声明为静态数组)

cn[sizeof(cn)/sizeof(cn[0]) - 1] = 0;

这可能是问题之一,但不一定是这个问题。

另一件事是,在您的代码中,在 strcasecmp 中,您传递了 cn 的大小。作为一种好的做法,您应该传递 cn 或 options.server_p 的长度,以较小者为准。

关于c - X509_NAME_get_text_by_NID 返回带有数字的 CN 作为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18870703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com