Безопасность и оптимизация Linux.Редакция для Red Hat

Команды.


Команды описанные ниже мы будем часто использовать, но на самом деле их много больше, и вы должны изучить страницы руководства (man) и документацию, чтобы получить более подробную информацию.

Для примера, мы покажем вам как создавать сертификат для вашего Веб сервера Apache и/или ваш личный CA (Certifying Authority (подтверждение полномочий)) для подписания ваших “Certificate Signing Request”.

ЗАМЕЧАНИЕ. Все команды перечисленные ниже выполняются в каталоге “/etc/ssl/”.

1.1 Создание приватного ключа RSA защищенного парольной фразой для вашего сервера Apache.

[root@deep ssl]# openssl genrsa -des3 -out server.key 1024

Generating RSA private key, 1024 bit long modulus

......................+++++

.....+++++

e is 65537 (0x10001)

Enter PEM pass phrase:

Verifying password - Enter PEM pass phrase:

Пожалуйста, создайте резервную копию файла server.key и запомните парольную фразу.

1.2 Создание Certificate Signing Request (CSR) с серверным приватным ключом RSA.

[root@deep ssl]# openssl req -new -key server.key -out server.csr



Using configuration from /etc/ssl/openssl.cnf

Enter PEM pass phrase:

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [CA]:

State or Province Name (full name) [Quebec]:

Locality Name (eg, city) [Montreal]:

Organization Name (eg, company) [Open Network Architecture]:

Organizational Unit Name (eg, section) [Internet Department]:

Common Name (eg, YOUR name) [www.openna.com]:

Email Address [admin@openna.com]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:.

An optional company name []:.

ЗАМЕЧАНИЕ. Убедитесь, что вы ввели FQDN (Полностью определенное доменное имя (“Fully Qualified Domain Name”)) сервера, когда OpenSSL спросил вас о “CommonName” (например, когда вы создаете CSR для Веб сервера который будет позже доступен через https://www.mydomain.com/, введите www.mydomain.com).


После создания вашего Certificate Signing Request (CSR), у вас возникают два варианта:

Первый, это послать этот сертификат в коммерческие структуры Certifying Authority (CA), подобные Verisign или Thawte, для подписания. Вы обычно отправляете CSR через Веб форму, оплачиваете подписание, ждете Сертификата и запоминаете его в файле “server.crt”. Результатом всех этих операций будет настоящий сертификат, который может быть использован с Apache.

Второй, вы можете использовать ваш собственный CA и затем самостоятельно подписывать CSR этим CA. Это решение экономично, и позволяет организации поддерживать собственный CA сервер и создавать так много сертификатов, как нужно для внутреннего использования без выплаты каких-нибудь денег коммерческим CA.

К сожалению использование ваших собственных CA для создания сертификатов создает ряд проблем в электронной коммерции, потому что заказчики должны иметь некоторое доверие вашей организации через использования признанных коммерческих CA. Смотрите ниже информацию о том, как самостоятельно подписать CSR собственным CA.

1.3 Создание вашего приватного ключа RSA (CA).

[root@deep ssl]# openssl genrsa -des3 -out ca.key 1024

Generating RSA private key, 1024 bit long modulus

...........................+++++

............................................+++++

e is 65537 (0x10001)

Enter PEM pass phrase:

Verifying password - Enter PEM pass phrase:

Сделайте резервную копию этого файла ca.key и запомните парольную фразу (pass-phrase), которую вы ввели.

1.4 Создание самоподписанного (CA) сертификата (структура x509) с ключом RSA из CA.

[root@deep ssl]# openssl req -new -x509 -days 365 -key ca.key -out ca.crt

Using configuration from /etc/ssl/openssl.cnf

Enter PEM pass phrase:

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,



If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [CA]:

State or Province Name (full name) [Quebec]:

Locality Name (eg, city) [Montreal]:

Organization Name (eg, company) [Open Network Architecture]:

Organizational Unit Name (eg, section) [Internet Department]:CA Marketing

Common Name (eg, YOUR name) [www.openna.com]:

Email Address [admin@openna.com]:

[root@deep ssl]# mv server.key private/

[root@deep ssl]# mv ca.key private/

[root@deep ssl]# mv ca.crt certs/

ЗАМЕЧАНИЕ. Команда “req” создает самоподписанный сертификат, когда используется переключатель -x509.

1.5 Подписание запросов сертификата. (Мы создаем и используем наш личный Certificate Authority (CA))

Приготовьте скрипт для подписания (он нужен, потому что команда “openssl ca'' имеет некоторые странные требования и по умолчанию конфигурация OpenSSL не позволяет ее легко использовать напрямую). Скрипт с именем sign.sh находится в нашем архиве flopy.tgz в каталоге openssl. Используйте этот скрипт для подписания.

Сейчас вы можете использовать CA для подписания CSR сервера, чтобы создать реальный сертификат для внутреннего использования в Веб сервере Apache (предполагаем, что вы уже имеете файл server.csr под рукой):

[root@deep ssl]# /usr/bin/sign.sh server.csr

CA signing: server.csr -> server.crt:

Using configuration from ca.config

Enter PEM pass phrase:

Check that the request matches the signature

Signature ok

The Subjects Distinguished Name is as follows

countryName :PRINTABLE:'CA'

stateOrProvinceName :PRINTABLE:'Quebec'

localityName :PRINTABLE:'Montreal'

organizationName :PRINTABLE:'Open Network Architecture'

organizationalUnitName :PRINTABLE:'Internet Department'

commonName :PRINTABLE:'www.openna.com'

emailAddress :IA5STRING:'admin@openna.com'

Certificate is to be certified until Dec 1 14:59:29 2000 GMT (365 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated



CA verifying: server.crt <-> CA cert

server.crt: OK

This signs the CSR and results in a server.crt file.

[root@deep ssl]# mv server.crt certs/

Сейчас мы имеем два файла: server.key и server.crt. Они могут быть использованы в конфигурационном файле httpd.conf Веб-сервера Apache следующим образом:

SSLCertificateFile /etc/ssl/certs/server.crt (публичный ключ веб сервера)

SSLCertificateKeyFile /etc/ssl/private/server.key (приватный ключ веб сервера)

Файл server.csr больше не нужен.

[root@deep ssl]# rm -f server.csr

ЗАМЕЧАНИЕ. Если вы получили сообщение об ошибке во время подписания сертификата, это потому что вы ввели неправильно FQDN (“Fully Qualified Domain Name”) для сервера, когда OpenSSL запросил у вас “CommonName”; “CommonName” должен представлять из себя что-то подобное “my.domain.com” и не “domain.com”. Также, так как вы создавали сертификат и CA сертификат, важно, чтобы хотя бы небольшая часть информации представленной в них отличалась, или вы можете столкнуться с проблемами во время подписания удостоверяющих запросов.


Содержание раздела