 |
от Rumen(9-08-2004)
рейтинг (34)
[ добре ]
[ зле ]
Вариант за отпечатване
ЧАСТ 2
Следваща стъпка: Създаване на собствени сертификати
Въпреки, че повечето CAs ще Ви генерират двойка ключове
заедно със сертификат с публичен ключ, Вие можете сами да си
генерирате двойка ключове и (самоподписани) сертификати.
Нека преминем стъпка по стъпка необходимите етапи за да
можете след това да поискате доверена (сертификационна
организация)CA да подпише Вашият сертификат.
Ключовете и сертификатите, генерирани в тези примери могат
да бъдат използвани от всяко приложение, поддържащо
стандартите: RSA [3], DSA [4] и X.509 [5]. Въпреки факта, че
ще ограничим нашите примерни сценарии до Apache [6], Tomcat
[7] servlet [8] контейнер, Вие можете да ползвате тези
техники с други приложения, включващи Уеб-услуги ползвайки
съответно техните конфигурационни методи.
Два работещи инструмента за работа с ключове/сертификати
са: OpenSSL [9] - библиотека от криптографски функции с
включени програми от команден ред за тяхното изпълнение; и
Keytool [10] - програма за работа с ключове и сертификати,
включена като част от JDK [11] (платформа за работа и
разработка на езика Java) на Sun.
OpenSSL
Тъй като OpenSSL пакета включва и други функции, като
SSL/TLS функции, ние тук ще разгледаме само функциите му за
генериране и управление на ключове/сертификати. Следната
команда генерира RSA частен ключ от който може да се получи
публичен ключ:
openssl genrsa -out private_key.pem 2048
Ако желаете да защитите своя частен ключ с парола (една
добра идея) - използвайте един от -des, des3 или -idea
ключовете, в зависимост от това кои алгоритъм за криптиране
на паролата желаете да използвате. Дължината на ключа (в
битове) тук е 2048, което е общоприетия минимум за
RSA-ключове.
Ако пък искате да генерирате DSA двойка ключове ето двете
стъпки. Първо създайте DSA параметър файл:
openssl dsaparam -out dsa_param.pem 2048
След (приключване на) горната стъпка,може да генерирате и
реалния DSA-ключ:
openssl gendsa -out private_key.pem dsa_param.pem
Тъй както и в примера с RSA по-горе, ако искате да защитите
своя частен ключ с парола използвайте една от следните
опции: -des, -des3 или -idea.
И двата примера по-горе използват PEM като изходен формат,
който пакетира Base64 ASN1 [12] DER данни с ASCII заглавия
(headers). За да преобразувате PEM-файловете към PKCS#12
[13] формат (за ползване с Tomcat или много други
Уеб-браузъри) изпълнете следната команда:
openssl pkcs12 -export -in pem_formatted_file -out
pkcs12-formatted-file
Все още не сме приключили. Необходим ни е сертификат с
публичен ключ, който да работи със съответният частен ключ.
Ще започнем със създаване на подписан от нас (самоподписан)
X.509 сертификат:
openssl req -new -x509 -key private_key.pem -out
certificate.der
Тази команда интерактивно пита потребителя за нужната
информация, относно субекта за който се генерира сертификата
(Уеб-сървър или потребител), цялата информация се използва
за да се идентифицира субекта на сертификата с публичен
ключ; тоест да се прикрепи субект към публичният ключ. Ако
генерирате този сертификат само с тестова цел това е
достатъчно. Обаче за повечето реални приложения е необходимо
сертификата да бъде подписан и от доверен CA. Подробностите
по този процес са различни за различните CA, но повечето ще
изискат и приемат - Искане за Подпис на Сертификат (CSR).
Следната командаЗа ще го генерира:
openssl req -new -key private_key.pem -out
certificate_request.csr
Забележете, че тази команда се различава от последната само
по липсата на -x509 опцията (която самоподписва
сертификата). Резултата от тази команда - CSR вече може да
бъде изпратен на CA, ползвайки изисквания за това начин.
След като CA е проверила идентичността на субекта (отново
тези стъпки са различни за различните CA) CA ще издаде
подписан сертификат.
Комбинацията от частен ключ и сертификат с публичен ключ
вече може да се използва в PKI-съвместими приложения, т.е.
да се активират SSL-връзки с Вашият Tomcat servlet
контейнер, както ще видим след малко.
Keytool
Генериране на двойки ключове и управление на сертификати с
използване на keytool е малко по-просто от използването на
OpenSSL. Например, вместо да трябва да създавате отделно
PKCS#12 контейнер за ключове, keytool създава Java Контейнер
за Ключове (JKS-Java Key Store), като част от процеса на
генериране на двойка ключове/сертификат. От друга страна
keytool не предлага приблизително еднаква функционалност в
сравнение с OpenSSL. Например, keytool не може да вмъква или
извежда частни ключове в/от контейнер за ключове.
Започваме с генериране на RSA двойка ключове (заедно с
съответния самоподписан сертификат) използвайки keytool:
keytool -genkey -keyalg RSA -keysize 2048 -keystore
my_keystore.jks -alias me
Тази команда ще Ви поиска необходимите за сертификата
данни, както в примера с OpenSSL по-горе. Опцията -alias Ви
позволява да дадете 'име' (псевдоним) на двойката
ключ/сертификат в контейнера за ключове. Ако искате да
генерирате DSA двойка ключове, изпълнете следната
команда:
keytool -genkey -keyalg DSA -keysize 2048 -keystore
my_keystore.jks -alias me
Още веднъж, ако искате само да генерирате тестов
сертификат, може да спрете до тук. Ако обаче искате доверен
CA да подпише Вашият сертификат е необходимо да генерирате
CSR със следната команда:
keytool -certreq -alias me -keystore my_keystore.jks -file
certificate_request.csr
Сега вече може да изпратите генерираният CSR-файл на своя
CA, използвайки изискваните от тях начини. След приключване
на процеса на проверка CA ще издаде подписан сертификат.
Пример с Tomcat
Сега след като сме генерирали нашата двойка ключове
(публичен/частен) и имаме издаден от CA сертификат с
публичен ключ, който върви с тях, вече сме готови да ги
използваме. Нашата първа стъпка е да се убедим, че
контейнера за ключове е с правилен формат за ползване от
Tomcat. Tomcat версия 5 поддуржа само контейнери с ключове
във формати - JKS или PKCS#12. Ако сте използвали OpenSSL за
създаване на Вашата двойка ключове и съответно искането за
подпис на сертификат то е необходимо да поставите своя
частен ключ и съответният му сертификат с публичен ключ
заедно в PKCS#12-съвместим контейнер за ключове:
openssl pkcs12 -export -in certificate_file -inkey
private_key.pem -chain -name tomcat -outfile
my_keystore.p12
Тази команда взема файла, съдържащ сертификата с публичен
ключ, издаден от CA (certificate_file) и го сдвоява със
съответният частен ключ (private_key.pem) в
PKCS#12-съвместим контейнер за ключове, задавайки му
псевдоним "tomcat", който се ползване от Tomcatе
по-подразбиране.
Ако сте генерирали своята двойка ключ/сертификат,
използвайки keytool не е необходимо да променяте нищо -
keytool създава JKS-съвместими контейнери за ключове.
Убедете се обаче, че след като веднъж сте получили подписан
от CA сертификат (в отговор на Вашата CSR-заявка по-горе)
трябва да поставите този сертификат в своя контейнер за
ключове ето така:
keytool -import -alias tomcat -trustcacerts -file
certificate_file -keystore my_keystore.jks
Тази команда сдвоява подписаният от CA сертификат (във
файла certificate_file) със съответният частен ключ в
контейнера за ключове, създаден преди това и задавайки му
псевдонима по подразбиране "tomcat".
Почти приключихме. Ншата последна стъпка е да конфигурираме
Tomcat да поддържа SSL-връзка като редактираме
$TOMCAT_HOME/conf/server.xml файла, добавяйки следния
Connector-елемент:
Това дава на Tomcat възможност да следи за SSL-връзки на
порт-443. Забележете също, че ако Вашият контейнер за
ключове е PKCS#12-съвместим, то трябва да промените
параметъра 'keystoreType'. Също така, ако искате да
задължите клиентите също да се идентифицират с валидни
сертификати (взаимна идентификация), то променете параметъра
'clientAuth' на 'true'.
Също така е важно да проверите дали
'redirectPort'параметъра за не-SSL връзки е настроен да
съвпада с този на SSL. За повече информация за тази и
други сървърни конфигурации на Tomcat вижте тук [14].
След като вече сте редактирали конфигурационния файл на
сървъра може да рестартирате Tomcat и да проверите Вашата
нова SSL-връзка чрез зареждане на адрес:
https://localhost:443 във Вашият браузър.
Това подразбира факта, че Вашият браузър работи на същата
машина на която е инсталиран Tomcat. Вие ще видите
тематичната страница на Tomcat (или това, което сте
конфигурирали за Ваше базово приложение), а също Вашият
браузър ще индикира наличието на работеща SSL-връзка.
ВРЪЗКИ:
[1]"another article" - http://www.counterpane.com/pki-risks.html
[2]"two" - http://www.apache-ssl.org/7.5things.txt
[3]"RSA" - http://www.rsasecurity.com/rsalabs/node.asp?id=2125
[4]"DSA" - http://www.itl.nist.gov/fipspubs/fip186.htm
[5]"X.509" - http://www.ietf.org/html.charters/pkix-charter.html
[6]"Apache" - http://www.apache.org/
[7]"Tomcat" - http://jakarta.apache.org/tomcat
[8]"servlet" - http://java.sun.com/products/servlets
[9]"OpenSSL" - http://www.openssl.org/
[10]"Keytool" - http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/keytool.html
[11]"Java Development Kit" - http://java.sun.com/
[12]"ASN.1" - http://asn1.elibel.tm.fr/en/standards
[13]"PKCS#12" - http://www.rsasecurity.com/rsalabs/node.asp?id=2138
[14]"this" - http://jakarta.apache.org/tomcat/tomcat-5.0-doc/config/index.html
Приятно четене.
<< lm_sensors + Superkaramba | Сигурни Уеб-услуги: основи на PKI - Част 1 (превод) >>
|
 |