web-dev-qa-db-ja.com

OpenSSL:空のサブジェクトDNで証明書を作成するにはどうすればよいですか?

サブジェクトの別名属性/拡張子にのみ識別情報を含むPKCS#10証明書要求/ X.509証明書を作成することは可能ですか? X.509 4.1.2.6 Subject によると、subjectAltNameが重要である限り、サブジェクトがCAではない証明書のサブジェクトは空にすることができます。

しかし、私がこのconfigファイルを空のdistinct_nameセクションで使用すると:

# request.config
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
Prompt = no

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:[email protected]

およびコマンド

openssl genrsa 1024 > key.pem
openssl req -new -key key.pem -out req.pem -config request.config

OpenSSLは不平を言います:

error, no objects specified in config file
problems making Certificate Request
14
yonran

これは私のために働きました:

test-no-cn.cnfファイル

[req] 
default_bits       = 4096
encrypt_key        = no
default_md         = sha256
distinguished_name = req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:[email protected],URI:http://example.com/,IP:192.168.7.1,dirName:dir_sect

[dir_sect]
C=DK
O=My Example Organization
OU=My Example Unit
CN=My Example Name

CSRを生成する

openssl req -new -newkey rsa:4096 -nodes -config test-no-cn.cnf -subj "/" -outform pem -out test-no-cn.csr -keyout test-no-cn.key

CSRに署名する

openssl x509 -req -days 365 -in test-no-cn.csr -signkey test-no-cn.key -out test-no-cn.crt -outform der -extensions v3_req -extfile test-no-cn.cnf

結果の証明書を表示する

openssl x509 -inform der -in test-no-cn.crt -noout -text
11
bpawlak

この「オブジェクトが指定されていません」エラーにも遭遇しました。さまざまなフィールドで次のようなプロンプトが表示されていました。

US []:

また、.cnfファイルでこれらの値をすでに設定しているため、Enterキーを押すだけでした。すべての値をもう一度入力する必要があることがわかりました。

8
Oran Dennison

問題は、元の構成のPrompt = noにあります。これにより、openssl reqは、構成ファイルでサブジェクトエントリを指定することを想定し、 req.cの予備チェック をヒットします。

回避策があります:Prompt = noを削除し、代わりに-subj /openssl reqコマンドラインに追加します。 CSRと自己署名証明書の両方を生成するスクリプトの例を次に示します。

cat > openssl.cnf <<EOF
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[ req_distinguished_name ]

[ v3_req ]
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=critical,email:[email protected]
EOF
openssl req -newkey rsa:2048 -config openssl.cnf -nodes -new -subj "/" \
  -out req.csr
openssl req -newkey rsa:2048 -config openssl.cnf -nodes -new -subj "/" \
  -x509 -out cert.crt
3
jsha

Openssl構成ファイルのポリシーセクションで「commonName = optional」を試してください。

2
Artem

キーボードから '"distinguished_name"グループから1つの値を入力したようですが、正常に動作します...他の値を入力する必要はなく、デフォルトの(openssl.confファイルで説明されているように)使用できます

[ req ]
...
distinguished_name = req_distinguished_name
Prompt = no
...

Should work fine.
1
hardeep