Saya mendapatkan kesalahan berikut dari 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
Pemahaman saya adalah bahwa ini adalah "Subject" bahwa ia tidak dapat menemukan ... Namun, saya sedang menetapkan bahwa:
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"
Satu-satunya saran manual adalah bahwa file konfigurasi tidak ada; Saya bisa cat "$OPTIONS_FILE"
, jadi pasti ada di sana, dan kesalahan tidak didahului oleh kesalahan catatan manual itu akan didahului oleh jika ini terjadi, jadi saya cukup yakin openssl
melihat file konfigurasi.
File config saya berisi yang berikut ini:
[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
... yang secara harfiah adalah contoh dalam dokumen .
Apa yang saya lakukan salah di sini?
*.*.example.com
tidak valid. (Anda hanya dapat memiliki 1*
, dan hanya di komponen paling kiri.) Ini tidak berhubungan dengan masalah di sini, tetapi jangan c / p secara membabi buta.Jawaban:
Sejauh yang saya tahu ,
-config
menimpa semacam konfigurasi internal; jika Anda melihat bagian "CONTOH" untuk halaman manual untuk openssl req , ia memperlihatkan contoh file konfigurasidistinguished_name
di dalamnya. Pada firasat, saya menambahkan yang berikut ke konfigurasi saya:Dengan demikian, seluruh konfigurasi saya terlihat seperti
(Perhatikan bahwa di sini,
${DOMAIN}
tidak secara literal; Anda harus menggantinya dengan nama domain DNS Anda; Saya membuat file ini denganbash
skripcat >"$OPTIONS_FILE" <<EOF
, diikuti oleh yang di atas, diikuti olehEOF
)openssl req … -subj <my subject> -config <that file> …
kemudian mengambil subjek saya dari baris perintah. Bagi mereka yang tertarik, seluruh perintah akhirnya tampak seperti:Pada posting ini, pemahaman saya adalah bahwa SHA-1 sudah usang¹ untuk sertifikat X.509, karenanya
-sha256
(yang merupakan bendera tidak berdokumen ...), dan subjectAltName menjadi wajib², maka diperlukan konfigurasi. Satu-satunya gotcha tambahan yang saya tahu untuk menghasilkan CSR praktik terbaik ke atas adalah bahwa Anda harus menggunakan ukuran kunci RSA setidaknya 2048 bit (jika Anda menggunakan RSA, yang saya); Anda harus menentukan ukuran keopenssl genrsa
perintah karena standar saat ini tidak aman.¹Sementara tidak rusak pada saat saya menulis ini, orang-orang merasa hanya masalah waktu saja. Lihat "
Matahari terbenam secara bertahap SHA1" ²Menggunakan CN untuk nama domain tidak lagi direkomendasikan; Saya tidak yakin kapan / jika browser berencana untuk menghentikan ini. "Minggir dari memasukkan dan memeriksa string yang terlihat seperti nama domain dalam Nama Umum subjek.", RFC 6125
Catatan: Saya kurang yakin tentang nilai "benar" dari
keyUsage
.sumber
*.*.example.com
itu tidak valid (Anda tidak dapat memiliki banyak*
s); c / p-ers berhati-hatilah.req_distinguished_name
tidak diterima oleh openssl 1.1.0f, jadi Anda harus memiliki setidaknya dicountryName_default
sana (rujuk ke Openssl.conf Walkthru ).Saya memiliki masalah yang sama dan menemukan jawabannya di sini:
https://www.citrix.com/blogs/2015/04/10/how-to-create-a-csr-for-a-san-certificate-on-netscaler/
File konfigurasi terlihat seperti ini:
Lalu:
sumber
req_distinguished_name
bagian bisa kosong kiri. Apa yang dilakukannya adalah menentukan templat label dari nama bidang yang diperlukan, yang dapat ditimpa oleh-subj= /C=xx/ST=xx/L=xx/O=xx/OU=xx/CN=xx
dll., Artinya, bukan untuk menetapkan nilai bidang tersebut.Bagi saya kesalahan ini tampaknya disebabkan oleh pembuatan jalur yang salah saat menjalankan perintah di Windows Server 2012,
C:\OpenSSL-Win32\bin
yang menghasilkan kesalahan non-pemblokiran sebelum meminta pass phare:
Jelas, path tidak valid karena slash yang salah, jadi file config harus ditambahkan secara eksplisit di baris perintah:
sumber
Kesalahan serupa ini:
(Ubuntu 17.04) berarti "Anda perlu menambahkan
-subj "/C=US/ST=California/L=San Francis co/O=ACME, Inc./CN=*.*.$DOMAIN/"
ke baris perintah "FWIW.
sumber
Masalah lain yang mungkin terjadi adalah karakter UTF-8 khusus (tidak terlihat). Periksa file Anda menggunakan
sumber