Search:

Протокол SSL

openssl x509 -req -in clientreq.pem

-extfile /usr/lib/ssl/openssl.cnf

-extensions /usr/lib/ssl/openssl.cnf -CA CAcert.pem
-CAkey serverkey.pem

-CAcreateserial -out clientcert.pem

Подписать запрос на сертификацию (-req) файла -in, используя доверенный CA сертификат -CA и его секретный ключ -CAkey. В конечный сертификат клиента (-out), записываются дополнительные параметры сертификата 3-й версии из файла /usr/lib/ssl/openssl.cnf (конфигурационный файл по умолчанию). Но об этом я расскажу после на конкретном примере. Такое поведение x509 позволяет организовать свой центр сертификации, подписывающий запросы клиентов на сертификацию.

openssl x509 -in CAcert.pem -addtrust sslclient

-alias "myorganization CA"

-out CAtrust.pem

Преобразование сертификата -in в доверенный сертификат для использования в SSL-клиентах (sslserver — использование в качестве сертификата сервера, emailProtection — использование в качестве сертификата S/MIME).

Я еще раз хотел бы вернуться к проблеме построения CA. Для использования внутри организации можно использовать self-signed сертификат, но для использования CA вне организации приходится использовать сертификаты, выданные или подписанные сторонней организацией. Во втором случае возникает проблема выбора такой сторонней организации (она легко разрешается для дочерних компаний), которая требует юридического анализа (в разных странах существуют свои законы криптографии и поэтому дать какой-либо конкретный совет я не могу). Если вам довелось работать в российской правительственной компании, то считайте, что вам не повезло — использовать openssl для работы с правительственными организациями нельзя. Наши уважаемые гос. деятели добавили геморроя админам, разрешив использовать только алгоритмы ГОСТ (симметрические, асимметрические, хеширования — меня просто выворачивает от самого этого слова ГОСТ ;), поэтому использовать вам придется только специальные программы, реализующие эти алгоритмы. Я же приведу здесь пример построение собственного CA с self-signed сертификатом:

1) Генерируем секретный ключ:
openssl genrsa -out CAkey.pem -rand randfile -des3 4096

2) Создаем self-signed сертификат:
openssl req -new -x509 -key CAkey.pem -out CAcert.pem -days 365 -config cfg

Содержимое конфигурационного файла зависит от организации, можно даже воспользоваться утилитой /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)"

Перейти на сторінку номер:
 1  2  3  4  5  6  7  8  9  10  11  12  13 


Подібні реферати:

Основні роботи операційної системи UNIX. Підтримка мережі UNIX

В даний час UNIX використовується на найрiзноманiтнiших апаратних платформах – вiд персональних робочих станцiй до потужних серверiв з тисячами користувачiв. Це пов’язано з тим, що UNIX – багатозадачна багатокористувацька система, що володiє широкими можливостями. З точки зору користувача, в операцiйнiй системi UNIX iснує два типи об’єктiв: файли i процеси. Всi данi зберiгаються у виглядi файлiв, доступ до периферiйних пристроїв здiйснюється як читання/запис в спецiальнi файли. Пiд час запуску програми ядро операцiйної ...

Основи веб-дизайну

І.Вступ Зародження і розвиток мережі Інтернет стало початком нової комп’ютерної епохи – епохи зрілості. Мільйони і мільйони розкиданих по всьому світу стали єдиною частиною Інформаційної мережі, річками накопичених знань злились в один, величний Океан. Що таке Інтернет? Навряд чи ви знайдете відповідь на це питання в книжках та статтях, присвячених цьому феномену.Для когось це тільки лиш інструмент для пошуку та обміну інформації. Для когось дім, новий всесвіт, кіберпростір, в якому людина проводить набагато більше часу, ...

Дослідники автоматичного перекладу...

Зміст: Обчислювальні машини і переклад. В.Інгве 3 Модель синтаксичної структури російської фрази та алгоритм синтезу англійської при автоматичному перекладі. Д.М.Йєйтс. 7 “Мультістор” – система кореляційного аналізу для англійської мови. Е. фон Глаузерсфельд 12 Полуавтоматичний переклад з англійської на французьку мови: система “Людина – машинний тезаурус”. М.Мастерман 17 Обчислювальні машини і переклад. В.Інгве Німецікий дослідник автоматичного перекладу Віктор Інгве вважав, що для подолання труднощів при перекладі треба ...