Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник основных команд Linux с примерами.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
158.59 Кб
Скачать

16 Ssl сертификаты

SSL - Secure Socket Layer, криптографический протокол, использующий шифрование открытым ключем, для защиты передаваемых по сети данных. Протокол SSL, является важным элементом политики безопасности системы. SSL сертификат - электронный документ, используемый для подтверждения принадлежности транзакции тому или иному серверу и установления защищенного соединения между клиентом и сервером с шифрованием трафика. Часто используется на защищенных Веб серверах (https) или Mail серверах (imaps)

- Клиент должен создать сертификат, со всеми необходимыми данными

- Отправить запрос на сертификацию в один из "центров сертификации" (CA). Так-же на данном этапе, будет создан приватный ключ на локальной машине

- После обработки запроса, сертификат подписывается секретным ключем CA. Клиент имея публичный ключ CA, проверяет подлинность сертификата и далее может использовать его

- Если необходимо, можно объединить сертификат и ключ в один файл

Конфигурация OpenSSL

В данном примере мы будем использовать директорию /usr/local/certs. Проверьте и отредактируйте файл/etc/pki/tls/openssl.cnf, согласно вашей конфигурации.

#nano /etc/pki/tls/openssl.cnf

[ CA_default ]

dir = /etc/pki/CA # Храним все тут

certs = $dir/certs # Где хранить сертификаты

crl_dir = $dir/crl # Где хранить списки отзыва сертификатов (CRL)

database = $dir/index.txt # Индексный файл базы данных

Создать сертификат полномочий

Если у нас нет сертификата, подписанного CA, и вы не планируете отправлять запрос на сертификацию, можно создать свой сертификат

# openssl req -new -x509 -days 730 -config /etc/pki/tls/openssl.cnf -keyout CA/private/cakey.pem -out CA/cacert.pem

Запрос сертификации (CSR)

# openssl req -new -keyout newkey.pem -out newreq.pem \

-config /etc/ssl/openssl.cnf

# openssl req -nodes -new -keyout newkey.pem -out newreq.pem \

-config /etc/ssl/openssl.cnf # Без шифрования ключа

Сохраним запрос (newreq.pem), он может быть отправлен снова, для следующего обновления, подпись ограничивает срок действия сертификата. Кроме того, в процессе, будет создан приватный ключ newkey.pem

Подпись сертификата

Подписанный CA сертификат является действующим.

# cat newreq.pem newkey.pem > new.pem # Заменим "servername" на имя своего сервера

# openssl ca -policy policy_anything -out servernamecert.pem -config /etc/ssl/openssl.cnf -infiles new.pem

# mv newkey.pem servernamekey.pem

Теперь servernamekey.pem - содержит приватный ключ а servernamecert.pem - сертификат сервера.

Создание объединенного сертификата

IMAP серверу нужно иметь все приватные ключи и серверные сертификаты в одном файле, файл должен храниться в безопасном месте.

Создадим файл servername.pem содержащий и сертификаты и ключи:

1.Открыть файл servernamekey.pem в текстовом редакторе и скопировать приватный ключ в файлservername.pem

2.Открыть файл servernamecert.pem в текстовом редакторе и скопировать сертификат в файл servername.pem

# nano /etc/pki/CA/certs/servername.pem

-----BEGIN RSA PRIVATE KEY-----

MIICXQIBAAKBgQDutWy+o/XZ/[...]qK5LqQgT3c9dU6fcR+WuSs6aejdEDDqBRQ

-----END RSA PRIVATE KEY-----

-----BEGIN CERTIFICATE-----

MIIERzCCA7CgAwIBAgIBBDANB[...]iG9w0BAQQFADCBxTELMAkGA1UEBhMCREUx

-----END CERTIFICATE-----

# Итог /etc/pki/

CA/private/cakey.pem (CA server private key)

CA/cacert.pem (CA server public key)

certs/servernamekey.pem (server private key)

certs/servernamecert.pem (server signed certificate)

certs/servername.pem (server certificate with private key)

Информация о сертификате

# openssl x509 -text -in servernamecert.pem # Посмотр информации о сертификате

# openssl req -noout -text -in server.csr # Информация запроса

# openssl s_client -connect zabrosov.ru:443 # Проверить сертификат Веб-сервера

17 Шифрование файлов

17.1 OpenSSL | 17.2 GPG

17.1 OpenSSL

Зашифровать и расшифровывать:

# openssl aes-128-cbc -salt -in file -out file.aes # Шифровать файл

# openssl aes-128-cbc -d -salt -in file.aes -out file # Расшифровать файл

# tar -cf - directory | openssl aes-256-cbc -salt -out directory.tar.aes # Архивировать и зашифровать директории

# openssl aes-256-cbc -d -salt -in directory.tar.aes | tar -x -f - # Расшифровать директории и распаковать архив

# tar -zcf - directory | openssl aes-128-cbc -salt -out directory.tar.gz.aes # Архивировать и зашифровать директории

# openssl aes-128-cbc -d -salt -in directory.tar.gz.aes | tar -xz -f - # Расшифровать директории и распаковать архив

17.2 GPG

GnuPG известный способ шифрования и подписи электронных писем или других данных, кроме того gpg предоставляет расширенную систему управления ключами. В данных примерах рассматривается только шифрование файлов. Самым простым является симметричный шифр. В этом случае файл шифруется с помощью пароля, соответственно расшифровать его может тот, кто знает этот пароль, никаких ключей не требуется. GPG добавляет расширение "*.gpg" к имени зашифрованного файла

# gpg -c file # Зашифровать файл по паролю

# gpg file.gpg # Расшифровать файл ( -o другой файл)

Шифрование с использованием ключей

Приватный ключ и публичный ключ, основа ассиметричной криптографии. О чем нужно помнить:

1.Ваш публичный ключ используется другими для шифрования файлов, которые, как получатель, можете расшифровать только вы (даже не тот, кто его шифровал).

2.Ваш приватный ключ зашифрован по паролю и используется для расшифровки файлов, зашифрованных Вашим публичным ключем. Приваиный ключ должен храниться в безопасном месте. Помните, если приватный ключ или пароль от него будут потеряны, вместе с ними пропадут и зашифрованные файлы.

3.Ключевой файл, может содержать несколько ключей.

Вначале нужно сгенерировать пару ключей. Значения по-умолчанию вполне подойдут, однако вам нужно будет ввести имя, адрес электронной почты и комментарий (не обязательно). Комментарий полезен при создании более одного ключа для данного имени/e-mail. Так-же вам нужно будет задать ключевую фразу (именно фразу а не слово).

# gpg --gen-key # Это может занять некоторое время

~/.gnupg/pubring.gpg # Содержит ваш публичный ключ а так-же импортируемые ключи

~/.gnupg/secring.gpg # Может содержать больше одного ключа

# Опции

-e Зашифровать данные

-d Расшифровать данные

-r ИМЯ зашифровать для получателя ИМЯ (или 'полное имя' или 'email@domain')

-a Создать "ascii armored" вывод ключа

-o Вывести в файл

Шифрование только для персонального использования

Не требует экспорта/импорта какого либо ключа, они у вас уже есть.

# gpg -e -r 'Your Name' file # Зашифровать с помощью публичного ключа

# gpg -o file -d file.gpg # Расшифровать. Используется опция -o, иначе пойдкт в stdout

Шифрование и расшифровка с использованием ключей

Нам нужно экспортировать ваш публичный ключ, что-бы им могли пользоваться для расшифровки данных. Мы должны импортировать публичный ключ от Alice, что-бы шифровать файлы для нее. Ключи можно передать в обычном ascii файле. Например Alice экспортирует ключ, вы его импортируете себе, теперь вы можете шифровать для нее файлы и расшифровать их сможет только она.

# gpg -a -o alicekey.asc --export 'Alice' # Alice экспортирует ключ в ascii файл

# gpg --send-keys --keyserver subkeys.pgp.net KEYID # Alice кладет ключ на сервер

# gpg --import alicekey.asc # Вы импортируете ключ себе

# gpg --search-keys --keyserver subkeys.pgp.net 'Alice' # Или забираете его на сервере

# gpg -e -r 'Alice' file # Зашифровать файл для Alice

# gpg -d file.gpg -o file # Расшифровать файл, зашифрованный Alice для вас

Управление ключами

# gpg --list-keys # Список публичных ключей с KEYIDS

# KEYID следует за '/' например для: pub 1024D/D12B77CE - KEYID это D12B77CE

# gpg --gen-revoke 'Your Name' # Сгенерировать CRL (certificate revocation list)

# gpg --list-secret-keys # Список приватных ключей

# gpg --delete-keys NAME # Удалмть публичный ключ с локальной "связки ключей"

# gpg --delete-secret-key NAME # Удалить приватный ключ с локальной "связки ключей"

# gpg --fingerprint KEYID # Показать отпечаток ключа

# gpg --edit-key KEYID # Редактировать ключ (например подпись или добавить/удалить email)

18 Шифрование разделов

18.1 LUKS | 18.2 dm-crypt

18.1 LUKS

Используем Linux dm-crypt ( device-mapper ) на ядре 2.6. Шифровать будем раздел /dev/sdc1, это может быть любой раздел, диск, USB или файл, созданный losetup. Здесь мы будем использовать /dev/loop0, смотрите Файловая система. Device mapper использует метку для идентификации раздела, в данном примере sdc1, но это может быть любая другая строка.

LUKS с dm-crypt очень удобен для шифрования разделов диска, он позволяет иметь несколько паролей для одного раздела а так-же с легкостью менять их. Что-бы проверить доступно-ли у вас использование LUKS, наберите:cryptsetup --help.

# Создать раздел

# dd if=/dev/urandom of=/dev/sdc1 # Опционально. Только для параноиков

# cryptsetup -y luksFormat /dev/sdc1 # Это уничтожит все данные на sdc1

# cryptsetup luksOpen /dev/sdc1 sdc1

# mkfs.ext3 /dev/mapper/sdc1 # Будет создана файловая система ext3

# mount -t ext3 /dev/mapper/sdc1 /mnt

# umount /mnt

# cryptsetup luksClose sdc1 # Отсоединить зашифрованный раздел

# Монировать

# cryptsetup luksOpen /dev/sdc1 sdc1

# mount -t ext3 /dev/mapper/sdc1 /mnt

# Размонтировать

# umount /mnt

# cryptsetup luksClose sdc1

18.2 dm-crypt

# cryptsetup -y create sdc1 /dev/sdc1 # Или любой другой раздел, типа /dev/loop0

# dmsetup ls # Проверить, покажет: sdc1 (254, 0)

# mkfs.ext3 /dev/mapper/sdc1 # Только если делается впервые!

# mount -t ext3 /dev/mapper/sdc1 /mnt

# umount /mnt/

# cryptsetup remove sdc1 # Отсоединить зашифрованный раздел

by (1)life

http://glGizma.ru

http://eraglonas.ru

http://vk.com/comphelpsib

http://ok.ru/t89137933251

http://vk.com/pub37