Вы можете сделать это, как я сделал с этим после этого урока.
Создать частный центр сертификации в Linux
Из этого туториала вы узнаете, как создать свой собственный частный центр сертификации или центр сертификации. Это даст вам возможность подписать свои собственные сертификаты без необходимости платить кому-либо еще. Однако, поскольку ваш частный ЦС не будет доверен другим, он может выдавать предупреждения, когда другие его используют. Вам нужно будет добавить свой корневой сертификат на машины, которым вы хотите доверять свой CA.
Я написал аналогичную статью в 2008 году (Создание центра сертификации и сертификатов с OpenSSL), но это руководство заменяет инструкции по созданию CA в более старой версии.
Установить предварительные условия
Я написал этот урок, используя Fedora 18. Единственное необходимое мне условие - OpenSSL.
su -c 'yum install openssl'
Create Directory Structure
mkdir /home/cg/myca
cd /home/cg/myca/
mkdir private certs newcerts conf export csr
echo '01' > serial
touch index.txt
По умолчанию мы будем запускать все команды в каталоге /home /cg /myca, если не указано иное.
Файл конфигурации
vim /home/cg/myca/conf/caconfig.cnf
Этот файл будет служить конфигурационным файлом по умолчанию для CA. Это должно выглядеть примерно так:
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = /home/cg/myca/
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
new_certs_dir = $dir/newcerts
certificate = $dir/certs/cacert.pem
serial = $dir/serial
#crl = $dir/crl.pem
private_key = $dir/private/cakey.pem
#RANDFILE = $dir/private/.rand
x509_extensions = usr_cert
#crl_extensions = crl_ext
default_days = 3650
#default_startdate = YYMMDDHHMMSSZ
#default_enddate = YYMMDDHHMMSSZ
#default_crl_days= 30
#default_crl_hours = 24
default_md = sha1
preserve = no
#msie_hack
policy = policy_match
[ policy_match ]
countryName = match
stateOrProvinceName = match
localityName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ req ]
default_bits = 4096 # Size of keys
default_keyfile = key.pem # name of generated keys
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca
#input_password
#output_password
string_mask = nombstr # permitted characters
req_extensions = v3_req
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = US
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = New York
localityName = Locality Name (city, district)
localityName_default = New York
organizationName = Organization Name (company)
organizationName_default = Code Ghar
organizationalUnitName = Organizational Unit Name (department, division)
organizationalUnitName_default = IT
commonName = Common Name (hostname, FQDN, IP, or your name)
commonName_max = 64
commonName_default = CGIT
emailAddress = Email Address
emailAddress_max = 40
emailAddress_default = codeghar@example.com
[ req_attributes ]
#challengePassword = A challenege password
#challengePassword_min = 4
#challengePassword_max = 20
#unstructuredName = An optional company name
[ usr_cert ]
basicConstraints= CA:FALSE
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer:always
#nsComment = ''OpenSSL Generated Certificate''
#nsCertType = client, email, objsign for ''everything including object signing''
subjectAltName=email:copy
issuerAltName=issuer:copy
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
#nsBaseUrl =
#nsRenewalUrl =
#nsCaPolicyUrl =
#nsSslServerName =
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:TRUE
#keyUsage = cRLSign, keyCertSign
#nsCertType = sslCA, emailCA
#subjectAltName=email:copy
#issuerAltName=issuer:copy
#obj=DER:02:03
[ crl_ext ]
#issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always,issuer:always
Спасибо http://wwwneu.secit.at/web/documentation/openssl/openssl_cnf.html за помощь с этим файлом.
Создать корневой сертификат
Вы можете использовать файл конфигурации (caconfig.cnf), который мы создали на предыдущем шаге, чтобы ответить на многие вопросы, задаваемые при создании сертификата. Просто выполните следующую команду и ответьте на вопросы. Большинство вопросов будут иметь значения по умолчанию, предоставленные в caconfig.cnf.
openssl req -new -x509 -days 3650 -config conf/caconfig.cnf -keyform PEM -keyout private/key.ca.cg.pem -outform PEM -out certs/crt.ca.cg.pem
Хотя мы указали число дней по умолчанию в файле caconfig.cnf, мы все равно должны указать флаг дней при использовании флага x509. Если мы этого не сделаем, сертификат будет создан со значением по умолчанию 30 дней. Благодаря Re: default_days проблема и OpenSSL req(1).
Если вы хотите указать свои собственные значения, вы можете вместо этого выполнить следующую команду.
openssl req -new -x509 -days 3650 -newkey rsa:4096 -extensions v3_ca -keyform PEM -keyout private/key.ca.cg.pem -outform PEM -out certs/crt.ca.cg.pem
Вам будет предложено ввести пароль. Убедитесь, что вы используете безопасную фразу-пароль и не забудьте ее. Вам также будут заданы другие актуальные вопросы. Ниже приведен пример выходных данных процесса.
Создание 4096-битного закрытого ключа RSA ........................................... ...................................++................................................ .................................................. .................................................. .................................................. .....................................++запись нового закрытого ключа в 'private/key.ca.cg.pem' Введите пароль PEM:
Проверка - введите пароль PEM:
Вам будет предложено ввести информацию, которая будет включена в ваш запрос на сертификат. То, что вы собираетесь ввести, это то, что называется отличительным именем или DN. Есть довольно много полей, но вы можете оставить некоторые пустыми. Для некоторых полей будет значение по умолчанию,
Если вы введете «.», Поле останется пустым.
Название страны (двухбуквенный код) [США]: Название штата или провинции (полное название) [Нью-Йорк]: Название населенного пункта (город, район) [Нью-Йорк]: Название организации (компании) [Код Ghar]: Название подразделения организации ( отдел, отдел) [IT]: общее имя (имя хоста, полное доменное имя, IP-адрес или ваше имя) [CGIT]: адрес электронной почты [codeghar@example.com]:
Два файла, key.ca.cg.pem и crt.ca.cg.pem, будут созданы в каталогах $ dir/private и $ dir/certs соответственно. Убедитесь, что вы храните эти файлы в надежном месте и делаете их резервные копии.
crt.ca.cg.pem является вашим корневым сертификатом и будет использоваться для подписи всех остальных сертификатов.
Проверить корневой сертификат
Вы должны убедиться, что сертификат был создан правильно с точной информацией.
openssl x509 -in certs/crt.ca.cg.pem -inform pem -noout -text Экспорт корневого сертификата
Поскольку этот вновь созданный центр сертификации и его корневой сертификат не распознаются и не пользуются доверием на любом компьютере, вам необходимо импортировать корневой сертификат на все остальные компьютеры. По умолчанию ОС будет иметь список доверенных ЦС, и вам необходимо импортировать свой ЦС в этот список. Процесс варьируется для разных ОС.
Windows
Корневой сертификат, который мы создали, имеет формат PEM. Для Windows он должен быть в формате DER. Отличным источником информации о различиях между ними являются сертификаты DER и CRT против CER против PEM и их преобразование.
openssl x509 - в сертификатах /crt.ca.cg.pem - outform der -out export /ca.cg.crt
Убедитесь, что сертификат был успешно создан.
openssl x509 -в экспорте /ca.cg.crt -информировать -noout -text
Получив экспортированный файл, скопируйте его на компьютер с Windows. Вы можете следовать инструкциям, приведенным в разделе Как импортировать доверенный корневой центр сертификации В Windows, чтобы импортировать сертификат в хранилище доверенных корневых центров сертификации на локальном компьютере.
Вы также можете экспортировать сертификат в формат PKCS12. Спасибо за импорт сертификата пользователя в хранилище сертификатов Windows за эту информацию.
openssl pkcs12 -export -out export/ca.cg.p12 -in certs/crt.ca.cg.pem -inkey private/key.ca.cg.pem
Вам будет предложено предоставить пароль, который вы использовали для создания корневого сертификата. Вам также будет предложено ввести новый «пароль для экспорта».
Скопируйте файл .p12 в Windows и дважды щелкните его. Откроется мастер и поможет вам установить его.
Заключение
Процесс создания ЦС очень прост. Далее я напишу о подписании запроса на сертификат.