Бруй В.В., Карлов С.В. - Linux-сервер - пошаговые инструкции - инсталляции и настройки (1077321), страница 48
Текст из файла (страница 48)
Криптографическое программное обеспечение...Really sign all user IDs? ypub 2048R/E06D2CB1 created: 1998-09-18 expires: nevertrust: -/Primary key fingerprint: 35 3E 6C 9E 8C 97 85 24 BD 9F D1 9E 8F 75 236Blevitte@openssl.orgRichard Levitte <levitte@lp.se>Richard Levitte <richard@levitte.org>How carefully have you verified the key you are about to sign actuallybelongsto the person named above? If you don't know what to answer, enter "0".(0)(1)(2)(3)IIIIwillhavehavehavenot answer. (default)not checked at all.done casual checking.done very careful checking.Your selection? 3Are you really sure that you want to sign this keywith your key: "root.drwalbr <root@drwalbr.und>"I have checked this key very carefully.Really sign? yYou need a passphrase to unlock the secret key foruser: "root.drwalbr <root@drwalbr.und>"1024-bit DSA key, ID E3A03FAD, created 2003-05-10Enter passphrase: $ecretnoe_Slovo_root.drwalbrи проверьте подлинность архива:[root@drwalbr tmp]# gpg --verify openssl-0.9.7a.tar.gz.asc openssl0.9.7a.tar.gzЕсли вы получите вывод вида:gpg: Signature made Wed Feb 19 16:07:58 2003 MSK using RSA key IDE06D2CB1gpg: Good signature from "levitte@openssl.org"gpg:aka "Richard Levitte <levitte@lp.se>"gpg:aka "Richard Levitte <richard@levitte.org>"gpg: checking the trustdbgpg: checking at depth 0 signed=1 ot(-/q/n/m/f/u)=0/0/0/0/0/1gpg: 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.gzc0312ab825c0c9465e411b1475ab5d47 openssl-0.9.7a.tar.gz[root@drwalbr tmp]#[root@drwalbr tmp]# gpg --verify openssl-0.9.7a.tar.gz.asc openssl0.9.7a.tar.gzgpg: Signature made Wed Feb 19 16:07:58 2003 MSK using RSA key IDE06D2CB1gpg: 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:linuxshared:-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:linuxshared:-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",Шаг 4184Часть 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 appstests[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 – программное обеспечение для безопасной передачи данных185OpenSSL 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/.oidoid_section= new_oids######To use this configuration file with the "-extfile" option of the"openssl x509" utility, name here the section containing theX.509v3 extensions to use:extensions=(Alternatively, use a configuration file that has onlyX.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.4Or use config file substitution like this:testoid2=${testoid1}.5.6####################################################################[ ca ]default_ca= CA_default# The default ca section####################################################################[ CA_default ]dircertscrl_dirdatabasenew_certs_dir=====/usr/share/ssl$dir/certs$dir/crl$dir/ca.db.index$dir/ca.db.certs#####Where everything is keptWhere the issued certs are keptWhere the issued crl are keptdatabase index file.default place for new certs.certificateserialcrlprivate_keyRANDFILE=====$dir/certs/ca.crt$dir/ca.db.serial$dir/crl.pem$dir/private/ca.key$dir/ca.db.rand#####The CA certificateThe current serial numberThe current CRLThe private keyprivate random number filex509_extensions = usr_certcert# The extentions to add to the# Extensions to add to a CRL.
Note: Netscape communicator chokes on V2CRLs# so this is commented out by default to leave a V1 CRL.# crl_extensions= crl_extdefault_days=default_crl_days=default_md=preserve=36530md5no####how long to certify forhow long before next CRLwhich md to use.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 ]countryNamestateOrProvinceNameorganizationNameorganizationalUnitNamecommonNameemailAddress======matchmatchmatchoptionalsuppliedoptional# For the 'anything' policy# At this point in time, you must list all acceptable 'object'# types.[ policy_anything ]countryName= optionalstateOrProvinceName= optionallocalityName= optionalorganizationName= optionalorganizationalUnitName = optionalcommonName= suppliedemailAddress= optional####################################################################[ req ]default_bits= 1024default_keyfile= privkey.pemdistinguished_name= req_distinguished_nameattributes= req_attributesx509_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.