Di Ubuntu, sepertinya tempat terbaik untuk kunci pribadi yang digunakan untuk menandatangani sertifikat (untuk digunakan oleh nginx) ada di /etc/ssl/private/
Jawaban ini menambahkan bahwa sertifikat harus masuk /etc/ssl/certs/
tetapi sepertinya tempat yang tidak aman. Apakah .crt
file perlu dijaga agar tetap aman atau dianggap publik?
ssl
ssl-certificate
openssl
Adam Nelson
sumber
sumber
.crt
di papan iklan Times Square, jika mau.Jawaban:
File .crt dikirim ke semua yang terhubung; ini adalah publik. (
chown root:root
danchmod 644
)Untuk menambahkan ke lokasi kunci pribadi; pastikan Anda mengamankannya dengan benar serta memilikinya di sana. (
chown root:ssl-cert
danchmod 640
)sumber
ssl-cert
, dulu, mungkin antara lain, membuat sertifikat snakeoil yang ditandatangani sendiriTidak masalah di mana Anda meletakkannya selama Anda benar-benar melindungi file kunci pribadi Anda . The sertifikat publik adalah publik; tidak diperlukan perlindungan - hak istimewa server atau sebaliknya.
Untuk memperluas jawabannya, saya tidak menggunakan lokasi default
/etc/ssl
.Lebih mudah bagi saya untuk menyimpan semua tambang di area terpisah karena cadangan + alasan lain.
Untuk Apache SSL, saya menyimpan bagian saya di
/etc/apache2/ssl/private
atau "area root" yang serupa/etc/
.Contoh Pengaturan
Posting ini diarahkan ke Ubuntu (Debian) + Apache, tetapi harus bekerja pada kebanyakan sistem -
Cukup terapkan izin dan perbarui lokasi / jalur dalam konfigurasi yang diberikan (apache / nginx / etc).
Jika file kunci SSL dilindungi dengan benar (direktori & file), Anda akan baik-baik saja. Catat catatannya!
Buat direktori:
Catatan:
chmod 710
mendukungssl-cert
grup di bawah Ubuntu. (Lihat komentar)Menetapkan izin
700
pada/etc/apache2/ssl/private
juga akan berfungsi dengan baik.Tempatkan file SSL:
Tetapkan pemilik:
Catatan:
Jika Anda tidak memiliki grup ssl-cert , cukup gunakan 'root: root' di baris di atas atau lewati baris ke-2.
Tetapkan izin:
Sertifikat Publik
Kunci Pribadi
Catatan:
Izin grup diatur ke BACA (640) karena grup ssl-cert Ubuntu. '600' juga baik-baik saja.
Aktifkan modul Apache SSL
Edit semua file situs Apache dan aktifkan
(lihat paragraf terakhir) *
Mulai ulang layanan Apache2
atau
Selesai. Uji situs SSL baru Anda.
* Sekali lagi ini melampaui pertanyaan, tetapi Anda dapat menyalin file konfigurasi situs Apache SSL default (
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/mysiteexample-ssl.conf
) sebagai titik awal / contoh arahan / direktori default yang biasanya digunakan di bawah file Apache / SSL 'conf' yang sederhana (Ubuntu / Debian) . Biasanya menunjuk ke kunci + sertifikat SSL yang ditandatangani sendiri (snakeoil), bundel CA, serta arahan umum yang digunakan untuk situs SSL tertentu.Setelah menyalin, cukup edit file .conf baru dan tambahkan / hapus / perbarui sesuai kebutuhan dengan jalur / informasi baru di atas kemudian jalankan
sudo a2ensite mysiteexample-ssl
untuk mengaktifkannya.sumber
<VirtualHost *:443>
bagian Anda di Andasites-available/mysite.conf
harus menyertakan sertifikat seperti:SSLEngine on
SSLCertificateFile /etc/apache2/ssl/mysite.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/mysite.key
Semua jawaban di sini tampaknya OK, tetapi saya ingin menyebutkan satu hal yang saya temukan adalah masalah ... Jika Anda harus menyatukan sertifikat Anda dengan perantara atau root untuk membuat file berantai, jangan masukkan itu
/etc/ssl/certs
, karena ketikac_rehash
dijalankan, ini dapat membuat hash symlink ke sertifikat Anda karena akar atau perantara di dalamnya.Kemudian di kemudian hari jika sertifikat Anda telah kedaluwarsa dan Anda menghapusnya, dan tidak tahu untuk menjalankan kembali
c_rehash
, Anda mungkin telah merusak symlink hash di/etc/ssl/certs
direktori Anda , dan hal-hal aneh mulai terjadi ketika mesin lokal Anda mencoba untuk terhubung dengan dirinya sendiri melalui SSL, dan tidak dapat menemukan akar untuk divalidasi. Sebagai contoh, dengan curl saya tiba-tiba mulai mendapatkan:Segera setelah membersihkan beberapa file .crt dan .pem lama yang sudah saya miliki
/etc/ssl/certs
.Menyimpan setidaknya rantai Anda di tempat lain menghindari masalah ini. Saya akhirnya membuat
/etc/ssl/local_certs
untuk memegang sertifikat dan rantai saya, sehingga mereka tidak hilang dalam kekacauan sertifikat CA yang akan Anda temukan/etc/ssl/certs
sumber
Sebenarnya tidak ada tempat yang tidak aman jika izin untuk masing-masing file / direktori diatur ke sesuatu seperti
chown root :0 private.key
danchmod 600 private.key
sehingga hanya root yang dapat membacanya. CSR dan file sertifikat kurang sensitif seperti yang Anda katakan.Dengan izin itu, jalur yang Anda sebutkan dan / usr / local / ssl akan baik-baik saja.
sumber
Lokasi sudah benar:
/etc/ssl/certs/
untuk.crt
file/etc/ssl/private
untuk.key
filePemilik harus
root:root
untuk keduanya (gunakansudo chmod root:root <file>
untuk mengubah jika diperlukan).Izin :
644
untuk.crt
file600
untuk.key
fileIni akan berhasil
nginx
.sumber