Cara mengeluarkan sijil SSL yang ditandatangani sendiri dan membuat penyemak imbas anda mempercayainya. OpenSSL: Penyulitan kunci awam yang mudah

hidup pelbagai platform dan peranti, mereka selalunya perlu disediakan dalam format yang berbeza. Contohnya, pelayan Windows menggunakan fail PFX; pelayan Apache memerlukan fail PEM dengan sambungan .crt atau .cer. Dalam artikel ini kami akan membantu anda memahami isu berikut:

  • Apakah formatnya? Sijil SSL ov?
  • Apakah perbezaannya?
  • Bagaimana untuk menukar sijil SSL dari satu format ke format lain?

Gambaran Keseluruhan Format Sijil SSL

Format Sijil PEM

P.E.M.– format paling popular di kalangan pusat pensijilan. Sijil PEM mungkin mempunyai sambungan .pem, .crt, .cer dan .key(fail kunci peribadi). Ia adalah fail ASCII yang dikodkan menggunakan skema Base64. Apabila anda membuka fail format pem dalam penyunting teks, anda boleh melihat bahawa teks kod di dalamnya bermula dengan teg “—— BEGIN CERTIFICATE ——” dan berakhir dengan tag “—— END CERTIFICATE ——“.

Apache dan lain-lain pelayan yang serupa gunakan sijil dalam format PEM. Sila ambil perhatian bahawa satu fail mungkin mengandungi beberapa sijil SSL dan juga kunci peribadi, satu di bawah satu lagi. Dalam kes ini, setiap sijil diasingkan daripada yang lain lebih awal tag yang ditentukan MULA dan TAMAT. Sebagai peraturan, untuk memasang sijil SSL pada Apache, sijil dan kunci peribadi mestilah dalam fail yang berbeza.

Format Sijil DER

format DER ialah jenis sijil binari dan bukannya format PEM. Sambungan fail yang paling biasa digunakan dalam format PEM ialah .cer, tetapi kadangkala anda juga boleh mencari sambungan fail .der. Oleh itu, untuk membezakan sijil SSL dalam format PEM daripada format DER, anda harus membukanya dalam editor teks dan mencari teg permulaan dan penamat bagi sijil (BEGIN/END). Sijil SSL DER biasanya digunakan pada platform Java.

Sijil PKCS#7/P7B

Sijil SSL dalam format PKCS#7 atau P7B ialah fail yang disimpan dalam format Base64 ASCII dan mempunyai sambungan fail .p7b atau .p7c. Sijil P7B mengandungi teg permulaan sijil “—— BEGIN PKCS7 ——” dan teg akhir sijil “—— TAMAT PKCS7 ——“. Fail dalam format P7B termasuk hanya sijil SSL dan sijil SSL perantaraan anda. Kunci persendirian datang dalam fail berasingan. Sijil SSL dalam format PKCS#7/P7B menyokong platform berikut: Microsoft Windows dan Java Tomcat.

Sijil PFX (format PKCS#12)

Format Sijil SSL PKCS#12 atau, seperti yang disebut juga, sijil PFX- format binari, apabila digunakan dalam satu fail yang disulitkan, bukan sahaja sijil pelayan peribadi anda dan sijil perantaraan pihak berkuasa pensijilan disimpan, tetapi juga anda kunci peribadi. Fail PFX biasanya mempunyai sambungan .pfx atau .p12. Biasanya, fail PFX digunakan pada pelayan Windows untuk mengimport dan mengeksport fail sijil SSL dan kunci peribadi anda.

Menukar sijil SSL kepada OpenSSL

Perintah OpenSSL ini memungkinkan untuk menukar sijil dan kunci ke dalam format yang berbeza. Untuk menjadikan mereka serasi dengan jenis tertentu pelayan atau perisian. Sebagai contoh, anda perlu menukar fail PEM biasa yang akan berfungsi dengan Apache kepada format PFX (PKCS # 12) untuk menggunakannya dengan Tomcat atau IIS.

  • Tukar PEM kepada DER

    openssl x509 -outform der -in certificate.pem -out certificate.der

  • Tukar PEM kepada P7B

    openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer

  • Tukar PEM kepada PFX

    openssl pkcs12 -eksport -keluar sijil.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

  • Tukar DER kepada PEM

    openssl x509 -maklumkan der -sijil masuk.cer -sijil keluar.pem

  • Tukar P7B kepada PEM

    openssl pkcs7 -sijil_cetak -dalam sijil.p7b -sijil keluar.cer

  • Tukar P7B kepada PFX

    openssl pkcs7 -print_certs -masuk sijil.p7b -keluar sijil.ceropenssl pkcs12 -eksport -masuk sijil.cer -inkey privateKey.key -out sijil.pfx -certfile CACert.cer

  • Tukar PFX kepada PEM

    openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes

Penukar sijil SSL dalam talian

Terdapat juga program dalam talian untuk menukar sijil SSL daripada satu format kepada format yang lain. Sebagai contoh, kami boleh mengesyorkan penukar SSL daripada SSLShopper.

Gunakan penukar SSL ini untuk menukar sijil SSL pelbagai format, seperti PEM, DER, P7B dan PFX. Untuk menggunakan penukar SSL, cuma pilih fail sijil dan jenis semasanya (ia ditentukan oleh format sambungan), kemudian pilih format yang anda perlukan untuk menukar sijil SSL dan klik butang "Tukar Sijil".

Sila ambil perhatian bahawa bergantung pada format yang anda perlukan untuk menukar sijil SSL, anda memerlukan fail output yang berbeza.

Tukar PEM kepada DER

Untuk menukar sijil standard dalam format PEM kepada format DER binari, anda hanya memerlukan fail sijil SSL. Biasanya, anda menerimanya dalam arkib bersama-sama dengan sijil perantaraan. Sebagai peraturan, namanya mengandungi nama domain anda.

Tukar PEM kepada P7B / PKCS#7

Jika anda perlu menukar sijil SSL standard anda kepada fail dalam format P7B / PKCS#7, anda boleh, sebagai tambahan kepada sijil SSL domain anda, juga memuat naik fail dengan rantaian sijil. Kami menulis dengan lebih terperinci tentang rangkaian sijil SSL dalam artikel tentang CA-bundle.

Tukar PEM kepada PFX / PKCS#12

Sila ambil perhatian bahawa untuk penukaran format standard Untuk sijil SSL, anda perlu menambah satu lagi fail - kunci peribadi anda. Kunci persendirian ialah maklumat sulit, yang hanya perlu anda miliki. Oleh itu, pihak berkuasa pensijilan tidak menghantarnya bersama-sama dengan fail sijil anda.
Kunci persendirian dibuat pada masa permintaan CSR dijana. Jika anda menjana CSR pada pelayan anda, kunci harus disimpan secara automatik padanya. Jika anda membuat permintaan CSR dalam alat khas di laman web kami (pada halaman yang dipautkan atau semasa mengisi data teknikal), kunci ditunjukkan kepada anda pada penghujung penjanaan CSR (atau memasukkan data teknikal), tetapi tidak disimpan dalam pangkalan data kami. Oleh itu, adalah penting untuk anda menyimpan kunci peribadi itu sendiri.

Terdapat banyak situasi apabila anda perlu menyulitkan fail tertentu atau folder. Contohnya, jika data dihantar melalui saluran terbuka atau disimpan pada media luaran. Ramai orang (termasuk saya) menggunakan truecrypt, tetapi tujuan utama program ini adalah untuk bekerja dengan partition yang disulitkan, jadi ia tidak begitu baik dalam kes ini.

OpenSSL agak sesuai untuk tugasan sedemikian - penyelesaian merentas platform yang boleh dipercayai. Sokongan OpenSSL pelbagai algoritma penyulitan, ditambah ia dipasang secara lalai dalam banyak sistem operasi, dan pemasangan pada selebihnya tidak sukar.

Di bawah ialah asas penggunaan penyulitan simetri dan asimetri dalam OpenSSL, serta beberapa skrip yang memudahkan penyulitan asimetri dengan kunci sekali sahaja.

Cara paling mudah untuk melindungi data menggunakan OpenSSL ialah penyulitan simetri. Perintah berikut menyulitkan dan menyahsulit fail documents.zip menggunakan Algoritma AES dengan panjang kunci 256 bit:

Openssl enc -aes-256-cbc -salt -in documents.zip -out documents.enc
openssl enc -d -aes-256-cbc -in documents.enc -out documents.zip

Masalah dengan arahan ini mungkin memerlukan kata laluan. Terdapat situasi apabila ini tidak diingini. Contohnya, sandaran/penyulitan automatik data pada jadual, atau jika data disulitkan oleh seseorang dan dinyahsulit oleh orang lain.

Ia adalah untuk kes sedemikian penyulitan kunci awam dicipta. Secara umum, anda perlu mencipta kunci awam dan peribadi. Perintah pertama akan menjana kunci persendirian private.pem, yang kedua akan menjana kunci awam public.pem:

Openssl genrsa -out private.pem -aes256 2048
openssl rsa -in private.pem -pubout -out public.pem

Hasilnya, anda mendapat sepasang kunci RSA sepanjang 2048 bit. Malangnya, dalam sistem RSA Saiz data yang disulitkan dihadkan oleh saiz kunci, jadi tidak mungkin untuk menyulitkan lebih daripada 2Kb data. Terdapat cara untuk mengatasinya - maklumat disulitkan terlebih dahulu algoritma simetri(serupa dengan yang digunakan di atas) menggunakan kunci sekali. Kunci sekali ini kemudian disulitkan kunci awam. Semasa penyahsulitan, kunci satu kali dinyahsulit dengan kunci persendirian. Butiran lanjut tentang perkara ini telah ditulis dengan baik dalam artikel mengenai Habré.

Skrip berikut akan membantu mengautomasikan penyulitan, kerana outputnya anda akan menerima kunci dan data sekali sahaja (encrypt.sh) dalam bentuk yang disulitkan:

FILENAME="$1"
PUBLICKEY="$2"
SESSIONKEY="$3"
RESULT="$4"

# Hasilkan kunci simetri rawak
PASSIZE=30
jika [ -c /dev/urandom] ; kemudian
KEY=`head -c 30 /dev/urandom | openssl enc -base64`
lain
KEY=`openssl rand -base64 30`
fi
eksport KUNCI

# Sulitkan kunci simetri menggunakan kunci awam
openssl rsautl -encrypt -inkey "$PUBLICKEY" -out "$SESSIONKEY" -pubin<$KEY
EOF

# Sulitkan fail
openssl enc -aes-256-cbc -pass env:KEY -masuk "$FILENAME" -keluar "$RESULT"

Perintah berikut menggunakan kunci awam public.pem untuk menyulitkan fail documents.zip. Ia akan menjana sesi kunci satu kali yang disulitkan.kunci dan dokumen data yang disulitkan.enc:

./encrypt.sh documents.zip public.pem session.key documents.enc

Skrip penyahsulitan (decrypt.sh):

PRIVATEKEY="$1"
SESSIONKEY="$2"
DISULIT="$3"
DECRYPTED="$4"

# Nyahsulit kunci simetri menggunakan kunci persendirian
KEY=` openssl rsautl -decrypt -inkey "$PRIVATEKEY" -in "$SESSIONKEY" `
eksport KUNCI

# Nyahsulit fail
openssl enc -aes-256-cbc -d -pass env:KEY -masuk "$ENCRYPTED" -out "$DECRYPTED"

Perintah penyahsulitan menggunakan kunci persendirian private.pem dan kunci session.key sekali untuk menyahsulit fail documents.enc. Ia akan menghasilkan fail documents.zip:

./decrypt.sh private.pem session.key documents.enc documents.zip

Seperti yang anda lihat, penyulitan dengan kunci awam boleh hampir semudah simetri. Tetapi ada cara yang lebih mudah. Saya telah digesa untuk menulis catatan ini oleh blog SbF₅. Pengarangnya (tidak dinafikan lebih berpengalaman dalam bash daripada saya) menulis skrip yang mengarkibkan folder, menyulitkannya dengan kunci awam dan menghasilkan skrip lain yang mengandungi semua yang diperlukan: kunci sekali, data dan arahan sebenar untuk penyahsulitan. Selain itu, skrip boleh menjana pasangan kunci RSA untuk anda:

./encrypt-file.sh -keys public.pem private.pem
./encrypt-file.sh folder public.pem > decrypt-folder.sh
chmod +x decrypt-folder.sh
./decrypt-folder.sh private.pem > folder.tar

Dalam contoh ini, kami mula-mula menghasilkan pasangan kunci. Selepas itu folder folder telah disulitkan ke dalam skrip decrypt-folder.sh dan kemudian dinyahsulit ke dalam arkib folder.tar. Kelemahan yang mungkin bagi kaedah ini ialah data dalam decrypt-folder.sh disimpan dalam format BASE64, dan oleh itu saiznya bertambah.

UPD Dialihkan ke blog Keselamatan Maklumat.

Semua tapak utama telah lama bertukar kepada protokol https. Trend ini berterusan, dan ramai pelanggan kami mahu tapak mereka beroperasi melalui protokol yang selamat. Dan jika bahagian belakang sedang dibangunkan untuk aplikasi mudah alih, maka https diperlukan. Sebagai contoh, Apple memerlukan pelayan berkomunikasi dengan aplikasi melalui protokol selamat. Keperluan ini telah diperkenalkan sejak akhir tahun 2016.

Dalam pengeluaran tidak ada masalah dengan sijil. Biasanya penyedia hosting menyediakan antara muka mesra pengguna untuk menyambung sijil. Mengeluarkan sijil juga tidak sukar. Tetapi semasa menjalankan projek, setiap pemaju mesti menjaga sijil itu sendiri.
Dalam artikel ini, saya akan menunjukkan kepada anda cara mengeluarkan sijil SSL yang ditandatangani sendiri dan memaksa penyemak imbas mempercayainya.

Untuk mengeluarkan sijil untuk anda domain tempatan, anda memerlukan sijil akar. Semua sijil lain akan dikeluarkan berdasarkannya. Ya, untuk setiap domain peringkat teratas baharu anda perlu mengeluarkan sijil anda sendiri. Mendapatkan sijil akar agak mudah.
Mula-mula, mari kita hasilkan kunci peribadi:

Openssl genrsa -out rootCA.key 2048
Kemudian sijil itu sendiri:

Openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
Anda perlu masuk negara, bandar, syarikat dan lain-lain. Akibatnya, kami mendapat dua fail: rootCA.key Dan rootCA.pem

Mari kita beralih kepada perkara utama, mengeluarkan sijil yang ditandatangani sendiri. Sama seperti root, ini adalah dua arahan. Tetapi arahan akan mempunyai lebih banyak parameter. Dan kita akan memerlukan bantuan fail konfigurasi. Oleh itu, kami akan mengatur semua ini dalam bentuk skrip bash create_certificate_for_domain.sh

Parameter pertama diperlukan, kami akan memaparkan arahan ringkas untuk pengguna.

Jika [ -z "$1" ] kemudian echo "Sila berikan subdomain untuk membuat sijil untuk"; echo "cth. mysite.localhost" keluar; fi
Mari buat kunci peribadi baharu jika ia tidak wujud atau gunakan yang sedia ada:

Jika [ -f device.key ]; kemudian KEY_OPT="-key" lain KEY_OPT="-keyout" fi
Mari tanya pengguna untuk nama domain. Mari tambah keupayaan untuk menetapkan " nama yang selalu digunakan” (ia digunakan semasa menjana sijil):

DOMAIN=$1 COMMON_NAME=$(2:-$1)
Untuk mengelak daripada menjawab soalan mod interaktif, mari buat baris dengan jawapannya. Dan tetapkan tempoh sah sijil:

SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME" NUM_OF_DAYS=999
Pembolehubah SUBJECT menyenaraikan semua soalan yang sama yang ditanya semasa membuat sijil akar (sebuah negara, bandar, syarikat dan lain-lain). Semua nilai kecuali CN boleh ditukar mengikut budi bicara anda.

Openssl req -new -newkey rsa:2048 -sha256 -nod $KEY_OPT device.key -subj "$SUBJECT" -out device.csr
Menjana fail sijil. Untuk ini kami memerlukan fail tambahan dengan tetapan. Dalam fail ini kami akan menulis domain yang sijil dan beberapa tetapan lain akan sah. Jom panggil dia v3.ext. Sila ambil perhatian bahawa ini fail berasingan, bukan sebahagian daripada skrip bash.

AuthorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names DNS.1 = %%DOMAIN%% DNS.2 = *.%%DOMAIN%%
Ya, betul, sijil kami akan sah untuk domain utama, dan juga untuk semua subdomain. Simpan baris di atas ke fail v3.ext

Mari kembali ke skrip bash kami. Berdasarkan fail sokongan v3.ext cipta fail sementara menunjukkan domain kami:

Kucing v3.ext | sed s/%%DOMAIN%%/$COMMON_NAME/g > /tmp/__v3.ext
Kami mengeluarkan sijil:

Openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext
Namakan semula sijil dan padam fail sementara:

Mv device.csr $DOMAIN.csr cp device.crt $DOMAIN.crt # alih keluar fail temp rm -f device.crt;
Skrip sudah siap. Mari kita lancarkan:

./create_certificate_for_domain.sh mysite.localhost
Kami mendapat dua fail: mysite.localhost.crt Dan peranti.kunci

Sekarang anda perlu menentukan pelayan web laluan ke fail ini. Menggunakan nginx sebagai contoh, ia akan kelihatan seperti ini:

Kami melancarkan penyemak imbas, buka https://mysite.localhost dan lihat:

Penyemak imbas tidak mempercayai sijil ini. Apa patut saya buat?

Kami perlu menandakan sijil yang kami keluarkan sebagai Dipercayai. Di Linux (Ubuntu dan, mungkin, pengedaran berasaskan Debian yang lain) ini boleh dilakukan melalui penyemak imbas itu sendiri. Pada Mac OS X, ini boleh dilakukan melalui aplikasi Akses Rantai Kunci. Lancarkan aplikasi dan seret fail ke dalam tetingkap mysite.localhost.crt. Kemudian buka fail yang ditambahkan dan pilih Sentiasa Amanah:

Muat semula halaman dalam penyemak imbas dan:

Berjaya! Penyemak imbas mempercayai sijil kami.

Kongsi dalam komen, adakah anda menggunakan https untuk pembangunan tempatan?

Maxim Kovtun,
Ketua Jabatan Pembangunan

Selepas membeli sijil, anda boleh memuat turunnya dalam " Perkhidmatan am". Jika anda memasang sijil pada pelayan anda, gunakan contoh pemasangan yang dibentangkan di sini.

pemasangan pada hosting .masterhost

Jika anda perlu memasang sijil pada domain yang dihoskan pada kami pengehosan maya, maka ini boleh dilakukan dengan dua cara:

  • SNI (percuma):
    Pepohon perkhidmatan - Domain - Sokongan SSL - Tambah.
  • IP khusus (140 rubel sebulan. Biasanya diperlukan untuk bekerja dengan beberapa sistem pembayaran):
    Pepohon perkhidmatan - Domain - IP\SSL khusus - Tambah. Pilih sijil daripada menu lungsur.

* Untuk mengemas kini sijil, sebagai contoh, selepas pembaharuannya, ikuti tindakan yang serupa: Pokok Perkhidmatan - Domain - Sokongan SSL atau IP\SSL Khusus(bergantung kepada kaedah pemasangan) - Tukar.

Menjana (menggabungkan) sijil untuk perisian Windows

Untuk memasang sijil yang terhasil pada mana-mana perisian dalam Windows, fail sijil mesti mengandungi kedua-dua sijil itu sendiri dan kunci peribadi. Itu. Anda perlu menggabungkan sijil yang anda terima daripada kami dengan fail kunci peribadi anda.

Anda boleh melakukannya seperti ini:

openssl pkcs12 -eksport -sijil keluar.pfx -inkey privateKey.key -in certificate.crt

certificate.pfx - nama sijil yang akan anda terima hasil daripada penggabungan;

privateKey.key - kunci peribadi;

certificate.crt - sijil itu sendiri yang kami keluarkan kepada anda.

pache

  • Salin fail sijil SSL ke pelayan anda.
  • Kemudian anda perlu mencari fail Konfigurasi Apache untuk suntingan.

    Selalunya, fail konfigurasi tersebut disimpan dalam /etc/httpd. dalam kebanyakan kes fail konfigurasi utama dipanggil httpd.conf. Tetapi dalam beberapa kes menyekat mungkin terletak di bahagian bawah fail httpd.conf. Kadang-kadang anda boleh menemui blok seperti secara berasingan di bawah direktori, contohnya, /etc/httpd/vhosts.d/ atau /etc/httpd/sites/, atau dalam fail yang dipanggil ssl.conf.

    Sebelum membuka fail dalam editor teks, anda mesti memastikan terdapat blok yang mengandungi tetapan Apache.

  • Seterusnya, pasang blok SSL untuk menetapkan konfigurasi.

    Jika anda memerlukan tapak anda untuk berfungsi dengan sambungan selamat dan tidak terjamin, anda memerlukan hos maya untuk setiap sambungan. Untuk melakukan ini, anda harus membuat salinan yang sedia ada tanpa perlindungan hos maya dan buatnya untuk sambungan SSL seperti yang diterangkan di bawah dalam perenggan 4.

  • Kemudian buat blok untuk menyambung sambungan SSL.

    Di bawah ialah contoh hos maya yang sangat mudah untuk sambungan SSL. Bahagian yang diserlahkan dalam huruf tebal mesti ditambahkan pada konfigurasi SSL:

    DocumentRoot /var/www/html2 ServerName www.yourdomain.com SSLEngine pada SSLCertificateFile /path/to/your_domain_name.crt SSLCertificateKeyFile /path/to/your_private.key SSLCertificateChainFile /path/to/root.crt Betulkan nama fail agar sepadan dengan fail sijil:
    • SSLCertificateFile - fail sijil anda (contohnya: your_domain_name.crt).
    • SSLCertificateKeyFile - fail utama yang dicipta semasa menjana CSR.
    • SSLCertificateChainFile - fail sijil akar.
  • Sekarang semak konfigurasi Apache anda sebelum memulakan semula. Adalah lebih baik untuk menyemak fail konfigurasi Apache anda untuk mencari ralat sebelum memulakan semula. Memandangkan Apache tidak akan bermula semula jika fail konfigurasi mengandungi ralat sintaks. Untuk melakukan ini, gunakan arahan berikut: apachectl configtest
  • Sekarang anda boleh memulakan semula Apache.

ginx

  • Salin fail sijil ke pelayan.

    Salin sijil anda (nama_domain_anda.crt) dan sijil akar (root.crt) bersama-sama dengan fail .key yang anda hasilkan semasa membuat permintaan CSR ke direktori pada pelayan anda di mana anda akan memasang sijil. Untuk memastikan keselamatan, simpan fail sebagai baca sahaja.

  • Sambungkan sijil ke sijil akar.

    Anda perlu menggabungkan fail sijil dengan fail sijil akar menjadi satu fail .pem dengan menjalankan arahan berikut:

    cat root.crt >> nama_domain_anda.crt
  • Tukar fail maya hos Nginx.

    Buka fail hos maya Nginx anda untuk tapak yang anda lindungi. Jika anda memerlukan tapak untuk berfungsi dengan kedua-dua sambungan selamat (https) dan yang tidak selamat (http), anda memerlukan modul pelayan untuk setiap jenis sambungan. Buat salinan modul pelayan sedia ada untuk sambungan tidak terjamin dan tampal di bawah yang asal. Selepas itu tambahkan baris di bawah dalam huruf tebal:

    pelayan ( dengar 443; ssl hidup; ssl_certificate /etc/ssl/your_domain_name.crt; (atau .pem) ssl_certificate_key /etc/ssl/your_domain_name.key; server_name your.domain.com; access_log /var/log/nginx/nginx vhost.access.log; error_log /var/log/nginx/nginx.vhost.error.log; lokasi / ( root /home/www/public_html/your.domain.com/public/; index index.html; ) ) Menetapkan nama fail:
    • ssl_certificate - fail yang mengandungi sijil utama dan akar (langkah 2).
    • ssl_certificate_key - fail dengan kunci yang dijana semasa membuat CSR.
  • Mulakan semula Nginx.

    Masukkan arahan berikut untuk memulakan semula Nginx:

    sudo /etc/init.d/nginx mulakan semula

xchange 2010

  • Salin sijil anda ke pelayan Exchange.
  • Kemudian lancarkan Exchange Management Console dengan cara ini: Mula > Program > Microsoft Exchange 2010 > Konsol Pengurusan Pertukaran.
  • Sekarang klik "Urus Pangkalan Data" dan kemudian "Konfigurasi pelayan".
  • Seterusnya, pilih sijil SSL anda daripada menu di tengah tetingkap, kemudian klik pada "Lengkapkan Permintaan Belum Selesai" dalam menu "Tindakan".
  • Buka fail sijil anda, kemudian klik Buka > Selesai

    Exchange 2010 agak kerap memaparkan mesej ralat yang bermula dengan frasa "Data sumber rosak atau tidak dikodkan dengan betul Base64." Abaikan ralat ini.

  • Seterusnya, kembali ke Konsol Pengurusan Pertukaran dan klik "Serahkan Perkhidmatan kepada Sijil" untuk mula menggunakan sijil.
  • Pilih pelayan anda daripada senarai, klik "Seterusnya".
  • Sekarang pilih perkhidmatan yang harus dilindungi oleh sijil dan klik Seterusnya > Tugaskan > Selesai. Sijil anda kini dipasang dan sedia untuk digunakan di Exchange.

Pada masa kini adalah perkara biasa untuk meningkatkan keselamatan jaringan rangkaian atau hanya gunakan sijil SSL untuk pengesahan. Salah satu yang paling popular perisian percuma untuk membuat sijil ialah OpenSSL. Ini adalah utiliti baris arahan, yang membolehkan anda mencipta jenis lain sijil, seperti PKI atau HTTPS.

Dalam artikel ini kita akan melihat apa itu sijil, apakah itu, dan kami akan menganalisis secara terperinci penciptaan sijil OpenSSL. Selain itu, kami akan mempertimbangkan setiap peringkat supaya lebih mudah untuk anda memahami apa yang berlaku dan bagaimana.

Saya rasa kita perlu bermula dari awal lagi. Sijil pertama sekali membolehkan anda mengenal pasti seseorang dan mengesahkan bahawa anda adalah seperti yang anda katakan. Dan ia berfungsi seperti ini - terdapat dua kunci - peribadi dan awam. Anda boleh menyulitkan mesej menggunakan kunci awam, tetapi untuk menyahsulitnya anda hanya memerlukan kunci peribadi. Jika anda tidak mempunyai kunci peribadi, anda tidak akan dapat menyahsulit mesej yang disulitkan. Sebenarnya, sesiapa sahaja boleh menyulitkan mesej, tetapi hanya pemilik kunci peribadi (rahsia) boleh menyahsulitnya.

Jika anda dapat menyahsulit mesej dihantar yang disulitkan menggunakan kunci awam anda, itu adalah anda. Kekunci hanya berfungsi secara berpasangan dan anda tidak akan dapat menyahsulit apa-apa dengan kunci lain. Tetapi masih ada satu mata lagi. Bagaimanakah anda boleh menentukan bahawa kunci awam ini adalah milik anda, contohnya, ia milik domain anda? Mudah sahaja, anda hanya perlu meminta seseorang daripada sumber bereputasi seperti Comodo atau LetsEncrypt menandatangani kunci anda. Ini adalah apa yang dipanggil pihak berkuasa pensijilan.

Dalam tutorial ini kita akan berurusan dengan jenis kunci ini:

  • .pem, .crt, .cer- sijil siap pakai yang ditandatangani oleh pihak berkuasa pensijilan, sambungannya berbeza, tetapi ia bermaksud perkara yang sama. Secara ringkasnya, sijil ialah kunci awam yang ditandatangani, ditambah dengan sedikit maklumat tentang syarikat anda;
  • .kunci- kunci peribadi atau awam;
  • .csr- permintaan menandatangani sijil, fail ini menyimpan kunci awam anda serta maklumat tentang syarikat dan domain yang anda tentukan.

Sekarang mari kita lihat cara membuat sijil openssl, cara menandatanganinya dan apa yang perlu dilakukan untuk ini. Menjana kunci openssl adalah tugas yang agak mudah setelah anda membiasakannya.

Mencipta kunci peribadi dan menandatangani permintaan

Anda tidak perlu menandatangani sijil dengan CA; anda boleh menandatanganinya sendiri, tetapi lebih lanjut mengenainya kemudian. Anda juga perlu melalui keseluruhan proses. Mula-mula, mari kita lihat cara membuat kunci peribadi dari awal, dan tentukan maklumat yang diperlukan. Ini ialah CN di mana anda harus ditunjukkan Nama domain, yang mana anda akan menggunakan sijil, anda juga boleh tentukan Maklumat tambahan tentang syarikat, alamat dan organisasi anda, tetapi ini tidak lagi diperlukan.

Untuk membuat kunci persendirian dan permintaan menandatangani kunci awam, jalankan arahan berikut:

openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr

Pilihan -newkey menentukan bahawa pasangan kunci baharu perlu dibuat, dan dalam parameter kami menyediakan jenis rsa dan kerumitan 2048 bait. Pilihan -nodes menunjukkan bahawa anda tidak perlu menyulitkan kunci, pilihan -new menunjukkan bahawa anda perlu membuat permintaan csr. Jika anda sudah mempunyai kunci peribadi, maka anda boleh membuat permintaan csr untuknya dengan arahan berikut:

openssl req -key domain.key -new -out domain.csr

Semasa penciptaan, anda perlu menyediakan semua maklumat yang diperlukan untuk csr, ini terutamanya domain dan organisasi. Anda boleh membuat kunci peribadi secara berasingan:

openssl genrsa -des3 -out domain.key 2048

Di samping itu, anda boleh membuat permintaan CSR daripada sijil yang sedia ada dan kunci peribadi, maka anda tidak perlu memasukkan maklumat, ia akan diperoleh daripada sijil:

openssl x509 -dalam domain.crt -signkey domain.key -x509toreq -out domain.csr

Pilihan -x509toreq menentukan bahawa sijil untuk X509 mesti digunakan untuk mendapatkan CSR. X509 adalah sijil yang ditandatangani sendiri. Biasanya sijil ditandatangani oleh sijil lain, tetapi yang ini ditandatangani dengan sendirinya. Jika anda menerima sijil daripada CA, maka parameter ini tidak diperlukan.

Menandatangani Sijil OpenSSL

Katakan anda mempunyai kunci persendirian dan permintaan tandatangan yang sebenarnya, kunci awam. Sekarang anda perlu menandatanganinya untuk mendapatkan sijil yang boleh digunakan. Terdapat beberapa pilihan di sini. Anda boleh menghantar fail CSR untuk tandatangan kepada pihak berkuasa pensijilan, contohnya, LetsEncrypt. Anda boleh menandatangani sijil dengan kunci yang sama dengan mana ia dicipta, dan pilihan ketiga adalah untuk mencipta kuasa sijil anda sendiri.

Saya tidak akan mempertimbangkan kaedah pertama. Semuanya mudah di sini. Sama ada gunakan utiliti perkhidmatan, atau isi borang web dan terima sijil siap sedia. Pilihan kedua adalah lebih menarik. Kami akan menandatangani sijil kami sendiri, dengan kunci berdasarkan mana ia dicipta:

openssl x509 -signkey domain.key -in domain.csr -req -days 365 -out domain.crt

Menggunakan parameter -days, kami menunjukkan bahawa sijil akan sah selama 365 hari, iaitu selama setahun. Anda boleh menggabungkan semuanya ke dalam satu arahan dan mencipta kunci peribadi, csr dan sijil yang ditandatangani sekaligus:

openssl req -newkey rsa:2048 -nodes -keyout domain.key
-x509 -hari 365 -keluar domain.crt

Atau buat sijil openssl yang ditandatangani sendiri daripada kunci peribadi sedia ada tanpa csr:

openssl req -key domain.key -new -x509 -days 365 -out domain.crt

Pilihan -new mengatakan untuk meminta maklumat csr daripada pengguna. Untuk membolehkan penyemak imbas mempercayai kunci, anda perlu mengimport sijil yang sama ke dalam senarai yang dipercayai. Sekarang mari kita lihat cara ketiga untuk mencipta sijil OpenSSL - menandatanganinya menggunakan CA anda sendiri, pihak berkuasa pensijilan.

Sekarang anda fikir ini adalah sesuatu yang sangat rumit, bukan? Tetapi tidak, ini adalah folder biasa yang mengandungi kunci peribadi yang dilindungi kata laluan, yang dengannya kami akan menandatangani semua kunci lain. A pasangan terbuka kunci ini mesti ditambahkan pada semua penyemak imbas yang akan mempercayainya.

Secara amnya, pusat pensijilan dalam syarikat besar terletak di komputer berasingan, yang tidak disambungkan ke rangkaian. Tetapi sebagai contoh, kami akan meletakkan folder dalam kami sistem fail/dan lain-lain/:

openssl req -newkey rsa:4096 -x509 -extensions x509_ca -keyout /etc/ca/certs/ca.key -out /etc/ca/certs/ca.crt -days 3654

Parameter -extensions memuatkan sambungan yang diperlukan untuk mencipta sijil CA. Kami menetapkan tempoh sah yang panjang - sepuluh tahun. Yang tinggal hanyalah menandatangani sijil kami yang dibuat sebelum ini:

openssl ca -extensions x509_client -in ~/domain.csr -out ~/domain.crt

Selesai, sijil kami kini ditandatangani. Tetapi sekarang, untuk membolehkan penyemak imbas mempercayainya, anda perlu menambah sijil CA pada senarai penyemak imbas yang dipercayai.

Lihat sijil

Sijil disimpan dalam format pem, yang bermaksud anda tidak akan dapat membukanya sebagai fail teks dan perlu digunakan pasukan khas untuk melihat maklumat tentang mereka. Pertama, lihat kandungan csr:

openssl req -text -noout -verify -in domain.csr

Kami melihat kandungan sijil dalam mod teks biasa:

openssl x509 -teks -noout -dalam domain.crt

Kami menyemak sama ada sijil itu benar-benar ditandatangani oleh CA yang dikehendaki:

openssl sahkan -verbose -CAfile ca.crt domain.crt

Lihat kunci peribadi:

openssl rsa -daftar masuk domain.key

Untuk menyemak sama ada kunci persendirian, sijil dan kunci awam berkaitan antara satu sama lain, anda boleh mengira jumlah md5 untuk kunci ini; jika nilainya sepadan, maka terdapat kemungkinan bahawa ini adalah kunci daripada pasangan yang sama:

openssl rsa -noout -modulus -dalam domain.key | openssl md5
$ openssl x509 -noout -modulus -dalam domain.crt | openssl md5
$ openssl req -noout -modulus -dalam domain.csr | openssl md5