Saya ingin mengonfigurasi OpenSSL sehingga ketika menjalankan openssl req -new
untuk menghasilkan permintaan penandatanganan sertifikat baru, saya diminta untuk memasukkan nama subjek alternatif pada CSR.
Saya telah menambahkan baris ini ke [req_attributes]
bagian saya openssl.cnf
:
subjectAltName = Alternative subject names
Ini memiliki efek yang diinginkan sehingga saya sekarang diminta untuk SAN ketika menghasilkan CSR:
$ openssl req -new -out test.csr -key ./test.key <<<
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [New York]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Example Co]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:test.example.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Alternative subject names []:DNS:alt1.example.com
Dalam contoh di atas, saya telah memasukkan DNS:alt1.example.com
ketika diminta untuk SAN.
Masalahnya adalah bahwa CSR yang dihasilkan tampaknya tidak diformat dengan baik:
$ openssl req -text -in ./test.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=US, ST=New York, O=The Banes, CN=test.thebanes.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
[...]
Exponent: 65537 (0x10001)
Attributes:
X509v3 Subject Alternative Name:unable to print attribute
OpenSSL mengeluh bahwa ia tidak dapat mencetak nilai dari atribut Nama Alternatif Subjek. Dari contoh online (di mana orang-orang membuat kode SAN ke openssl.cnf mereka, daripada meminta mereka secara interaktif seperti yang saya inginkan), saya berharap melihat ini sebagai gantinya:
Attributes:
X509v3 Subject Alternative Name:
DNS:alt1.example.com
Jadi, bagaimana saya bisa menghasilkan CSR yang terbentuk dengan baik dengan SAN yang diminta secara interaktif?
sumber
openssl
- Anda akan memerlukan skrip yang akan memotong-motong file konfigurasi untuk itu. :( PS Solusi terbukti untuk melakukan itu secara non-interaktif ada di sini: stackoverflow.com/a/9158662/2693875Jawaban:
Saya sendiri telah berjuang dengan nugget kecil ini ... sungguh PITA!
Solusi saya: Saya memindahkan semua file openssl.cnf ke dalam file Toolkit Templat yang hanya menyisakan potongan sans sebagai bagian pengganti, kemudian membungkus skrip perl di sekitarnya.
Script perl meminta entri SAN, kemudian memasukkannya ke dalam templat, menyimpan templat ke file temp dan kemudian saya panggil openssl req dengan opsi -config menunjuk ke file temp. buang file temp setelah CSR dibuat.
Anda juga mungkin ingin melihat: http://www.openssl.org/docs/apps/config.html
Ada orang lain yang mengganti $ ENV sesaat sebelum eksekusi dan membungkus panggilan ke openssl req dalam perl atau shell dan mencapai hal yang sama dengan cara yang sedikit lebih efisien: http://blog.loftninjas.org/2008/11/11/ mengkonfigurasi-ssl-request-dengan-subjectaltname-with-openssl /
sumber
Saya juga mencari solusi. Dan inilah yang Anda inginkan:
Dan Anda bisa mendapatkan ini dengan cepat untuk nama subjek alternatif :)
sumber
DNS:my.dns.com, DNS:my.otherdns.org
openssl
wtf ! Anda juga harus memberikan SAN keCA
perintah-sebagai-extensions <string>
, atau-extfile <file>
. mta.openssl.org/pipermail/openssl-users/2016-January/…"SubjectAltName" ini seharusnya tidak ada di bagian ini: atribut = req_attributes. Tetapi di bagian untuk req_extensions = (sebut saja apa pun yang Anda inginkan).
Dan tidak perlu untuk semua BS suka
Cukup ketik apa yang Anda inginkan, berapa banyak yang Anda inginkan:
(Yang terakhir membuat akses internal seperti " https://192.168.1.2 " tanpa peringatan)
Jadi sesuatu seperti:
Bersulang!
sumber