Создание сертификатов PKCS12

Материал из ALT Linux Wiki
Перейти к: навигация, поиск

Создание сертификатов PKCS12[править]

Данная статья содержит краткое руководство для создания сертификатов PKCS12.

Такие сертификаты используются в качестве ключей на защищённых веб-страницах и в электронной подписи OpenOffice.org.

Основано на статье: Creating PKCS12 Certificates

Для того, чтобы создать сертификат, вам необходимо программное обеспечение openssl (если нет команды openssl, установите посредством команды apt-get install openssl).


Шаг 1. Подготавливаем место[править]

Создайте каталог (например, cert) и перейдите в него. Выполните команды:

mkdir private
mkdir certs
echo '100001' >serial
touch certindex.txt

В этом каталоге создаём файл конфигурации openssl.conf следующего содержимого:

#
# OpenSSL configuration file.
#

# Establish working directory.
dir                                     = .

[ ca ]
default_ca                              = CA_default

[ CA_default ]
serial                                  = $dir/serial
database                                = $dir/certindex.txt
new_certs_dir                           = $dir/certs
certificate                             = $dir/cacert.pem
private_key                             = $dir/private/cakey.pem
default_days                            = 365
default_md                              = sha256
preserve                                = no
email_in_dn                             = yes # установите в no если не хотите чтобы поле email присутствовало в сертификате,
                                              # без поля email сертификат нельзя использовать для подписи и шифрования электронной почты!
nameopt                                 = default_ca
certopt                                 = default_ca
policy                                  = policy_match

[ policy_match ]
countryName                             = match
stateOrProvinceName                     = match
organizationName                        = match
organizationalUnitName                  = optional
commonName                              = supplied
emailAddress                            = optional

[ req ]
default_bits                            = 1024                  # Size of keys
default_keyfile                         = key.pem               # name of generated keys
default_md                              = sha256                   # message digest algorithm
string_mask                             = nombstr               # permitted characters
distinguished_name                      = req_distinguished_name
req_extensions                          = v3_req

[ req_distinguished_name ]
# Variable name                         Prompt string
#-------------------------        ----------------------------------
0.organizationName                      = Organization Name (company)
organizationalUnitName                  = Organizational Unit Name (department, division)
emailAddress                            = Email Address
emailAddress_max                        = 40
localityName                            = Locality Name (city, district)
stateOrProvinceName                     = State or Province Name (full name)
countryName                             = Country Name (2 letter code)
countryName_min                         = 2
countryName_max                         = 2
commonName                              = Common Name (hostname, IP, or your name)
commonName_max                          = 64

# Default values for the above, for consistency and less typing.
# Variable name                         Value
#------------------------         ------------------------------
0.organizationName_default              = Company
localityName_default                    = Moscow
stateOrProvinceName_default             = Moscow
countryName_default                     = RU
emailAddress_default					= email@domain.ru
commonName_default						= Common text

[ v3_ca ]
basicConstraints                        = CA:TRUE
subjectKeyIdentifier                    = hash
authorityKeyIdentifier                  = keyid:always,issuer:always

[ v3_req ]
basicConstraints                        = CA:FALSE
subjectKeyIdentifier                    = hash

Шаг 2. Создаём сертификат сертифицирующей организации (CA)[править]

openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 365 -config ./openssl.conf

При запросе пароля указывайте пароль не менее 4 символов. На все остальные запросы можно нажать Enter.

Шаг 3. Создаём пользовательский сертификат[править]

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

name='user1'

Теперь для каждого пользователя создаём сертификат PKCS12. Выполняйте по одной команде:

openssl req -new -nodes -out $name-req.pem -keyout private/$name-key.pem -days 365 -config ./openssl.conf
openssl ca -out $name-cert.pem -days 365 -config ./openssl.conf -infiles $name-req.pem
openssl pkcs12 -export -in $name-cert.pem -inkey private/$name-key.pem -certfile cacert.pem -name "description" -out $name-cert.p12

При запросе пароля указывайте пароль, заданный при создании сертификата CA. На все остальные запросы можно нажать Enter.

Готовый файл: user1-cert.p12

Этот файл можно импортировать в Firefox или Thunderbird, а потом использовать в OpenOffice.org.

См. также[править]

cert-sh-functions

Используемая литература[править]