LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В
..pdfГлава 12. OpenSSL – программное обеспечение для безопасной передачи данных |
181 |
Если пакет не установлен, перейдите в каталог, где находится пакет openssl-0.9.6b- 24asp.i686.rpm. Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в каталог /home/distrib, то выполните команду:
[root@dymatel /]# cd /home/distrib
и установите:
[root@dymatel distrib]# rpm –ihv openssl-0.9.6b-24asp.i686.rpm
или обновите пакет:
[root@dymatel distrib]# rpm –Uhv openssl-0.9.6b-24asp.i686.rpm
После установки пакета перейдите к настройке OpenSSL, описанной ниже.
Компиляция, оптимизация и инсталляция OpenSSL
Шаг 1
Проверьте целостность данных и подлинность архива, содержащего исходные коды OpenSSL.
Одним из способов проверки подлинности и целостности архива является определение его контрольной суммы MD5 и сравнение ее с суммой, опубликованной на сервере разработчика (контрольная сумма MD5 архива содержится в файле
ftp://ftp.openssl.org/source/openssl-0.9.7a.tar.gz.md5).
Определите контрольную сумму MD5 пакета:
[root@dymatel /]# cd /var/tmp/
[root@drwalbr tmp]# md5sum openssl-0.9.7a.tar.gz a0d3203ecf10989fdc61c784ae82e531 openssl-0.9.7a.tar.gz
Скачайте c сервера разработчика файл, содержащий контрольную сумму MD5 архива openssl- 0.9.7a.tar.gz:
[root@drwalbr tmp]# wget ftp://ftp.openssl.org/source/openssl-
0.9.7a.tar.gz.md5
и сравните ее c контрольной суммой, полученной с помощью команды md5sum:
[root@drwalbr tmp]# cat openssl-0.9.7a.tar.gz.md5 a0d3203ecf10989fdc61c784ae82e531
Если полученные значения сумм совпадают, значит, в вашем распоряжении находится подлинный и сохранивший целостность при передаче по сетям общего пользования архив с исходными кодами OpenSSL.
Подлинность архива также может быть проверена с использованием утилит GnuPG. Для этого вам необходимо получить с сервера разработчика файлы, содержащие открытый ключ GPG (по непонятным для авторов причинам он находится не на сервере http://www.openssl.org, а на сервере одного из членов команды разработчиков http://richard.levitte.org/pubkey2.asc):
[root@drwalbr tmp]# wget http://richard.levitte.org/pubkey2.asc
и сигнатуру архива openssl-0.9.7a.tar.gz:
[root@drwalbr tmp]# wget ftp://ftp.openssl.org/source/openssl-
0.9.7a.tar.gz.asc
После получения необходимых файлов импортируйте открытый ключ pubkey2.asc в базу ваших
GPG ключей: |
|
|
|
[root@drwalbr tmp]# gpg --import pubkey2.asc |
|
||
gpg: key E06D2CB1: public key "levitte@openssl.org" imported |
|
||
gpg: Total number processed: 1 |
|
|
|
gpg: |
imported: 1 |
(RSA: 1) |
|
Подтвердите подлинность добавленного ключа: |
|
||
[root@drwalbr tmp]# gpg --sign-key levitte@openssl.org |
|
||
pub |
2048R/E06D2CB1 created: 1998-09-18 expires: never |
trust: -/- |
|
(1). levitte@openssl.org
(2)Richard Levitte <levitte@lp.se>
(3)Richard Levitte <richard@levitte.org>
182 |
|
Часть 3. Криптографическое программное обеспечение... |
||
Really sign all user |
IDs? |
y |
|
|
pub 2048R/E06D2CB1 |
created: 1998-09-18 |
expires: never |
trust: -/- |
|
Primary key fingerprint: |
35 3E 6C 9E 8C |
97 85 24 BD 9F D1 9E 8F 75 23 |
||
6B |
|
|
|
|
levitte@openssl.org
Richard Levitte <levitte@lp.se> Richard Levitte <richard@levitte.org>
How carefully have you verified the key you are about to sign actually belongs
to the person named above? If you don't know what to answer, enter "0".
(0)I will not answer. (default)
(1)I have not checked at all.
(2)I have done casual checking.
(3)I have done very careful checking.
Your selection? 3
Are you really sure that you want to sign this key with your key: "root.drwalbr <root@drwalbr.und>"
I have checked this key very carefully.
Really sign? y
You need a passphrase to unlock the secret key for user: "root.drwalbr <root@drwalbr.und>"
1024-bit DSA key, ID E3A03FAD, created 2003-05-10
Enter passphrase: $ecretnoe_Slovo_root.drwalbr
и проверьте подлинность архива:
[root@drwalbr tmp]# gpg --verify openssl-0.9.7a.tar.gz.asc openssl-
0.9.7a.tar.gz
Если вы получите вывод вида:
gpg: Signature made Wed Feb 19 16:07:58 2003 MSK using RSA key ID E06D2CB1
gpg: Good signature from "levitte@openssl.org"
gpg: |
aka "Richard Levitte |
<levitte@lp.se>" |
|||
gpg: |
aka "Richard Levitte |
<richard@levitte.org>" |
|||
gpg: checking the trustdb |
|
|
|
||
gpg: checking at depth |
0 |
signed=1 |
ot(-/q/n/m/f/u)=0/0/0/0/0/1 |
||
gpg: checking at depth |
1 |
signed=0 |
ot(-/q/n/m/f/u)=1/0/0/0/0/0 |
||
то значит, в вашем распоряжении находится подлинный и сохранивший целостность при передаче по сетям общего пользования архив с исходными кодами OpenSSL.
Для демонстрации возможностей предлагаемых средств проверки подлинности архивов авторы вставили лишний байт, соответствующий символу «пробел» в архив openssl-0.9.7a.tar.gz и проверили его подлинность с помощью утилит md5sum и gpg:
[root@drwalbr tmp]# md5sum openssl-0.9.7a.tar.gz c0312ab825c0c9465e411b1475ab5d47 openssl-0.9.7a.tar.gz [root@drwalbr tmp]#
[root@drwalbr tmp]# gpg --verify openssl-0.9.7a.tar.gz.asc openssl-
0.9.7a.tar.gz
gpg: Signature made Wed Feb 19 16:07:58 2003 MSK using RSA key ID E06D2CB1
gpg: BAD signature from "levitte@openssl.org"
Глава 12. OpenSSL – программное обеспечение для безопасной передачи данных |
183 |
Утилита md5sum выдала контрольную сумму:
c0312ab825c0c9465e411b1475ab5d47
не соответствующую контрольной сумме, указанной на сервере разработчиков программного продукта: a0d3203ecf10989fdc61c784ae82e531
а утилита gpg сообщила о неправильной сигнатуре архивного файла: gpg: BAD signature from "levitte@openssl.org"
ЗАМЕЧАНИЕ Проверка подлинности и целостности скачиваемых архивов очень важна, с точки зрения обеспечения безопасности вашей системы. Если пробел, который мы вставили выше, непреднамеренно или специально был бы вставлен в строку сценария, удаляющего после инсталляции OpenSSL ненужные временные файлы, т. е. строка вида:
rm –rf /some_path/*
была бы заменена на:
rm –rf /some_path /*
в результате выполнения сценария были бы удалены все файлы в вашей системе. Модифицированная команда сначала бы удалила каталог /some_path, а затем все в корневом каталоге системы – /*.
Шаг 2
Распакуйте архив с исходными кодами OpenSSL в каталоге /var/tmp:
[root@dymatel tmp]# tar xzpf openssl-0.9.7a.tar.gz
и перейдите во вновь созданный каталог, содержащий исходные коды OpenSSL:
[root@dymatel tmp]# cd openssl-0.9.7a/
Шаг 3
Для оптимизации откомпилированного кода OpenSSL применительно к процессору, используемому на вашей системе, в файле /var/tmp/openssl-0.9.7a/Configure замените сроку:
"linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 –m486 -Wall::-D_REENTRANT::- ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux- shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
на:
"linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 -march=i686 -funroll-loops - fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:- fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
Строку:
"debug-linux-elf", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG - DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO –g –m486 -Wall::- D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:- fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
на:
"debug-linux-elf", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG - DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -O3 -march=i686 - funroll-loops -fomit-frame-pointer -Wall::-D_REENTRANT::-lefence - ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux- shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
Строку:
"debug-linux-elf-noefence", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG - DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -O3 –g –m486 -Wall::- D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
на:
"debug-linux-elf-noefence", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG - DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -O3 -march=i686 - funroll-loops -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
Шаг 4
184 |
Часть 3. Криптографическое программное обеспечение... |
В исходных кодах OpenSSL предполагается, что интерпретатор perl находится в каталоге /usr/local/bin/. Если вы точно следовали нашим рекомендациям по первичной установке системы, то интерпретатор должен находится в каталоге /usr/bin/perl. Для того, чтобы программа установки OpenSSL могла воспользоваться интерпретатором perl, выполните команду:
[root@dymatel openssl-0.9.7a]# perl util/perlpath.pl /usr/bin/perl
Шаг 5
Сконфигурируйте исходные коды OpenSSL:
[root@dymatel openssl-0.9.7a]#./configure linux-elf no-asm shared \
--prefix=/usr \ --openssldir=s/usr/share/ss1
Шаг 6 Откомпилируйте исходные коды, проверьте правильность компиляции и наличие соответствующих
библиотек, проинсталлируйте файлы OpenSSL, создайте и сохраните список инсталлированных файлов:
[root@dymatel openssl-0.9.7a]# LD_LIBRARY_PATH=`pwd` make all buildshared
[root@dymatel openssl-0.9.7a]# LD_LIBRARY_PATH=`pwd` make tests apps tests
[root@dymatel openssl-0.9.7a]# find /* > /root/openssl1 [root@dymatel openssl-0.9.7a]# make install build-shared [root@dymatel openssl-0.9.7a]# cd /usr/lib
[root@dymatel lib]# mv libcripto.so.0.9.7 ../../lib/ [root@dymatel lib]# mv libssl.so.0.9.7 ../../lib/
[root@dymatel lib]# ln –sf ../../lib/libcripto.so.0.9.7 libcripto.so [root@dymatel lib]# ln –sf ../../lib/libcripto.so.0.9.7 libcripto.so.0 [root@dymatel lib]# ln –sf ../../lib/libssl.so.0.96 libssl.s0 [root@dymatel lib]# ln –sf ../../lib/libssl.so.0.96 libssl.s0.0 [root@dymatel lib]# mv /usr/share/ssl/man/manl/* /usr/share/man/man1/ [root@dymatel lib]# mv /usr/share/ssl/man/man3/* /usr/share/man/man3/ [root@dymatel lib]# mv /usr/share/ssl/man/man5/* /usr/share/man/man5/ [root@dymatel lib]# mv /usr/share/ssl/man/man7/* /usr/share/man/man7/ [root@dymatel lib]# rm -rf /usr/share/ssl/man/
[root@dymatel lib]# rm -rf /usr/share/ssl/lib/ [root@dymatel lib]# strip /usr/bin/openssl [root@dymatel lib]# mkdir -p /usr/share/ssl/crl [root@dymatel lib]# cd /var/tmp/openssl-0.9.7a/
[root@dymatel openssl-0.9.7a]# find /* > /root/openssl2
[root@dymatel openssl-0.9.7a]# diff /root/openssl1 /root/openssl2 >
/root/ openssl.installed
[root@dymatel openssl-0.9.7a]# mv /root/openssl.installed
/very_reliable_place/openssl.installed.YYYYMMDD
Шаг 7
Удалите архив и каталог с исходными кодами OpenSSL:
[root@dymatel /]# cd /var/tmp/
[root@dymatel tmp]# rm -rf openssl-0.9.7a / [root@dymatel tmp]# rm -f opensal-0.9.7a.tar.gz
Конфигурирование OpenSSL
Конфигурирование OpenSSL осуществляется с использованием следующих файлов:
•главного конфигурационного файла /usr/shared/ssl/openssl.cnf;
•скрипта для самостоятельной подписи (без привлечения сертификационного центра подписи сертификата) /usr/shared/ssl/misc/sign.
Шаг 1 Отредактируйте в соответствии с приведенными ниже рекомендациями и вашими потребностями
файл/usr/shared/ssl/openssl.cnf:
ЗАМЕЧАНИЕ В файле /usr/shared/ssl/openssl.cnf, созданном при установке OpenSSL, необходимо изменить параметры только в разделах [CA_default]и [req_distinguished_name].
Глава 12. OpenSSL – программное обеспечение для безопасной передачи данных |
185 |
OpenSSL example configuration file.
#This is mostly being used for generation of certificate requests.
#This definition stops the following lines choking if HOME isn't
#defined.
HOME |
= . |
|
RANDFILE |
= |
$ENV::HOME/.rnd |
# Extra OBJECT IDENTIFIER |
info: |
|
#oid_file |
= |
$ENV::HOME/.oid |
oid_section |
= |
new_oids |
#To use this configuration file with the "-extfile" option of the
#"openssl x509" utility, name here the section containing the
#X.509v3 extensions to use:
# extensions |
= |
#(Alternatively, use a configuration file that has only
#X.509v3 extensions in its main [= default] section.)
[ new_oids ]
#We can add new OIDs in here for use by 'ca' and 'req'.
#Add a simple OID like this:
#testoid1=1.2.3.4
#Or use config file substitution like this:
#testoid2=${testoid1}.5.6
####################################################################
[ ca ] |
|
|
default_ca |
= CA_default |
# The default ca section |
#################################################################### |
||
[ CA_default ] |
|
|
dir |
= /usr/share/ssl |
# Where everything is kept |
certs |
= $dir/certs |
# Where the issued certs are kept |
crl_dir |
= $dir/crl |
# Where the issued crl are kept |
database |
= $dir/ca.db.index |
# database index file. |
new_certs_dir |
= $dir/ca.db.certs |
# default place for new certs. |
certificate |
= $dir/certs/ca.crt |
# The CA certificate |
serial |
= $dir/ca.db.serial |
# The current serial number |
crl |
= $dir/crl.pem |
# The current CRL |
private_key |
= $dir/private/ca.key |
# The private key |
RANDFILE |
= $dir/ca.db.rand |
# private random number file |
x509_extensions = usr_cert |
# The extentions to add to the |
|
cert |
|
|
#Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
#so this is commented out by default to leave a V1 CRL.
# crl_extensions |
|
|
= crl_ext |
|
|
default_days |
= |
365 |
# how long |
to |
certify for |
default_crl_days= |
30 |
# how long |
before next CRL |
||
default_md |
= |
md5 |
# which md |
to |
use. |
preserve |
= |
no |
# keep passed |
DN ordering |
|
#A few difference way of specifying how similar the request should look
#For type CA, the listed attributes must be the same, and the optional
#and supplied fields are just that :-)
186 |
|
Часть 3. Криптографическое программное обеспечение... |
policy |
= policy_match |
|
# For the CA policy |
|
|
[ policy_match ] |
|
|
countryName |
|
= match |
stateOrProvinceName |
= match |
|
organizationName |
|
= match |
organizationalUnitName |
= optional |
|
commonName |
|
= supplied |
emailAddress |
|
= optional |
#For the 'anything' policy
#At this point in time, you must list all acceptable 'object'
#types.
[ policy_anything ] |
|
countryName |
= optional |
stateOrProvinceName |
= optional |
localityName |
= optional |
organizationName |
= optional |
organizationalUnitName |
= optional |
commonName |
= supplied |
emailAddress |
= optional |
####################################################################
[ req ] |
|
|
default_bits |
= 1024 |
|
default_keyfile |
= privkey.pem |
|
distinguished_name |
= |
req_distinguished_name |
attributes |
= |
req_attributes |
x509_extensions = v3_ca # The extentions to add to the self signed cert
#Passwords for private keys if not present they will be prompted for
#input_password = secret
#output_password = secret
#This sets a mask for permitted string types. There are several options.
#default: PrintableString, T61String, BMPString.
# pkix |
: PrintableString, BMPString. |
#utf8only: only UTF8Strings.
#nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
#MASK:XXXX a literal mask value.
#WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
#so use this option with caution!
string_mask = nombstr
# req_extensions = v3_req # The extensions to add to a certificate request
[ req_distinguished_name ] |
|
countryName |
= Country Name (2 letter code) |
countryName_default |
= RU |
countryName_min |
= 2 |
countryName_max |
= 2 |
stateOrProvinceName |
= State or Province Name (full name) |
stateOrProvinceName_default |
= Moscow region |
localityName |
= Locality Name (eg, city) |
localityName_default |
= Ybileynyi |
0.organizationName |
= Organization Name (eg, company) |
0.organizationName_default |
= SIP RIA |
Глава 12. OpenSSL – программное обеспечение для безопасной передачи данных |
187 |
||
# we can do this but it is not needed normally :-) |
|
||
#1.organizationName |
= |
Second Organization Name (eg, company) |
|
#1.organizationName_default |
= |
World Wide Web Pty Ltd |
|
organizationalUnitName
commonName commonName_default commonName_max
emailAddress emailAddress_default emailAddress_max
# SET-ex3
[ req_attributes ] challengePassword challengePassword_min challengePassword_max
=Organizational Unit Name (eg, section)
=Common Name (eg, YOUR name)
=www.dymatel.und
=64
=Email Address
=root@dymatel.und
=40
=SET extension number 3
=A challenge password
=8
=20
unstructuredName |
= An optional company name |
[ usr_cert ]
#These extensions are added when 'ca' signs a request.
#This goes against PKIX guidelines but some CAs do it and some software
#requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
#Here are some examples of the usage of nsCertType. If it is omitted
#the certificate can be used for anything *except* object signing.
#This is OK for an SSL server.
# nsCertType |
= server |
#For an object signing certificate this would be used.
#nsCertType = objsign
#For normal client use this is typical
#nsCertType = client, email
#and for everything including object signing:
#nsCertType = client, email, objsign
#This is typical in keyUsage for a client certificate.
#keyUsage = nonRepudiation, digitalSignature, keyEncipherment
#This will be displayed in Netscape's comment listbox.
nsComment |
= "OpenSSL Generated Certificate" |
#PKIX recommendations harmless if included in all certificates. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer:always
#This stuff is for subjectAltName and issuerAltname.
#Import the email address.
#subjectAltName=email:copy
#Copy subject details
#issuerAltName=issuer:copy
188 |
Часть 3. Криптографическое программное обеспечение... |
#nsCaRevocationUrl |
= http://www.domain.dom/ca-crl.pem |
#nsBaseUrl |
|
#nsRevocationUrl |
|
#nsRenewalUrl |
|
#nsCaPolicyUrl |
|
#nsSslServerName |
|
[ v3_req ] |
|
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
#Extensions for a typical CA
#PKIX recommendation.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer:always
#This is what PKIX recommends but some broken software chokes on critical
#extensions.
#basicConstraints = critical,CA:true
#So we do this instead. basicConstraints = CA:true
#Key usage: this is typical for a CA certificate. However since it will
#prevent it being used as an test self-signed certificate it is best
#left out by default.
#keyUsage = cRLSign, keyCertSign
#Some might want this also
#nsCertType = sslCA, emailCA
#Include email address in subject alt name: another PKIX recommendation
#subjectAltName=email:copy
#Copy issuer details
#issuerAltName=issuer:copy
#DER hex encoding of an extension: beware experts only!
#obj=DER:02:03
#Where 'obj' is a standard or added object
#You can even override a supported extension:
#basicConstraints= critical, DER:30:03:01:01:FF
[ crl_ext ]
#CRL extensions.
#Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
#issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always,issuer:always
Шаг 2
Группа разработчиков OpenSSL предъявляет некоторые требования, затрудняющие использование файлов CA.pl или CA.sh для самостоятельной подписи ключей. Для подписи ключей авторы рекомендуют
Глава 12. OpenSSL – программное обеспечение для безопасной передачи данных |
189 |
самостоятельно воспользоваться скриптом, разработанным Ральфом С. Энгелчолом (Ralf S. Engelschall). Создайте файл /usr/share/ssl/misc/sign следующего содержания:
#!/bin/sh
##
##sign.sh -- Sign a SSL Certificate Request (CSR)
##Copyright (c) 1998-1999 Ralf S. Engelschall, All Rights Reserved.
# argument line handling CSR=$1
if [ $# -ne 1 ]; then
echo "Usage: sign.sign <whatever>.csr"; exit 1
fi
if [ ! -f $CSR ]; then
echo "CSR not found: $CSR"; exit 1
fi
case $CSR in
*.csr ) CERT="`echo $CSR | sed -e 's/\.csr/.crt/'`" ;; * ) CERT="$CSR.crt" ;;
esac
#make sure environment exists if [ ! -d ca.db.certs ]; then
mkdir ca.db.certs
fi
if [ ! -f ca.db.serial ]; then echo '01' >ca.db.serial
fi
if [ ! -f ca.db.index ]; then cp /dev/null ca.db.index
fi
#create an own SSLeay config cat >ca.config <<EOT
[ ca ]
default_ca = CA_own [ CA_own ]
dir = /usr/share/ssl
certs = /usr/share/ssl/certs new_certs_dir = /usr/share/ssl/ca.db.certs database = /usr/share/ssl/ca.db.index serial = /usr/share/ssl/ca.db.serial RANDFILE = /usr/share/ssl/ca.db.rand certificate = /usr/share/ssl/certs/ca.crt
private_key = /usr/share/ssl/private/ca.key default_days = 365
default_crl_days = 30 default_md = md5 preserve = no
policy = policy_anything [ policy_anything ] countryName = optional
stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional
EOT
#sign the certificate
echo "CA signing: $CSR -> $CERT:"
openssl ca -config ca.config -out $CERT -infiles $CSR echo "CA verifying: $CERT <-> CA cert"
190 |
Часть 3. Криптографическое программное обеспечение... |
openssl verify -CAfile /usr/share/ssl/certs/ca.crt $CERT
#cleanup after SSLeay rm -f ca.config
rm -f ca.db.serial.old rm -f ca.db.index.old
#die gracefully
exit 0
Шаг 3
Измените права доступа к файлу и назначьте владельцем файла суперпользователя root:
[root@dymatel /]# chmod 700 /usr/share/ssl/misc/sign [root@dymatel /]# chown 0.0 /usr/share/ssl/misc/sign
Тестирование OpenSSL
Для проверки работоспособности OpenSSL создайте на вашей системе SSL-сертификат Web-сервера Apache. Для создания ключей RSA и запросов на подтверждение подлинности сертификатов (Certificate Signing Requests, CSR) используется утилита /usr/bin/openssl.
Шаг 1 Выберите пять любых больших файлов со случайным (уникальным) содержанием, скопируйте их в
каталог /usr/share/ssl и переименуйте в random1, random2, random3, random4, random5.
Для выбора пяти случайных файлов и размещения их в /usr/share/ssl используйте команды:
[root@dymatel /]# cp /var/log/messages /usr/share/ssl/random1 [root@dymatel /]# cp /var/log/messages.1 /usr/share/ssl/random2 [root@dymatel /]# cp /var/log/messages.2 /usr/share/ssl/random3 [root@dymatel /]# cp /var/log/messages.3 /usr/share/ssl/random4 [root@dymatel /]# cp /var/log/messages.4 /usr/share/ssl/random5
Шаг 2
Создайте закрытый ключ RSA для Web-сервера, защищенный паролем:
[root@dymatel /]# cd /usr/share/ssl/
[root@dymatel ssl]# openssl genrsa -des3 -rand random1:random2:random3:random4:random5 -out www.dymatel.und.key 1024
1540748 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
........++++++
.................................................++++++
e is 65537 (0x10001)
Введите пароль для защиты вашего RSA-ключа:
Enter pass phrase for www.dymatel.und.key: $ecretn0e_Sl0vo
Подтвердите пароль:
Verifying - Enter pass phrase for www.dymatel.und.key: $ecretn0e_Sl0vo
ЗАМЕЧАНИЕ Обратите внимание, что в качестве имени системы нужно ввести www.dymatel.und, а не dymatel.und. В противном случае вы не сможете подписать сертификат.
Шаг 3
Сохраните ключ, содержащийся в файле www.dymatel.und.key, и защищающий его пароль в надежном месте, например, на дискете.
Шаг 4 Создайте запрос на подтверждение подлинности сертификата:
[root@dymatel ssl]# openssl req -new -key www.dymatel.und.key -out www.dymatel.und.csr
Введите пароль, защищающий ключ www.dymatel.und.key:
Enter pass phrase for www.dymatel.und.key: $ecretn0e_Sl0vo
