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 openssl
saya menggunakan parameter -config myCustomOpenssl.cnf -reqexts server0_http
. Ketika saya melihat permintaan saya menggunakan openssl req -text -noout -in myrequest.csr
semuanya 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_http
parameter 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?