Bisakah Layanan Sertifikat MS menjadi Bawahan ke CA yang dibuat dengan OpenSSL

16

Saya ingin menyiapkan otoritas sertifikasi perusahaan untuk domain saya. Jadi saya bisa mengeluarkan sertifikat untuk berbagai keperluan. Saya ingin mengikuti praktik terbaik untuk memiliki CA offline sebagai root, dan mengatur CA perusahaan saya sebagai bawahan. Tapi rasanya konyol untuk melisensikan salinan Windows sepenuhnya untuk tugas ini.

Apa yang saya berharap dapat lakukan adalah menginstal beberapa distribusi langsung ke USB flash disk, dan kemudian menginstal openssl, dan mengatur CA saya pada flash drive. Ketika saya siap untuk membangun kunci root / cert saya akan memutus komputer dari jaringan, dan kemudian tidak pernah menggunakan disk USB pada jaringan komputer yang terpasang lagi.

Apakah saya dapat menandatangani dan membuat sertifikat CA bawahan dengan benar untuk CA perusahaan Windows, yang akan dapat digunakan. Opsi apa yang perlu saya gunakan dengan OpenSSL untuk membangun CA dan menandatangani sertifikat CA bawahan dengan benar.

Saya telah mencoba mencari di web, dan ini adalah satu-satunya hal yang dapat saya temukan pada subjek. Tapi itu sebelum 2008, dan saya tidak sepenuhnya yakin orang itu sukses.

Sakit kepala
sumber
Supaya jelas, alat ini tidak harus OpenSSL, tetapi saya tidak ingin menjalankan CA besar seperti EJBCA. Saya mencari CA yang sangat ringan yang dapat dijalankan di lingkungan livecd / liveusb.
Zoredache

Jawaban:

14

Ya, itu berfungsi dengan baik; otoritas sertifikat Windows tidak ragu menjalankannya sebagai bawahan dari root non-Windows.

Diuji dengan root OpenSSL dan bawahan Windows 2008 R2 dalam mode Perusahaan.


Beberapa hal yang dapat dilakukan dengan baik dengan apa yang diharapkan MS CA di konfigurasi OpenSSL:

  • Lokasi AIA dan CDP yang valid harus berlaku untuk sertifikat root, di bagian yang dikonfigurasi oleh x509_extensionsproperti [req]bagian untuk root yang ditandatangani sendiri. Sesuatu di sepanjang garis ini:

    authorityInfoAccess = caIssuers;URI:http://test-rootca.test.local/root.pem
    crlDistributionPoints = URI:http://test-rootca.test.local/root.crl
    
  • Konfigurasi OpenSSL yang diberikan mungkin tidak mengizinkan CA bawahan secara default. Ubah itu untuk permintaan yang ditandatangani (pastikan ini tidak ada untuk permintaan yang seharusnya bukan CA, tentu saja). Ini akan berada di bagian yang dikonfigurasikan oleh x509_extensionsproperti [ca]bagian:

    basicConstraints=CA:TRUE
    certificatePolicies=2.5.29.32.0
    

Jadi, kami akan melakukan CA untuk menguji.

Buat root Anda:

openssl req -new -x509 -keyout /etc/ssl/private/root.key -out /etc/ssl/certs/root.pem -nodes -extensions v3_ca

Biasakan konfigurasi Anda dan buat file dan direktori yang diperlukan di [ca]bagian konfigurasi OpenSSL Anda.

Semua siap untuk membuat sisi Microsoft segalanya berjalan; membuat CA bawahan Windows dengan penandatanganan manual.

Unggah permintaan sertifikat ke server OpenSSL. Saat Anda melakukannya, unduh sertifikat root. Impor ke toko root tepercaya - komputer, bukan pengguna Anda!

Keluarkan sertifikat bawahan:

openssl ca -in test-subca.req
(you might need to specify a permissive policy manually with -policy, check your config)

Jika itu tidak berhasil, CA Anda mungkin memiliki masalah dengan config - direktori sertifikat baru, file indeks, file seri, dll. Periksa pesan kesalahan.

Jika itu pergi, maka itu saja. Jika belum, buat CRL dan masukkan ke CDP yang Anda konfigurasi di atas; Saya baru saja menginstal Apache dan menghentikannya di webroot:

openssl ca -gencrl -out /var/www/root.crl

Dan letakkan sertifikat Anda di lokasi AIA, jika belum:

cp /etc/ssl/certs/root.pem /var/www/root.pem

Unduh sertifikat bawahan yang baru dikeluarkan dan instal ke CA dengan snap-in MMC Otoritas Sertifikasi. Itu akan mengeluh tentang masalah apa pun dengan kepercayaan atau validasi, tetapi tidak memiliki keberatan moral untuk mengambilnya.

Hasil akhir; Windows CA yang berfungsi tanpa mengeluh dari snap-in Enterprise PKI, dengan tanda OpenSSL Generated Certificatepada atribut.

working-ca

Shane Madden
sumber
6

Saya mengerti apa yang Anda maksud, tetapi saya tidak berpikir OpenSSL adalah alat yang tepat untuk pekerjaan itu. Anda mungkin ingin melihat proyek Otoritas Sertifikat Sumber Terbuka seperti EJBCA yang lebih fokus pada fungsi ini daripada OpenSSL, dan memiliki dokumentasi khusus yang dapat Anda gunakan.

Saya tidak melihat alasan mengapa konsep ini tidak berhasil, karena semua yang Anda lakukan adalah menandatangani sertifikat CA bawahan. Jika Anda membayar CA publik untuk melakukan ini untuk Anda, Anda tidak perlu tahu atau peduli rasa server yang mereka gunakan.

Yang perlu Anda pedulikan adalah:

  • Anda dapat menandatangani sertifikat dari CSR yang dihasilkan oleh bawahan Anda
  • hasilnya bisa dipasang pada bawahan itu sendiri
  • Anda memiliki sertifikat penandatanganan root yang dapat diinstal sebagai tepercaya pada klien apa pun yang Anda targetkan
  • Anda dapat membuat daftar pencabutan yang disajikan di suatu tempat

Saya tidak bisa mengatakan saya telah melakukan ini, tetapi saya yakin jika Anda mengikuti dokumen untuk menghasilkan CSR dari kotak windows, kemudian ikuti CA Anda dokumentasi untuk menghasilkan sertifikat .p7k dari CSR, maka Anda harus baik-baik saja.

Ngomong-ngomong - saya akan merekomendasikan Anda membuat CA Anda sebagai mesin virtual untuk hypervisor populer seperti Hyper-V atau VMware, daripada boot disk, pastikan Anda menyimpannya dengan sangat aman di tempat penerus Anda dapat menemukannya, dan memutarnya offline secara berkala untuk memastikannya berjalan, atau mentransfernya ke media / teknologi baru. CA root mungkin memiliki umur 10 atau 20 tahun ...

dunxd
sumber
+1 OpenSSL bukan alat utama untuk membuat CA, tetapi berfungsi secara umum. Saya belum mengeluarkan sertifikat sub-CA untuk Windows Enterprise CA, tetapi tidak dapat membayangkan mengapa itu tidak berhasil (meskipun MS telah melakukan tindakan anti-persaingan yang lebih mengerikan di masa lalu). +1 Besar untuk CA sebagai VM. Menyimpan salinan kedua sertifikat root adalah ide yang bagus (Base64 di atas kertas sangat tahan lama dan mudah disimpan di brankas / deposit-box / dll)
Chris S
Saya cukup senang dengan diri saya sendiri ketika saya menyadari bahwa saya dapat mengatur VM tanpa NIC dan hanya menggunakan floppy drive virtual untuk mengaktifkan CSR dan menandatangani sertifikat. Sneakernet terlahir kembali dengan Virtual Shine abad ke-21!
dunxd