如果我生成如下客户端证书
,则客户端证书有效openssl req -config openssl.cnf -new -nodes -subj '/C=RO/ST=Bucharest/L=Bucharest/O=XXX/emailAddress=wdw@gmail.com/CN=192.1.61.7' -keyout private/client.key -out client.csr
192.1.61.7 是我的客户端的IP地址,它使用生成的客户端证书。
我希望客户端证书可以被来自任何IP地址的计算机使用。
我尝试了CN=*.*.*.*
和CN=*
,但都没有效果。
服务器端是logstash tcp输入过滤器,我无法对其进行更改。
客户端证书必须绑定到特定的IP或域吗?如何生成不绑定到任何IP和域的客户端证书?
答案 0 :(得分:0)
客户端证书必须绑定到特定的一个或多个域吗?
没有。但是如何处理事情取决于您正在运行的PKI。每个PKI都可以不同。
您可以识别具有传统Distinguished Name (DN) from RFC 4511的用户,例如组织(O)和组织单位(OU)。或者您可以使用其他名称识别它们。
以下是通过备用名称识别主题的方法。来自RFC 5280, Section 4.2.1.6, Subject Alternative Name:
GeneralName ::= CHOICE {
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER }
在上面,您习惯使用dNSName
作为服务器证书。客户端证书可以使用rfc822Name
,directoryName
,otherName
和其他GeneralName。
您使用的内容取决于您的PKI。我相信Microsoft客户端证书使用otherName
和自定义OID。另请参阅信息安全堆栈交换中的How to encode a username in PKIX certificate。
您可能还想搜索Client Certificate GeneralName并进行阅读。
如何生成不绑定到任何IP和域的客户端证书?
这取决于您使用的工具和PKI。
至少,您可能不得不在没有CONF文件的情况下停止使用openssl命令行工具,因为它太有限了。您无法通过命令行选项设置主题备用名称。相反,您将不得不使用CONF文件。