openssl req
から以下のようなエラーが出ます
unable to find 'distinguished_name' in config
problems making Certificate Request
41035:error:0E06D06C:configuration file routines:NCONF_get_string:no value:/SourceCache/OpenSSL098/OpenSSL098-52.30.1/src/crypto/conf/conf_lib.c:329:group=req name=distinguished_name
私の理解では、これが見つからないのは「件名」だと思っているのですが……ただし、それを指定しています
openssl req -new \
-key "$PRIVATE_KEY" \
-sha256 \
-config "$OPTIONS_FILE" \
-subj "/C=US/ST=California/L=San Francisco/O=ACME, Inc./CN=*.*.$DOMAIN/" \
-out "$CSR_FILENAME"
マニュアルの唯一の提案は、設定ファイルが存在しないということです。cat "$OPTIONS_FILE"
は存在しているので、間違いなく存在していますし、もしそうであればマニュアルにあるようなエラーは発生しないので、openssl
が設定ファイルを見ているのは間違いないでしょう
私の設定ファイルには以下のような内容が含まれています
[req]
req_extensions = v3_req
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.*.example.com
…これはかなり文字通りドキュメントの例です
私はここで何を間違っているのでしょうか?
45 Thanatos 2015-07-29
the man page for openssl req の “EXAMPLES” セクションを見ると、distinguished_name
を含む設定ファイルの例が示されています。直感で、以下のように設定ファイルに追加しました
[req]
…
distinguished_name = req_distinguished_name
[req_distinguished_name]
# empty.
このようにして、私の設定全体は以下のようになりました
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[v3_req]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.*.${DOMAIN}
(ここでは、${DOMAIN}
はリテラルではないことに注意してください; DNSドメイン名に置き換える必要があります; 私はこのファイルをbash
スクリプトでcat >"$OPTIONS_FILE" <<EOF
の後に上記の後にEOF
を続けて作成しています)
openssl req … -subj <my subject> -config <that file> …
は、コマンドラインから私の主題を取得しました。興味のある方のために、コマンド全体は以下のようになりました
openssl req -new \
-key "$PRIVATE_KEY" \
-sha256 \
-config "$OPTIONS_FILE" \
-subj "/C=US/ST=California/L=San Francisco/O=My Company, Inc./CN=*.*.$DOMAIN/" \
-out "$CSR_FILENAME"
この投稿の時点で、私の理解では、X.509 認証では SHA-1 は非推奨¹であり、したがって -sha256
(これは文書化されていないフラグですが….)、subjectAltName は必須²になりつつあり、したがって設定が必要になっているということです。上記のベスト・プラクティス CSR を生成するために、私が知っている唯一の追加的なガチャは、少なくとも 2048 ビットの RSA 鍵サイズを使用することです (RSA を使用している場合、私は使用しています)
¹これを書いている時点では壊れてはいませんが、時間の問題だと感じている人がいます。“徐々にSHA1のサンセット化” ²ドメイン名にCNを使用することは推奨されなくなりました。”件名のコモンネームにドメイン名のような文字列を含めたりチェックしたりすることから離れてください。”, RFC 6125 注: keyUsage
.の “正しい “値についてはあまり確信が持てません
36 Thanatos 2015-07-29
私も同じ悩みを抱えていて、こちらの回答を見つけました
設定ファイルはこのようになっています
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = www.company.com
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = www.company.com
DNS.2 = company.com
DNS.3 = www.company.net
DNS.4 = company.net
And then:
openssl req -new -key private.key -sha256 -nodes -config openssl.conf -out certificate.csr
17 Miquel 2016-08-26
私の場合、このエラーはWindows Server 2012のC:\OpenSSL-Win32\bin
でコマンドを実行したときのパスの作成が間違っていたために発生したようです
openssl req -new -sha256 -key private.pem -out example.csr
パスphareを要求する前にノンブロッキングエラーを出力するようにしました
Can’t open C:\Program Files (x86)C:openssl.cnf for reading, No such file or directory
明らかにスラッシュが間違っていてパスが無効なので、コマンドラインで設定ファイルを明示的に追加しなければなりません
openssl req -new -sha256 -key private.pem -config openssl.cfg -out example.csr
5 Alexei 2016-12-17
この似たようなエラー
$ openssl req -x509 -newkey rsa:4096 -keyout _key.pem -out cert.pem -days 365 -nodes あなたの証明書リクエストに組み込まれる情報を入力するよう求められます。これから入力するのは、Distinguished NameまたはDNと呼ばれるものです。いくつかのフィールドにはデフォルト値が設定されていますが、「.」を入力するとフィールドは空白になります。—– 国名 (2文字コード) [AU]:証明書申請に問題があります
(Ubuntu 17.04)は「追加する必要がある」という意味でした
-subj "/C=US/ST=California/L=San Francis co/O=ACME, Inc./CN=*.*.$DOMAIN/"
をコマンドラインに追加してください」FWIW
1 rogerdpack 2017-08-27
もう一つ考えられるのは、特殊な(見えない)UTF-8文字の可能性があります。を使用してファイルを確認してください
cat -v $OPTIONS_FILE
0 feri 2019-09-13
今後の参考として、/bin/openssl.exe
を管理者として実行してください
0 psavov 2020-01-28