Permintaan tanda OpenSSL dengan ekstensi

8

Saya menetapkan CA kecil yang ditandatangani sendiri untuk lingkungan dev saya. Saya ingin membuat banyak sertifikat server berbeda dengan properti berbeda. Pendekatan saya adalah membuat bagian ekstensi spesifik untuk setiap server. Saya punya satu openssl.cnf besar yang berisi bagian-bagian seperti ini:

[ server0_http ]

nsCertType                      = server
nsComment                       = "HTTP server0"
basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=@server0_http_altnames

[ server0_http_altnames ]
URI.1 = https://server.domain.tld
URI.2 = http://server.domain.tld
IP.1  = 1.2.3.4
DNS.1 = server.doamin.tld

Lalu ketika saya membuat csr saya menggunakan opensslsaya menggunakan parameter -config myCustomOpenssl.cnf -reqexts server0_http. Ketika saya melihat permintaan saya menggunakan openssl req -text -noout -in myrequest.csrsemuanya terlihat sempurna.

Namun, setelah saya menandatangani permintaan, bagian "Penggunaan Kunci Diperpanjang X509v3" dan "Nama Alternatif Subjek X509v3" hilang. Untuk mengatasi masalah ini saya juga memberikan -extfile myCustomOpenssl.cnf -reqexts server0_httpparameter untuk panggilan masuk openssl.

Apakah itu perilaku yang diharapkan? Saya selalu berpikir file csr saja harus cukup untuk membuat sertifikat seperti yang diminta, yaitu dengan semua bagiannya. Cara sistem saya bekerja sekarang adalah bahwa saya mendapatkan sertifikat dengan bagian yang hilang. Untuk mendapatkan sertifikat seperti yang saya inginkan, saya harus menyediakan file csr dan bagian yang sesuai dari file konfigurasi openssl yang saya gunakan untuk membuat permintaan. Ini bukan masalah untuk pengaturan kecil saya, tetapi ini menjadi sangat berantakan jika saya menjadi CA yang lebih besar. Apakah seharusnya seperti itu atau saya menggunakan openssl secara tidak benar?

Bananguin
sumber

Jawaban:

7

Menemukannya! Apa yang saya jelaskan adalah perilaku yang diharapkan normal dari openssl. Secara default, ekstensi khusus tidak disalin ke sertifikat.

Untuk membuat openssl salin ekstensi yang diminta ke sertifikat yang harus ditentukan copy_extensions = copyuntuk penandatanganan. Dalam instalasi vanila ini berarti bahwa baris ini harus ditambahkan ke bagian default_CAdalam openssl.cnf.

Dalam openssl.cnfkapal-kapal dengan (setidaknya) Centos, garis sudah dimasukkan sebagai komentar dan membawa peringatan "gunakan dengan hati-hati". Pemohon dapat menyalahgunakan ini untuk membuat Anda mengeluarkan sertifikat CA, jika Anda tidak hati-hati.

Bananguin
sumber