Menambahkan Nama Alternatif Perihal (SAN) ke Permintaan Penandatanganan Sertifikat (CSR) yang ada

9

Bisakah ada yang memberi tahu saya bagaimana saya menambahkan sejumlah Nama Alternatif Subjek ke CSR yang ada?

Saya tidak berbicara tentang menghasilkan CSR dengan SAN atau menambahkan SAN pada waktu penandatanganan - Saya tahu bagaimana melakukan kedua hal ini.

Latar Belakang: Masalah yang kami miliki adalah sasis blade HP, memungkinkan Anda untuk menghasilkan CSR, tetapi mereka hanya memperbolehkan SAN tunggal. Kami tidak dapat menggunakan CSR yang dihasilkan di tempat lain karena kami tidak dapat menggunakan sertifikat yang dihasilkan karena tidak ada cara (yang dapat saya temukan) untuk mengunggah kunci ke sasis blade.

Proses standar CA kami tidak memungkinkan untuk menambahkan SAN sedang menandatangani waktu. Mereka bersedia untuk bereksperimen, namun saya mencoba untuk menemukan solusi pada akhirnya karena ini berarti kita tidak perlu bergantung pada mereka yang memiliki proses non standar untuk kita - dalam pengalaman saya jika mereka perlu menggunakan proses non standar hidup pada akhirnya akan sulit. Misalnya ketika seorang anggota staf yang mengetahui proses non-standar tidak hadir karena pergi, dll.

Metode saat ini adalah menghubungkan ke admin onboard bladechassis melalui web gui dan menghasilkan CSR dengan CN tunggal.

Web gui hanya memungkinkan untuk satu SAN dalam CSR.

Kemudian kita menandatanganinya dengan bait berikut dalam konfigurasi openssl:

[ v3_ca ]
subjectAltName = "DNS:bladesystem8,DNS:bladesystem8.services.adelaide.edu.au,DNS:bladesystem8-backup,DNS:bladesystem8-backup.services.adelaide.edu.au"

Sertifikat yang dihasilkan memiliki SAN tambahan.

Jason Tan
sumber
Bagaimana Anda menghasilkan sertifikat pada sasis blade saat ini? Metode apa yang Anda gunakan untuk menghubungkan dll. Sasis model pisau apa?
Eli
Chassis adalah c7000. Ya kami saat ini membuat CSR pada sasis dan menambahkan SAN pada waktu tanda, tapi itu untuk sertifikat yang ditandatangani sendiri.
Jason Tan
Metode apa yang Anda gunakan untuk terhubung ke sana saat ini dan apa proses Anda untuk menghasilkan sertifikat untuk itu?
Eli
Saya telah mengedit pertanyaan utama untuk memasukkan metode saat ini.
Jason Tan
1
Bisakah Anda mengimpor Kunci Pribadi & Cert jika Anda membuatnya di komputer lain dan mengekspornya?
Clint

Jawaban:

15

Jika sasis Anda tidak mendukung penambahan SAN, Anda harus melepaskan kunci sasis dan menghasilkan CSR dengan openssl.

Pastikan req_extensions = v3_reqtidak dihapus di [ req ]bagian ini.

Tambahkan subjectAltNameke [ v3_req ]bagian.

Hasilkan CSR baru.

openssl req -new -key extracted_c7000.key -out your_new.csr

Anda tidak dapat mengedit CSR yang ada.

Cakemox
sumber
Apa kata cakemox. Jika Anda dapat mengedit sertifikat (yaitu, CSR yang ditandatangani) setelah ditandatangani, itu akan mengalahkan seluruh tujuan sertifikasi otoritas.
MadHatter
Saya tidak ingin mengedit CSR setelah ditandatangani - itu seperti yang Anda katakan kalahkan puprose. Saya ingin mengedit CSR setelah dihasilkan, tetapi SEBELUM itu ditandatangani. Sangat mungkin untuk mengedit bagian dari CSR sebelum menandatangani menggunakan openssl.
Jason Tan
Jika saya dapat mengunduh kunci, saya akan melakukannya. Maaf saya tidak menyebutkan itu di pertanyaan awal, tetapi saya belum dapat menemukan untuk mengunduh kuncinya. Saya akan dengan senang hati membayar hadiah kepada seseorang yang bisa memberi tahu saya cara mengunduh kunci.
Jason Tan
FYI - Sangat mungkin untuk mengedit bagian dari CSR sebelum menandatangani menggunakan openssl khususnya opsi "openssl req -subj". Namun ini tidak akan sejauh yang saya tahu menambahkan ekstensi SAN v3, itu hanya akan memungkinkan Anda untuk menentukan baris subjek baru termasuk CN tambahan.
Jason Tan
2
CSR ditandatangani oleh kunci pribadi mesin, jadi Anda tidak dapat mengeditnya setelah dihasilkan (atau jika tidak akan ditandatangani lagi). Ada kemungkinan bahwa CA mengedit bidang yang dimasukkan dalam sertifikat publik; ini adalah satu-satunya cara untuk mengubah bidang SAN (yang tidak dapat Anda kendalikan jika Anda mengirim ini ke CA publik).
Chris S
0

Catatan penting: Semua ini agak spekulatif, jadi jika Anda tenggelam dalam kode dan tidak setuju dengan apa yang saya katakan, percayalah kodenya. Saya bukan ahli CA, saya hanya memainkannya di TV. Yang mengatakan:

Sebagai fitur CSR, ini akan sulit. Langkah terakhir dalam menghasilkan CSR secara terprogram adalah untuk hash semua yang Anda buat, dan kemudian menandatanganinya dengan kunci pribadi. Jadi, selagi Anda bisa menambahkan atribut-atribut itu ke teks CSR, tanda tangannya tidak cocok dengan kontennya, jadi CA tidak akan menandatanganinya.

Namun, dalam kasus Anda, Anda mengontrol (atau setidaknya berhubungan dengan) CA. Ini memberi Anda dua opsi:

  1. Anda dapat menginstruksikan CA untuk dengan blak-blakan mengabaikan tanda tangan pada CSR dan tetap menerbitkan sertifikat.
  2. Anda dapat meminta CA mengeluarkan sertifikat yang berbeda dari yang diminta (mis. Dengan menambahkan atribut).

Dari jumlah tersebut, # 1 tampaknya yang paling mudah. Anda harus mematahkan segel yang tidak jelas pada OpenSSL untuk membuatnya melakukan ini, tetapi ia memiliki beberapa fungsi yang seharusnya membuat sedikit lebih mudah. Saya akan mulai dengan asn1parse, yang akan menunjukkan kepada Anda bagaimana memecah CSR.

BMDan
sumber
Pada penelitian lebih lanjut, opsi # 2 sebenarnya cukup sederhana, terlalu, dan dilakukan oleh sejumlah CA (misalnya untuk menambahkan site.comke www.site.comcert sebagai SAN).
BMDan
0

Sementara jawaban cakemox jelas yang paling mudah jika Anda bisa mendapatkan salinan kunci privat, ada cara lain jika Anda tidak bisa dengan dasarnya menandatangani ulang CSR menggunakan sertifikat "Agen Pendaftaran".

Posting blog css-security.com ini memiliki semua detail seluk beluk. Tetapi gambaran umum proses tingkat tinggi terlihat seperti ini:

  • Memperoleh Sertifikat Agen Pendaftaran
  • Ubah templat sertifikat SSL untuk meminta sertifikat EA untuk penerbitan
  • Memperoleh CSR yang membutuhkan Informasi SAN
  • Gunakan sertifikat EA untuk mengundurkan diri dari CSR sambil menambahkan informasi SAN

Ketika saya mencoba ini secara pribadi, saya cukup yakin saya melewatkan bagian tentang memodifikasi templat sertifikat. Anggap Anda dapat menghasilkan sertifikat Agen Pendaftaran untuk diri sendiri, proses yang sebenarnya terlihat seperti ini.

Buat san.inf dengan info ekstensi SAN di dalamnya

[Extensions]
2.5.29.17="{text}dns=mysan1.example&dns=mysan2.example"

Tanda tangani kembali permintaan

certreq -policy -config "myca.example\CA" orig-request.csr san.inf corrected-request.csr

Kirim permintaan yang diperbaiki

certreq -submit -config "myca.example\CA" -attrib "CertificateTemplate:MyTemplate" corrected-request.csr

Dan kemudian melanjutkan seperti biasa dengan proses penerbitan.

Ryan Bolger
sumber