Saya ingin mengatur OCSP Responder saya sendiri (hanya untuk tujuan pengujian). Ini mengharuskan saya untuk memiliki sertifikat root dan beberapa sertifikat dihasilkan darinya.
Saya telah berhasil membuat sertifikat yang ditandatangani sendiri menggunakan openssl. Saya ingin menggunakannya sebagai sertifikat root. Langkah selanjutnya adalah membuat sertifikat yang diturunkan. Sepertinya saya tidak dapat menemukan dokumentasi tentang bagaimana melakukan ini. Adakah yang tahu di mana saya dapat menemukan informasi ini?
Sunting
Dalam retrospeksi, pertanyaan saya belum sepenuhnya dijawab. Untuk mengklarifikasi masalah saya akan mewakili rantai sertifikat saya seperti ini:
ROOT -> A -> B -> C -> ...
Saat ini saya dapat membuat sertifikat ROOT dan A, tetapi saya belum menemukan cara membuat rantai yang lebih panjang.
Perintah saya untuk membuat sertifikat root adalah:
openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key
openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem
Sertifikat A dibuat seperti ini:
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.cer
Perintah ini secara implisit tergantung pada sertifikat root, yang untuk itu ia menemukan info yang diperlukan dalam file konfigurasi openssl.
Namun Sertifikat B hanya harus bergantung pada A, yang tidak terdaftar dalam file konfigurasi, sehingga perintah sebelumnya tidak akan berfungsi di sini.
Baris perintah apa yang harus saya gunakan untuk membuat sertifikat B dan seterusnya?
Sunting
Saya menemukan jawabannya di artikel ini . Sertifikat B (rantai A -> B) dapat dibuat dengan dua perintah ini:
# Create a certificate request
openssl req -new -keyout B.key -out B.request -days 365
# Create and sign the certificate
openssl ca -policy policy_anything -keyfile A.key -cert A.pem -out B.pem -infiles B.request
Saya juga mengubah file openssl.cnf:
[ usr_cert ]
basicConstraints=CA:TRUE # prev value was FALSE
Pendekatan ini tampaknya bekerja dengan baik.
sumber
Jawaban:
Anda dapat menggunakan OpenSSL secara langsung.
Buat kunci pribadi Otoritas Sertifikat (ini adalah kunci terpenting Anda):
Buat sertifikat yang ditandatangani sendiri CA Anda:
Keluarkan sertifikat klien dengan terlebih dahulu membuat kunci, lalu minta (atau gunakan yang disediakan oleh sistem eksternal) kemudian tandatangani sertifikat menggunakan kunci pribadi CA Anda:
(Anda mungkin perlu menambahkan beberapa opsi karena saya menggunakan perintah ini bersama dengan file openssl.conf saya. Anda mungkin perlu mengatur file .conf Anda sendiri terlebih dahulu.)
sumber
openssl ca -in client.csr -out client.cer -cern ca.pem -keyfile ca.key
, tetapi menginginkandemoCA
direktori dan berbagai perlengkapan.Setelah Anda membuat CA Anda, Anda dapat menggunakannya untuk masuk sebagai berikut:
Buat kunci:
Buat csr:
Tanda tangani:
dan seterusnya mengganti * _A dengan * _B dan
CA_certificate_you_created.crt
dengancrt_A.crt
danCA_key_you_created.key
dengankey_A.key
Perubahan Anda:
berarti bahwa sertifikat yang Anda terbitkan dapat digunakan untuk menandatangani sertifikat lain.
sumber
OpenSSL dilengkapi dengan skrip Perl "CA.pl" untuk membantu Anda membuat root CA cert yang ditandatangani sendiri , bersama dengan kunci pribadi yang cocok, ditambah beberapa file dan direktori sederhana untuk membantu melacak setiap sertifikat masa depan yang Anda tanda tangani (masalah alias ) dengan root CA. Ini juga membantu Anda menghasilkan pasangan kunci lainnya dan permintaan penandatanganan sertifikat (CSR) dan membantu Anda memproses CSR tersebut (yaitu, menerbitkan sertifikat untuk mereka), dan banyak lagi.
Perhatikan bahwa banyak produk memerlukan sertifikat CA untuk memuat atribut tertentu yang menandainya sebagai sertifikat CA, atau mereka tidak akan diterima sebagai penandatangan / penerbit valid dari sertifikat lain. Jika sertifikat yang ditandatangani sendiri yang Anda buat tidak mengandung atribut itu, Anda mungkin akan kesulitan mendapatkan perangkat lunak lain untuk memperlakukannya seperti sertifikat CA root yang valid.
Jika saya ingat dengan benar, sintaksnya berjalan seperti ini:
sumber
/usr/lib/ssl/misc/CA.pl
Saya menemukan posting ini: https://stackoverflow.com/questions/19665863/how-do-i-use-a-self-signed-certificate-for-a-https-node-js-server
Ini untuk Node.JS tetapi skrip dalam repo GitHub ini menggunakan perintah openSLL untuk membuat root CA cert dan Domain cert.
Jalankan menggunakan:
bash make-root-ca-and-certificates.sh 'example.com'
Atau untuk localhost menggunakan:
bash make-root-ca-and-certificates.sh 'localhost'
make-root-ca-and-certificates.sh
sumber