Приймаємо замовлення на контрольні, курсові, дипломні.
Виконання та супровід до захисту.
Всі міста України.
8 (044) 537-22-28
8 (093) 290-55-01


Назва: Протокол SSL
Тип: Реферати
Мова: Українська
Розмiр: 840,86 KB
Скачувань: 25


Скачати реферат українською    

1 2 3 4 5 6 7 8 9 10 11 12 13

Содержимое конфигурационного файла зависит от организации, можно даже воспользоваться утилитой /usr/lib/ssl/misc/CA.pl -newcert, которая создаст ключ и сертификат в одном файле в интерактивном режиме (хотя мне этот вариант не очень понравился, лучше один раз написать нормальный конфиг) — о дополнительных требованиях к конфигурации CA сертификата см. ниже.

3) Приведу пример скрипта, генерирующего клиентские сертификаты:

#!/bin/bash

dd if=/dev/random of=/tmp/.rnd count=64

RAND="/var/log/messages:/boot/vmlinuz:/tmp/.rnd"

REQ="openssl req"

X509="openssl x509"

RSA="openssl rsa"

GENRSA="openssl genrsa"

O="company"

C="RU"

ST="region"

L="city"

PURPOSES="digitalSignature, keyEncipherment"

CERTTYPE="client, email, objsign"

CA="/etc/openssl/CAcert.pem"

CAkey="/etc/openssl/CAkey.pem"

OUTDIR="/etc/openssl/clientcert/"

CN="client"

BITS=2048

DAYS=365

#Создаем секретный ключ во временной папке БЕЗ шифрования

TMP="/tmp/ssl-$$"

mkdir $TMP

if [ ! -d $OUTDIR ];then

mkdir $OUTDIR

fi

pushd $TMP > /dev/null

$GENRSA -rand $RAND -out tmp.key $BITS

# Создаем конфиг для клиента

cat > cfg <

[ req ]

default_bits = $BITS

distinguished_name = req_DN

extensions = v3_req

[ req_DN ]

countryName = "1. Country Name (2 letter code)"

countryName_default = "$C"

countryName_min = 2

countryName_max = 2

stateOrProvinceName = "2. State or Province Name (full name) "

stateOrProvinceName_default = "$ST"

localityName = "3. Locality Name (eg, city) "

localityName_default = "$L"

0.organizationName = "4. Organization Name (eg, company) "

0.organizationName_default = "$O"

organizationalUnitName = "5. Organizational Unit Name (eg, section) "

organizationalUnitName_default = "$OU"

commonName = "6. Common Name (eg, CA name) "

commonName_max = 64

commonName_default = "$CN"

emailAddress = "7. Email Address (eg, name@FQDN)"

emailAddress_max = 40

emailAddress_default = ""

[ v3_req ]

basicConstraints = CA:FALSE

keyUsage = $PURPOSES

nsCertType = $CERTTYPE

EOT

# Создаем запрос на сертификацию

$REQ -new -key tmp.key -config cfg -rand $RAND -out $CN.pem

# Этот файл лучше удалить побыстрее: мало ли чего...

rm -fr /tmp/.rnd

if [ $? -ne 0 ]; then

echo "Failed to make a certificate due to error: $?"

popd > /dev/null

rm -fr $TMP

exit $?

fi

# Подписываем сертификат сертификатом сервера

$X509 -req -in $CN.pem -CA $CA -CAkey $CAkey -CAsetserial

-extensions -config cfg -days $DAYS -out $OUTDIR$CN.pem

chmod 0400 $OUTDIR$CN.pem

chown root:root $OUTDIR$CN.pem

# Шифруем секретный ключ

$RSA -in tmp.key -des3 -out $OUTDIR$CN-key.pem

chmod 0400 $OUTDIR$CN-key.pem

chown root:root $OUTDIR$CN-key.pem

# Выполняем заключительные действия

popd > /dev/null

rm -fr $TMP

echo -e "Generation complete, go to $OUTDIR and give to client $CN his certificate and

n private key (for windows users you should use openssl pkcs12 utility)"

Дополнительные свойства, описанные в скрипте (v3_req), означают, что клиент может использовать сертификат для подписывания и шифрации, но его сертификат не является CA сертификатом. Для CA-сертификата значение basicConstraits должно быть равно CA:TRUE (об этом забывать нельзя!). Поле nsCertType определяет дополнительные назначения данного ключа (для использования в качестве клиента, подписывания, использования в почтовых сообщениях). Для CA-сертификатов обычно применяют следующие значения nsCertType: sslCA, emailCA. Для ssl-ключей серверов (например, Apache) используется значение nsCertType = server. Полученный таким образом сертификат клиента будет содержать информацию о поставщике сертификата (то есть о вашем сертификате организации). Клиенту необходимо будет передать его сертификат, его секретный ключ (зашифрованный!) и ваш сертификат организации. Для клиентов Micro$oft необходимо еще и перевести сертификаты в формат PKCS#12.

Для этого воспользуемся командой openssl pkcs12:

openssl pkcs12 -export -in client.pem

-inkey client-key.pem -out client.p12

-name "Client certificate from our organization"

Для обратного преобразования используется синтаксис:

openssl pkcs12 -in client.p12 -out client.pem

В выходной файл записываются сертификат клиента, ca сертификат, секретный ключ клиента (его можно зашифровать опцией -des3, -idea и.т.д.). Такое поведение позволяет использовать для вывода только формат pem (маркеры здесь обязательны!). Для экспорта сертификата организации можно воспользоваться командой pkcs12 (конечно же, без параметра inkey ;), можно также обработать сертификат организации base64 и сохранить в файле .cer (openssl x509 -in CA.pem -outform DER -out CA.cer).

В openssl существует компонент управления s/mime-сообщениями, называющийся openssl smime. Данная утилита позволяет зашифровывать, расшифровывать, управлять ЭЦП и MIME-заголовками писем. Приведу опять же несколько примеров ее использования:


Скачати україномовний реферат    


1 2 3 4 5 6 7 8 9 10 11 12 13



Украинская Баннерная Сеть