- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 openssl API 创建我自己的证书实用程序。我目前在主题备用名称扩展中添加可分辨名称时遇到问题。虽然扩展已成功创建,但在查看证书时,扩展的值编码错误,例如使用 Windows 证书实用程序:
Basic Constraints Subject Type=CA, Path...
Subject Alternative Name
74 53 19 00 00 00 38 27 tS....8'
ac 0b 88 ae ac 0b 00 00 ........
00 00 00 00 00 00 6f 72 ......or
20 53 21 00 00 00 02 00 S!.....
00 00 13 00 00 00 d0 d7 ........
ac 0b 00 00 00 00 0a 00 ........
00 00 00 00 00 00 20 00 ...... .
00 00 19 00 00 00 b8 5d .......]
a4 0b
Thumbprint algorithm sha1
下面是相关源代码的片段,重点关注感兴趣的点(可能存在一些语法错误):
GENERAL_NAME * genn = NULL;
STACK_OF(GENERAL_NAME) * sk_genn;
ASN1_OCTET_STRING *asn1OctetStr=NULL;
X509_EXTENSION* tmpEXT;
X509_NAME* tmpDIRNAME;
char* extSAN_str=(char *) "C=CR, O=OU, D=DR";
/*..*/
case DISTINGUISHED_NAME:
// Initialization of ASN.1 structures
genn = GENERAL_NAME_new();
asn1OctetStr = M_ASN1_OCTET_STRING_new();
sk_genn = GENERAL_NAMES_new();
// Create the X509 extension
tmpDIRNAME=CharToX509_NAME(extSAN_str);
// This GeneralName is an directoryName
genn->type=GEN_DIRNAME;
genn->d.directoryName=tmpDIRNAME;
// Using the stack to create a sequence
sk_GENERAL_NAME_push(sk_genn,genn);
ext_len = i2d_GENERAL_NAMES(sk_genn, NULL);
ext_der = OPENSSL_malloc(ext_len); /* allocate that much memory */
i2d_GENERAL_NAMES(sk_genn, &ext_der);
asn1OctetStr->data = ext_der;
/* fill in the value of the SubjectAltName extension */
asn1OctetStr->length = ext_len;
sanNID = OBJ_txt2nid("subjAltName");
if (!(tmpEXT = X509_EXTENSION_create_by_NID(NULL, sanNID, 0, asn1OctetStr)))
{
ERR_error_string(ERR_get_error(), NULL), ERR_get_error());
}
// Adding the certificate to the X509 structure
if(!X509_add_ext(tmpCert, tmpEXT, -1))
{
ERR_error_string(ERR_get_error(), NULL), ERR_get_error());
}
/*..*/
X509_NAME* CharToX509_NAME(char* SubjectName)
{
X509_NAME *tempSubjectName=NULL;
char name[128];
char value[128];
char* equal;
char* comma;
char* field;
memset(name, 0, 128);
memset(value, 0, 128);
if(!(tempSubjectName = X509_NAME_new()))
{
return 0;
}
if (NULL != SubjectName)
{
field = SubjectName;
do
{
equal=strchr(field, '=');
comma=strchr(field, ',');
if(comma == 0)
comma = field + strlen(field);
strncpy(name, field, (unsigned)(equal-field));
name[equal-field]=0;
strncpy(value, equal+1, (unsigned)(comma-equal-1));
value[comma-equal-1]=0;
field=comma+1;
if(!X509_NAME_add_entry_by_txt(tempSubjectName,name, MBSTRING_ASC, value, -1, -1, 0))
return 0;
}while(*comma != 0);
}
return tempSubjectName;
}
最佳答案
我所做的几乎与我所看到的相同(见下文)。我看到的唯一增量是使用 V_ASN1_IA5STRING 或 V_ASN1_UTF8STRING(如果需要)。
Dw。
+(X509_NAME_ENTRY *) x509nameEntryFromDict:(NSDictionary *)entry {
X509_NAME_ENTRY * nameEntry = NULL;
int nid = [self nidFromDict:entry];
if (nid == NID_undef) {
NSLog(@"x509nameFromDictArray: Unknown entry - ignored: %@", entry);
return NULL;
}
NSString * val = [entry objectForKey:kOpenSSLNameValueKey];
const char * buff;
int valType;
if ([val dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO]) {
valType = V_ASN1_IA5STRING;
buff = [val cStringUsingEncoding:NSASCIIStringEncoding];
} else {
valType = V_ASN1_UTF8STRING;
buff = [val cStringUsingEncoding:NSUTF8StringEncoding];
}
int len = strlen(buff);
return X509_NAME_ENTRY_create_by_NID(&nameEntry, nid, valType, (unsigned char*)buff, len);
}
关于openssl - 使用 openssl 在 X509 证书中添加 DN 使用者备用名称扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11519111/
当我查找 DN 时带 Spring ldapTemplate , 我必须省略配置的基本 DN。 例如,当基本 DN 配置为 dc=company,dc=com 时,工作查找就像 ldapTemplat
在我的 LDAP 客户端程序中,有时我必须在搜索过滤器中包含 DN 值。但是这个 DN 经常变化,每次我都必须在我的代码中更改这个过滤器。 当我用谷歌搜索它时,我得到了这样的东西 假设您想从 R&D
如何在javascript中写一个必须遵循条件的正则表达式 DN 地址中的所有段都应遵循 cn=,ou=,o=,o=swift 序列 所有段都应该用,分隔. DN 地址最多应包含 100 个字符。 不
我最近在代码中遇到了这一行 - fprintf(logfile," |-IP Version : %dn",(unsigned int)iph->version); 这里的“%dn”
在我们的应用程序中,我们为平台和用户等内部实体生成证书。我们的内部实体由自定义 DN 标识: 平台 DN:p=平台名称 用户DN:cn=userName,p=platformName 我们尝试使用 o
我完全陷入了如何使用新值更新CSV文件中的多行的问题。问题如下,我将一个 Activity 目录csv导出文件导入了大约有500个用户的powershell中,如下所示: $Users = Impor
我进行了 LDAP 目录搜索并收到了一些结果。我需要迭代这些结果并显示每个条目的 Dn。 在我的测试环境中,我通过获取entryDN属性的值来返回Dn值。 在生产环境中,entryDN 属性始终返回
我目前在搜索 DN 包含逗号的条目时遇到问题: StringTokenizer st = new StringTokenizer(dn, "="); Attributes searchAttribut
我用下面的代码有两个目标 1) 获取属于特定广告组的用户列表 2) 获取属于该组的所有用户的电子邮件/姓氏/名字 如果有更好的方法来实现这两个目标,请告诉我。 我能够获得完整的 DN,但我不确定如何从
我想要一个正则表达式来验证所有可能的 DN 类型 我创造了一个,但它不是很好。 /([A-z0-9=]{1}[A-z0-9]{1})*[,??]/ 和其他一些 通过更改它,但徒劳无功。 可能的 DN
我有一个九节点 Cassandra 集群,一切似乎都运行良好,除了我的两台服务器相互显示为 DN。集群中的所有其他节点将所有节点显示为 UN。这两个显示除彼此之外的所有节点 UN,其中它们彼此显示为
我知道以前有人回答过这个问题,但它无法帮助我(除非它有帮助,但由于我的 php 知识有限,它没有帮助)。下面是我的代码: >Could not connect to LDAP server
我已经很清楚如何在 GRPC++ 中建立双向认证的 SSL 通信,但现在我希望在建立的 TLS 通信中获得获取 SSL 客户端 DN 的方式,以进行进一步的身份状态分类。 如果您有一些建议,谢谢。 最
什么是使用 python 获取 SSL 的主题 DN 的好方法? 这包括以下内容: 国名 州名 地区名称 组织名称 通用名 最佳答案 就像是: import ssl import socket fro
我目前正在为我的公司编写一个工具(在 ANSI C 中),它从 LDAP 目录中读取并以特定格式(即:我们旧的专有目录 db 的名称格式)输出所有数据。 然后由另一个工具处理,该工具读取输出等等...
我正在尝试对位于目录根目录的许多不同 OU 执行 LDAP 搜索。 上下文初始化: Hashtable env = new Hashtable(); env.put(Context.SECURITY_
我如何为 LDAP 搜索制作 bourne shell 代码以不返回 DN 而只返回 CN?我为此使用 iTerm2。 最佳答案 如果您只想查看 cn结果,然后您可以使用以下内容: ldapsearc
您好我正在尝试使用我的 ldap 测试服务器来验证 openca 中的用户。 我目前正在通过 phpldapadmin 连接: Login DN : cn=admin,dc=example,dc=co
我构建了一些假设 LDAP DN 不区分大小写的功能。 我已经使用 ActiveDirectory、Oracle 和 OpenLDAP 对其进行了检查,并且不区分大小写。 是否适用于所有 LDAP?
我知道你不能简单地过滤 dn,但我有这样的东西: dc=lvl3,dc=lvl2,dc=lvl1,有人可能有这样的 dn:CN=Last, First,OU=ou1,OU=retired,OU=ou1
我是一名优秀的程序员,十分优秀!