OpenSSL:字段名称缩写有问题吗?

Gre*_*dot 2 ssl openssl csr private-key

我正在尝试为一位同事创建一个新的私钥和 CSR 文件,并提供一些详细信息:

C                      = US
S                      = Florida
L                      = XXXXX
O                      = Foo Inc.
OU                     = IT
Run Code Online (Sandbox Code Playgroud)

我阅读了有关使用 OpenSSL 生成密钥和 CSR 的内容,并使用命令正常创建它:

openssl req -new -nodes -keyout mydomain.key -out mydomain.csr -subj "/C=US/S=Florida/L=XXXXX/O=Foo Inc./OU=IT/CN="
Run Code Online (Sandbox Code Playgroud)

但这会返回一个错误:

Generating a 2048 bit RSA private key
..................+++
..+++
writing new private key to 'mydomain.key'
-----
req: Skipping unknown attribute "S"
problems making Certificate Request
139945692307904:error:0D06407A:asn1 encoding routines:a2d_ASN1_OBJECT:first num too large:../crypto/asn1/a_object.c:61:
139945692307904:error:0D07A098:asn1 encoding routines:ASN1_mbstring_ncopy:string too short:../crypto/asn1/a_mbstr.c:102:minsize=1
Run Code Online (Sandbox Code Playgroud)

我在这里遗漏了一些明显的东西吗?最初给了他一个正常生成的 CSR,没有 -subj 参数(使用 ubuntu 终端填写),但他说包含“ST”缩写导致他的 CA 拒绝。状态参数必须是“S”。我不经常使用 SSL,因此 Google 并没有真正帮助我告诉我去哪里查找。

Pat*_*zek 6

查看man req(来自 openssl),特别是最后的示例:

    [ req_distinguished_name ]
    C                      = GB
    ST                     = Test State or Province
    L                      = Test Locality
    O                      = Organization Name
    OU                     = Organizational Unit Name
    CN                     = Common Name
    emailAddress           = test@email.address
Run Code Online (Sandbox Code Playgroud)

的简短版本stateOrProvinceName不是STS

我不知道在哪里“但他说包含“ST”缩写导致他的 CA 拒绝。” 来自,但这肯定是错误的,您应该直接从 CA 获取实际错误。

参考的是X.520标准,可以从https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-X.520-201610-I!!PDF-E&type下载=项目

在其中你可以看到:

stateOrProvinceName ATTRIBUTE ::= {
SUBTYPE OF  name
WITH SYNTAX UnboundedDirectoryString
LDAP-SYNTAX directoryString.&id
LDAP-NAME   {"st"}
ID.         id-at-stateOrProvinceName }
Run Code Online (Sandbox Code Playgroud)

你可以清楚地看到缩写是“st”而不是“s”。公共 CA 不可能做其他事情。