Cara menambahkan string penggunaan kunci yang diperluas saat membuat sertifikat yang ditandatangani sendiri menggunakan openssl

10

Saya menggunakan openssl pada Mac OS X 10.9 untuk menghasilkan sertifikat yang ditandatangani sendiri untuk Windows Server Remote Desktop Services.

Dengan menggunakan perintah di bawah ini saya dapat menghasilkan sertifikat,

   openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt

Namun, saya perlu menambahkan string penggunaan kunci diperpanjang Otentikasi Server (1.3.6.1.5.5.7.3.1) dan saya tidak tahu bagaimana melakukannya dalam perintah di atas.

Saya telah mencoba menggunakan opsi openssl -extfile dengan file yang mengandung ini,

[= default ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1

Namun, saya mendapatkan kesalahan bahwa "-file opsi tidak ditemukan"

joshu
sumber
1
(CLI) file konfigurasi openssl meyakinkan saya bahwa lebih mudah untuk menulis kode untuk menghasilkan sertifikat yang saya inginkan. Saya menggunakan golang, tapi saya kira Anda bisa menggunakan openssl clib.
Rhythmic Fistman

Jawaban:

9

Saat openssl x509menggunakan -extfile, perintah yang Anda gunakan openssl req,, perlu -configmenentukan file konfigurasi.

Jadi, Anda dapat menggunakan perintah seperti ini:

openssl req -x509 -config cert_config -extensions 'my server exts' -nodes \
            -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt

Prompt yang biasa untuk bit nama dibedakan didefinisikan dalam file konfigurasi default (yang mungkin /System/Library/OpenSSL/openssl.cnfpada OS X), tetapi file ini tidak diproses ketika Anda menggunakan -config, jadi file konfigurasi Anda juga harus menyertakan beberapa bit DN. Dengan demikian, yang dirujuk di atas cert_configmungkin terlihat seperti ini:

[ req ]
prompt             = no
distinguished_name = my dn

[ my dn ]
# The bare minimum is probably a commonName
            commonName = secure.example.com
           countryName = XX
          localityName = Fun Land
      organizationName = MyCo LLC LTD INC (d.b.a. OurCo)
organizationalUnitName = SSL Dept.
   stateOrProvinceName = YY
          emailAddress = [email protected]
                  name = John Doe
               surname = Doe
             givenName = John
              initials = JXD
           dnQualifier = some

[ my server exts ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
# 1.3.6.1.5.5.7.3.1 can also be spelled serverAuth:
# extendedKeyUsage = serverAuth

# see x509v3_config for other extensions

Seperti yang ditunjukkan dalam komentar, Anda mungkin dapat meninggalkan sebagian besar bidang DN. Untuk penggunaan HTTPS, saya pikir semua yang Anda butuhkan adalah CN yang cocok dengan nama host Anda.


The Distinguished Nama dan Atribut Bagian Format bagian dari req (1) menunjukkan bagaimana Anda bisa mengubah konfigurasi di atas untuk cepat untuk nilai-nilai (dan memberikan nilai default) jika Anda ingin menghasilkan beberapa sejenis sertifikat / permintaan.

Jika Anda memerlukan ekstensi sertifikat lain, periksa x509v3_config (5) untuk mengetahui bit lain apa yang dapat Anda tentukan di bagian ekstensi.

Chris Johnsen
sumber
1
Jika Anda hanya menghasilkan CSR dengan baris perintah ini maka gunakan -reqexts 'my server exts' untuk meminta agar CA nantinya menghasilkan sertifikat dengan server atau penggunaan kunci yang ditingkatkan.
memetech