Apa itu kata sandi tantangan?

170

Saya sedang menyiapkan SSL di server Ubuntu. Salah satu bidang yang diminta sebagai bagian dari pengaturan CSR adalah "kata sandi tantangan". Apa itu? Defaultnya kosong. Apakah saya perlu memasukkan satu?

Will Martin
sumber

Jawaban:

152

"Kata sandi tantangan" yang diminta sebagai bagian dari generasi CSR, berbeda dari frasa sandi yang digunakan untuk mengenkripsi kunci rahasia ( diminta pada waktu pembuatan kunci, atau ketika kunci teks kemudian dienkripsi - dan kemudian diminta lagi setiap kali SSL diaktifkan) layanan yang menggunakannya mulai ).

Berikut adalah kunci yang dihasilkan, dan awal dari kunci yang dihasilkan:

$ openssl genpkey -algorithm rsa -out foo.key
............++++++
...++++++

$ head -3 foo.key
-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJ9jNAG4Noy//r/S
eeK/gEgGOV0BZm0CYmgSQGj4P6N3cJsPlGsG80qKTxTFwoEiXnM3BVeBpDdXhGKt

Kunci ini tidak memiliki frasa sandi. Saya tidak diminta untuk membuat, dan belum memasukkan satu. Sekarang, mari kita buat kunci terenkripsi:

$ openssl genpkey -algorithm rsa -des3 -out bar.key
...........................................++++++
.....................................++++++
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

$ head -3 bar.key
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQInfwj1iv3icMCAggA
MBQGCCqGSIb3DQMHBAizMHBklBexiwSCAoDtRKf1WtMiVMH7HraGTIG0rlQS6Xuj

Jadi harus jelas seperti apa kunci privat terenkripsi (yang apache, atau server berkemampuan SSL lainnya, akan perlu membuka kunci untuk itu ketika dimulai) dan kunci privat plaintext (yang tidak memerlukan membuka kunci pada waktu mulai layanan) terlihat seperti . Sekarang saya akan menghasilkan CSR dengan kata sandi tantangan dari kunci yang tidak dienkripsi :

$ openssl req -new -key foo.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) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:asdfasdf
An optional company name []:
-----BEGIN CERTIFICATE REQUEST-----
MIIBmzCCAQQCAQAwQjELMAkGA1UEBhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0
eTEcMBoGA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZDCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEAn2M0Abg2jL/+v9J54r+ASAY5XQFmbQJiaBJAaPg/o3dwmw+U
awbzSopPFMXCgSJeczcFV4GkN1eEYq2Cmam3tH6t8mVDh0/UryJSWBsaFm9mh9RF
gIpP0hEkYZTf/0X+X06ukt9S/Id9Z/tVgPsZA3TcNjNhJfVaTm81/4ykq8UCAwEA
AaAZMBcGCSqGSIb3DQEJBzEKDAhhc2RmYXNkZjANBgkqhkiG9w0BAQUFAAOBgQCa
ivuDRBlHOhBjg6wPbH9NvCnvEnxeEAkYi0Sl/Grdo/WCk17e+sv9wgqEW1QSIdbV
XzMeWidurv4AtcATwhfk9tBcYBCTxANkTONzhJG7Yk9OAz8g8Ljo8EEvPf4oHqpw
tBg10DCD2op0lCwL2LBdPO3RG20f/HD6fEXPVxZdOQ==
-----END CERTIFICATE REQUEST-----

Dan hanya untuk menunjukkan bahwa kunci belum secara ajaib dienkripsi:

$ head -3 foo.key
-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJ9jNAG4Noy//r/S
eeK/gEgGOV0BZm0CYmgSQGj4P6N3cJsPlGsG80qKTxTFwoEiXnM3BVeBpDdXhGKt

Jadi saya katakan lagi: "kata sandi tantangan" yang diminta sebagai bagian dari generasi CSR tidak sama dengan frasa sandi yang digunakan untuk mengenkripsi kunci rahasia. "Kata sandi tantangan" pada dasarnya adalah rahasia bersama antara Anda dan penerbit sertifikat SSL (alias Otoritas Sertifikasi, atau CA), yang tertanam dalam CSR, yang dapat digunakan penerbit untuk mengautentikasi Anda jika memang diperlukan. Beberapa penerbit sertifikat SSL membuatnya lebih jelas daripada yang lain; lihat bagian bawah halaman ini untuk melihat di mana mereka mengatakan kata sandi tantangan diperlukan - itu bukan saat Anda me-restart apache:

Jika Anda memilih untuk memasukkan dan menggunakan kata sandi tantangan, Anda harus memastikan bahwa Anda menyimpan kata sandi itu di tempat yang aman. Jika Anda perlu menginstal ulang sertifikat Anda karena alasan apa pun, Anda harus memasukkan kata sandi itu.

MadHatter
sumber
2
Apakah ada perbedaan antara "Penerbit SSL" dan CA (Otoritas Sertifikat)?
Jonathan
3
Secara teknis mereka tidak menerbitkan protokol SSL itu sendiri, melainkan sertifikat yang kompatibel dengan SSL. Saya merasa penerbit SSL kurang jelas. Penerbit Sertifikat SSL akan jelas, menurut pendapat saya.
Jonathan
6
Sangat (sangat) jawaban yang lengkap, ketika seseorang tidak membutuhkan IMHO. Berdasarkan pertanyaan yang diajukan, Anda dapat menghilangkan semua jawaban Anda kecuali mengikuti 'Kata sandi tantangan' pada dasarnya adalah rahasia bersama ... '. Saya percaya itu akan menjawab pertanyaan yang diajukan sama lengkapnya, dengan informasi yang kurang relevan yang kurang mengganggu.
joe
3
@ Jo terima kasih! Apa yang tidak dapat Anda lihat (karena Anda tidak memiliki perwakilan) adalah bahwa saya merespons jawaban yang sebelumnya dihapus sejak oleh pengguna yang sangat berperingkat tinggi (yang dalam hal ini, sayangnya, salah) sehingga harus melakukan bantahan poin demi poin. Penghapusan berikutnya, yang tidak dilakukan oleh penulisnya, memang membuat saya terlihat sedikit aneh, tetapi sampai sekarang saya telah memilih untuk membiarkannya. Jika cukup banyak orang yang mendukung sudut pandang Anda dengan meningkatkan komentar Anda, saya akan mengubah jawaban saya.
MadHatter
3
Saya bingung dengan pertanyaan yang sama ini, dan menemukan jawaban ini tidak terlalu membantu untuk pemahaman saya yang terbatas tentang subjek (karena cara itu ditulis), tetapi untungnya menemukan jawaban saya dari security.stackexchange.com/a/77082/67048
zagrimsan