Science Blog





Original article:

http://www.eclectica.ca/howto/ssl-cert-howto.php

Создание и использование сертификатов SSL

Этот документ охватывает весьма конкретных, ограниченных целей, но которая отвечает общей нужно: предупреждение браузера, почты и других клиентов со жалобой о сертификатах, установленных на вашем сервере.
Не является коммерческим корневой центр сертификации (ЦС). Вместо этого мы будет наш собственный корневой ЦС и подписать наши собственные сертификаты.

Эти процедуры были разработаны с помощью OpenSSL 0.9.6, 24 сентября 2000 года, на Linux.

Быстрый старт

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

Справочная информация

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

Клиенты только импортировать наши корневой сертификат, если они доверяют нам. Это где коммерческих центров сертификации прийти: они пытаются делать обширные исследования в людей и организаций, для которых они подписи сертификатов. Путем импорта (на самом деле, продавцами браузера включения) их доверенных корневых сертификатов, мы говорим, что мы верим им, когда они гарантируют, что кто-то еще, кто они говорят они. Мы можем доверять дополнительных корневых ЦС (как мы), импортировав их сертификаты ЦС.

Примечание: Если вы находитесь в бизнесе ведения коммерческого защищенный сайт, получение коммерчески подписанный сертификат является единственным реальным выбором.

Необходимые условия

Вам потребуется установленный экземпляр OpenSSL для этого, который доступен из http://www.openssl.org. Скорее всего уже установлен на вашем компьютере. Этот документ не будет охватывать процедуру установки.

Начальная настройка

Во-первых мы создадим каталог, где мы можем работать. Не имеет значения, где это; Произвольно я собираюсь создать его в моем домашнем каталоге.

# mkdir CA
# cd CA
# mkdir newcerts private

CA каталог будет содержать:
Наш сертификат центра сертификации (ЦС)
База данных сертификатов, которые мы подписали
Ключи, запросы и сертификаты, которые мы генерируем
Он будет также наш рабочий каталог при создании или сертификатов подписи.
Каталог CA/newcerts будет содержать:

Копия каждого сертификата, который мы подписали
CA/частные каталог будет содержать:
Наш закрытый ключ ЦС
Этот ключ имеет важное значение:
Не терять этот ключ. Без него вы не сможете подписать или обновления любых сертификатов.
Не передает этот ключ никому. Если она скомпрометирована, другие будет возможность олицетворять вам.
Нашим следующим шагом является создание базы данных для сертификатов, которую мы подпишем:

# echo '01' >serial
# touch index.txt

Вместо того, чтобы использовать файл конфигурации, который поставляется с OpenSSL, мы будем создания минимальной конфигурации наших собственных в этом каталоге. Запуск редактора (vi, pico,...) и создание основных openssl.cnf:

---Begin---
#
# OpenSSL configuration file.
#

# Establish working directory.

dir = .

----End----

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

С OpenSSL значительная часть того, что происходит в сертификат зависит от содержимого файла конфигурации, а не в командной строке. Это хорошая вещь, потому что есть много для указания.
Файл конфигурации состоит из секций, которые выборочно читать и обрабатываются в соответствии с openssl аргументы командной строки. Разделы могут включать один или несколько разделов, ссылаясь на их, что помогает сделать более модульным файл конфигурации. Имя в квадратные скобки (например «[req]») начала каждого раздела.

Теперь нам необходимо добавить раздел, который контролирует создание сертификатов и секции для определения типа сертификата для создания.

Первое, что нам нужно указать — различающееся имя. Это текст, который идентифицирует владельца сертификата при просмотре. Это не производится непосредственно в файле конфигурации, но включены в раздел, обработанных при создании запросов сертификатов. Команда — «openssl req », поэтому секция под названием [req].

Добавьте следующий код openssl.cnf:


---Begin---

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

[ 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 = The Sample Company
localityName_default = Metropolis
stateOrProvinceName_default = New York
countryName_default = US

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

----End----

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

Наша переопределения для команды «openssl req» являются:

Создание нового собственного сертификата:-new - x 509
Создайте сертификат ЦС:-расширений v3_ca
Сделать его действительным для более чем 30 дней:-3650 дней
Записывать выходные данные в определенных местах: - keyout, - из
Использовать наш файл конфигурации:./openssl.cnf - config
(Записка на срок действия корневых сертификатов: по истечении срока действия сертификата корневого все сертификаты, подписал с ним больше не действительны. Чтобы исправить эту ситуацию, необходимо создавать и распространен новый корневой сертификат. Кроме того все сертификаты подписал с истекшим сроком действия надо быть отозван и повторно подписать на новую. Как это может быть много работы, вы хотите сделать ваш корневой сертификат со сроком действия до тех пор, как вы думаете, что вам будет нужно. В этом примере мы делаем его действительным на 10 лет.)

# openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem \
-out cacert.pem -days 3650 -config ./openssl.cnf
Using configuration from ./openssl.cnf
Generating a 1024 bit RSA private key
.......++++++
..........................++++++
writing new private key to 'private/cakey.pem'
Enter PEM pass phrase:demo
Verifying password - Enter PEM pass phrase:demo
-----
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.
-----
Organization Name (company) [The Sample Company]:
Organizational Unit Name (department, division) []:CA Division
Email Address []:ca@sample.com
Locality Name (city, district) [Metropolis]:
State or Province Name (full name) [New York]:
Country Name (2 letter code) [US]:
Common Name (hostname, IP, or your name) []:TSC Root CA

Этот процесс создает два файла на выходе:
Закрытый ключ в private/cakey.pem
Сертификат корневого центра сертификации в cacert.pem
cacert.PEM — файл, нужный для распространения ваших клиентов.
Закрытый ключ (cakey.pem) выглядит следующим образом:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,0947F49BB28FE5F4

jlQvt9WdR9Vpg3WQT5+C3HU17bUOwvhp/r0+viMcBUCRW85UqI2BJJKTi1IwQQ4c
tyTrhYJYOP+A6JXt5BzDzZy/B7tjEMDBosPiwH2m4MaP+6wTbi1qR1pFDL3fXYDr
ZsuN08dkbw9ML6LOX5Rl6bIBL3i5hnGiqm338Fl52gNstThv0C/OZhXT3B4qsJn8
qZb3mC6U2nRaP/NpZPcEx4lv2vH7OzHTu1TZ7t0asSpgpuH58dfHPw775kZDep2F
LXA3Oeavg0TLFHkaFBUx2xaeEG6Txpt9I74aAsw1T6UbTSjqgtsK0PHdjPNfPGlY
5U3Do1pnU9hfoem/4RAOe0cCovP/xf6YPBraSFPs4XFfnWwgEtL09ReFqO9T0aSp
5ajLyBOYOBKQ3PCSu1HQDw/OzphInhKxdYg81WBBEfELzSdMFQZgmfGrt5DyyWmq
TADwWtGVvO3pEhO1STmCaNqZQSpSwEGPGo5RFkyFvyvyozWX2SZg4g1o1X40qSg9
0FMHTEB5HQebEkKBoRQMCJN/uyKXTLjNB7ibtVbZmfjsi9oNd3NJNVQQH+o9I/rP
wtFsjs+t7SKrsFB2cxZQdDlFzD6EBA+5ytebGEI1lJHcOUEa6P+LTphlwh/o1QuN
IKX2YKHA4ePrBzdgZ+xZuSLn/Qtjg/eZv6i73VXoHk8EdxfOk5xkJ+DnsNmyx0vq
W53+O05j5xsxzDJfWr1lqBlFF/OkIYCPcyK1iLs4GOwe/V0udDNwr2Uw90tefr3q
X1OZ9Dix+U0u6xXTZTETJ5dF3hV6GF7hP3Tmj9/UQdBwBzr+D8YWzQ==
-----END RSA PRIVATE KEY-----

Конечно вы не хотите показывать это никому! Нет нужды говорить о том, что показано ниже теперь бесполезны как закрытый ключ.
Сертификат (cacert.pem) выглядит следующим образом:

-----BEGIN CERTIFICATE-----
MIIDrTCCAxagAwIBAgIBADANBgkqhkiG9w0BAQQFADCBnDEbMBkGA1UEChMSVGhl
IFNhbXBsZSBDb21wYW55MRQwEgYDVQQLEwtDQSBEaXZpc2lvbjEcMBoGCSqGSIb3
DQEJARYNY2FAc2FtcGxlLmNvbTETMBEGA1UEBxMKTWV0cm9wb2xpczERMA8GA1UE
CBMITmV3IFlvcmsxCzAJBgNVBAYTAlVTMRQwEgYDVQQDEwtUU0MgUm9vdCBDQTAe
Fw0wMTEyMDgwNDI3MDVaFw0wMjEyMDgwNDI3MDVaMIGcMRswGQYDVQQKExJUaGUg
U2FtcGxlIENvbXBhbnkxFDASBgNVBAsTC0NBIERpdmlzaW9uMRwwGgYJKoZIhvcN
AQkBFg1jYUBzYW1wbGUuY29tMRMwEQYDVQQHEwpNZXRyb3BvbGlzMREwDwYDVQQI
EwhOZXcgWW9yazELMAkGA1UEBhMCVVMxFDASBgNVBAMTC1RTQyBSb290IENBMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDaiAwfKB6ZBtnTRTIo6ddomt0S9ec0
NcuvtJogt0s9dXpHowh98FCDjnLtCi8du6LDTZluhlOtTFARPlV/LVnpsbyMCXMs
G2qpdjJop+XIBdvoCz2HpGXjUmym8WLqt+coWwJqUSwiEba74JG93v7TU+Xcvc00
5MWnxmKZzD/R3QIDAQABo4H8MIH5MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFG/v
yytrBtEquMX2dreysix/MlPMMIHJBgNVHSMEgcEwgb6AFG/vyytrBtEquMX2drey
six/MlPMoYGipIGfMIGcMRswGQYDVQQKExJUaGUgU2FtcGxlIENvbXBhbnkxFDAS
BgNVBAsTC0NBIERpdmlzaW9uMRwwGgYJKoZIhvcNAQkBFg1jYUBzYW1wbGUuY29t
MRMwEQYDVQQHEwpNZXRyb3BvbGlzMREwDwYDVQQIEwhOZXcgWW9yazELMAkGA1UE
BhMCVVMxFDASBgNVBAMTC1RTQyBSb290IENBggEAMA0GCSqGSIb3DQEBBAUAA4GB
ABclymJfsPOUazNQO8aIaxwVbXWS+8AFEkMMRx6O68ICAMubQBvs8Buz3ALXhqYe
FS5G13pW2ZnAlSdTkSTKkE5wGZ1RYSfyiEKXb+uOKhDN9LnajDzaMPkNDU2NDXDz
SqHk9ZiE1boQaMzjNLu+KabTLpmL9uXvFA/i+gdenFHv
-----END CERTIFICATE-----

Мы можем запросить содержание этого сертификата с openssl, чтобы узнать, кому принадлежит, то, что это действительно для, и т.д.:

# openssl x509 -in cacert.pem -noout -text
# openssl x509 -in cacert.pem -noout -dates
# openssl x509 -in cacert.pem -noout -purpose

Создание сертификата подписи запроса (КСО)

Теперь, когда у нас есть корневой сертификат, мы можем создать любое количество сертификатов для установки в наш SSL приложения, такие как https, spop или simap. Процедура предполагает создание запроса частным ключ и сертификат и затем чтобы подписать для генерации сертификата.
Наш файл конфигурации должен некоторые дополнительные определения для создания-CA сертификаты. Добавьте в конце файла следующий:

---Begin---
[ v3_req ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash

----End----

Чтобы избежать необходимости повторно поставить это в командной строке, вставьте следующую строку в секции [req] после строки distinguished_name, как показано:

---Begin---
distinguished_name = req_distinguished_name
req_extensions = v3_req

----End----

Теперь мы готовы создать наш первый запрос сертификата. В этом примере мы собираемся создать сертификат для безопасной POP-сервера на mail.sample.com. Все выглядит так же, когда мы создали сертификат центра сертификации, но три из последующего приглашения получают разные ответы.
Организационное подразделение: напоминание о том, что сертификат для
Адрес электронной почты: администратора почты
Общее имя: имя хоста сервера
Общее имя должно быть (или IP-адрес должен разрешаться) сервер имя ваших клиентов использовать связаться с вашего хоста. Если это не соответствует, каждый раз, когда они подключаются клиенты получат сообщение с вопросом их, если они хотят использовать этот сервер. Говорит по существу, клиентское программное обеспечение: "предупреждение! Вы попросили mail.sample.com; представившие ответы машины сертификат предназначен для smtp.sample.com. Вы действительно хотите продолжить?"

# openssl req -new -nodes -out req.pem -config ./openssl.cnf
...
Organizational Unit Name (department, division) []:Mail Server
Email Address []:postmaster@sample.com
Common Name (hostname, IP, or your name) []:mail.sample.com
...

Этот процесс создает два файла на выходе:
Закрытый ключ в key.pem
Сертификат, чтобы подписать в req.pem
Эти файлы должны храниться. По истечении срока действия сертификат, который вы собираетесь создать запрос может использоваться повторно для создания нового сертификата с новой датой истечения срока действия. Конечно закрытый ключ для шифрования SSL. При сохранении этих файлов, поможет значимые имена; к примеру mailserver.key.pem и mailserver.req.pem.
Сертификат, чтобы подписать выглядит следующим образом:

-----BEGIN CERTIFICATE REQUEST-----
MIICJDCCAY0CAQAwgagxGzAZBgNVBAoTElRoZSBTYW1wbGUgQ29tcGFueTEUMBIG
A1UECxMLTWFpbCBTZXJ2ZXIxJDAiBgkqhkiG9w0BCQEWFXBvc3RtYXN0ZXJAc2Ft
cGxlLmNvbTETMBEGA1UEBxMKTWV0cm9wb2xpczERMA8GA1UECBMITmV3IFlvcmsx
CzAJBgNVBAYTAlVTMRgwFgYDVQQDEw9tYWlsLnNhbXBsZS5jb20wgZ8wDQYJKoZI
hvcNAQEBBQADgY0AMIGJAoGBAPJhc++WxcBaoDbJpzFbDg42NcOz/ELVFMU4FlPa
yUzUO+xXkdFRMPKo54d4Pf1w575Jhlu9lE+kJ8QN2st6JFySbc9QjPwVwl9D2+I3
SSf2kVTu+2Ur5izCPbVAfU0rPZxxK8ELoOkA1uwwjFz6EFuVvnHwlguonWKDtmYW
u7KTAgMBAAGgOzA5BgkqhkiG9w0BCQ4xLDAqMAkGA1UdEwQCMAAwHQYDVR0OBBYE
FLWaQsUVIQzWr58HtDinH1JfeCheMA0GCSqGSIb3DQEBBAUAA4GBAAbe0jrGEQ3i
tyVfy5Lg4/f69rKvDGs+uhZJ9ZRx7Dl92Qq2osE7XrLB1bANmcoEv/ORLZOjWZEY
NjMvuz60O7R8GKBrvb/YhAwWhIIt2LJqPkpAEWS0kY0AkoQcfZ7h6oC35+eJ7okg
Uu3WuE57RgcNt7/ftr0sG1jUyRwMLvhv
-----END CERTIFICATE REQUEST-----

Мы можем просмотреть содержимое чтобы убедиться, что наша просьба является правильным:

# openssl req -in req.pem -text -verify -noout

Подписание сертификата

Теперь нам необходимо добавить раздел файла конфигурации, который имеет дело с будучи сертификации. В этом разделе будут определены пути к различным штук, таких как база данных, CA сертификат и закрытый ключ. В нем также некоторые основные по умолчанию значения. Вставьте следующее в openssl.cnf непосредственно перед [req] секции:

---Begin---
[ ca ]
default_ca = CA_default

[ CA_default ]
serial = $dir/serial
database = $dir/index.txt
new_certs_dir = $dir/newcerts
certificate = $dir/cacert.pem
private_key = $dir/private/cakey.pem
default_days = 365
default_md = md5
preserve = no
email_in_dn = no
nameopt = default_ca
certopt = default_ca
policy = policy_match

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

----End----

Для подписания запроса, которые мы сделали в предыдущем шаге, выполните следующее и отвечать на запросы. Обратите внимание, что вы попросили парольная фраза PEM, выбранного ранее:

# openssl ca -out cert.pem -config ./openssl.cnf -infiles req.pem
Using configuration from ./openssl.cnf
Enter PEM pass phrase:demo
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
organizationName :PRINTABLE:'The Sample Company'
organizationalUnitName:PRINTABLE:'Mail Server'
emailAddress :IA5STRING:'postmaster@sample.com'
localityName :PRINTABLE:'Metropolis'
stateOrProvinceName :PRINTABLE:'New York'
countryName :PRINTABLE:'US'
commonName :PRINTABLE:'mail.sample.com'
Certificate is to be certified until Dec 8 04:37:38 2002 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

Этот процесс обновления базы данных центра сертификации и производит два файла на выходе:
Сертификат в cert.pem
Копия сертификата в newcerts /.pem
Опять же, можно проверить сертификат:


# openssl x509 -in cert.pem -noout -text -purpose | more

Сертификат имеет закодированные версии и понятное версии в одном файле. Вы можете сдирать-понятный часть следующим:

# mv cert.pem tmp.pem
# openssl x509 -in tmp.pem -out cert.pem

Установка сертификата и ключа

Это зависит от приложения. Некоторые хотят ключ и сертификат в том же файле, и другие хотят их отдельно. Объединяя их легко сделать с:

# cat key.pem cert.pem >key-cert.pem

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

Apache

Apache имеет отдельный конфигурационные директивы для ключа и сертификата, поэтому мы держим каждый в собственный файл. Эти файлы должны храниться за пределами из DocumentRoot поддерево, поэтому структура разумной каталогов может быть:

Файл Комментарий

/home/httpd/html Apache DocumentRoot
/home/httpd/ssl SSL-связанные файлы
/home/httpd/ssl/cert.pem Site сертификат
/home/httpd/ssl/key.pem Site закрытый ключ

В рамках директивы для места (что, конечно, должны быть на порт 443), включают директивы, которые на эти файлы:


ServerName mail.sample.com
DocumentRoot /home/httpd/html
... other directives for this site ...
SSLEngine on
SSLLog /var/log/ssl_engine_log
SSLCertificateFile /home/httpd/ssl/cert.pem
SSLCertificateKeyFile /home/httpd/ssl/key.pem


Stunnel

stunnel используется как SSL обертки для нормального небезопасные услуги такие как IMAP и POP. Он принимает в качестве аргументов (среди прочего) службы выполнение и местоположение сертификата и закрытого ключа.
Ключ и сертификат содержится в одном файле. Они могут никуда идти, но хорошее местоположение может быть /etc/ssl/certs. Укажите его в командной строке stunnel следующим:

stunnel -p /etc/ssl/certs/key-cert.pem

Распространение сертификата центра сертификации

Наконец, это шаг, который останавливает клиентов со жалобой о ненадежных сертификатов. Отправить cacert.pem для тех, кто собирается использовать ваши защищенных серверов, поэтому они могут установить его в свои браузеры, почтовые клиенты, и т.д. в качестве корневого сертификата.

Обновление сертификатов

Цепочка сертификатов может нарушить работу из-за истечения срока действия сертификатов двумя способами:
Сертификаты, подписанный с вашей корневого сертификата истек.
Ваш корневого сертификата истек.
Во втором случае у вас есть немного потрудиться. Новый сертификат корневого центра сертификации необходимо создавать и распространяться, а затем ваши существующие сертификаты должны быть заново или повторной подписи.
В первом случае у вас есть два варианта. Можно либо создать новый сертификат подписи запросы и подписать их, как описано выше, или (если вы держали их) вы можете заново подписать первоначальной просьбы. В любом случае старые сертификаты должны быть отозваны, а затем новые сертификаты подписали и установил в безопасных приложений, как описано выше.

Нельзя выдавать два сертификата с тем же общим именем, который почему просроченные сертификаты должны быть отозваны. Сертификат находится в каталоге newcerts; его имя файла можно определить путем просмотра index.txt и поиска для общего имени (CN) на него. Имя файла является индекс плюс расширения «.pem», например «02.pem». Для отзыва сертификата:

# openssl ca -revoke newcerts/02.pem -config ./openssl.cnf
Using configuration from ./openssl.cnf
Enter PEM pass phrase: demo
Revoking Certificate 02.
Data Base Updated

Теперь, когда сертификат был отозван, можно заново подписать исходного запроса, или создать и подписать его, как описано выше.

Получение коммерчески подписанный сертификат

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

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

Публикация сертификата ЦС

Вы можете разместить сертификат на вашем веб-сайте для скачивания. Если вы сделаете это, следует опубликовать список отзыва сертификатов (CRL) и средство отображения с учетом его серийный номер сертификата. Это вне текущей области настоящего документа.
Apache будет служить ваш сертификат в форме узнаваемым для браузеров если указать его тип MIME. Например можно использовать расширение имени файла «.crt» для загрузки сертификатов и поместить следующее в общий раздел конфигурации Apache:

AddType application/x-x509-ca-cert .crt

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

CRL могут быть созданы следующим образом:

# openssl ca -gencrl -crldays 31 -config ./openssl.cnf -out rootca.crl

Резюме

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

Единовременно

Установите и Создайте сертификат корневого центра сертификации.

Команды

# mkdir CA
# cd CA
# mkdir newcerts private
# echo '01' >serial
# touch index.txt
# (IMPORTANT: Install and edit the configuration file shown below.)
# openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem \
-out cacert.pem -days 365 -config ./openssl.cnf

Выходные данные

Файл цель

cacert.PEM Сертификат CA
Private/cakey.PEM CA закрытый ключ

Распространение cacert.pem для ваших клиентов.

За сертификат

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

# openssl req -new -nodes -out req.pem -config ./openssl.cnf
# openssl ca -out cert.pem -config ./openssl.cnf -infiles req.pem
# cat key.pem cert.pem >key-cert.pem

Файл цель

Key.pem Закрытый ключ
req.pem Запрос сертификата подписи
CERT.pem сертификат
ключ cert.pem комбинированный закрытый ключ и сертификат

Установите key.pem и cert.pem или просто ключ cert.pem при необходимости для вашего сервера приложения.

За сертификат - обновление

Отзыв сертификата истек и переподписать исходный запрос.
Команды

# openssl ca -revoke newcerts/.pem -config ./openssl.cnf
# openssl ca -out cert.pem -config ./openssl.cnf -infiles req.pem

Установите новые сертификаты таким же образом, как оригинал.

Файл конфигурации

---Begin---
#
# OpenSSL configuration file.
#

# Establish working directory.

dir = .

[ ca ]
default_ca = CA_default

[ CA_default ]
serial = $dir/serial
database = $dir/index.txt
new_certs_dir = $dir/newcerts
certificate = $dir/cacert.pem
private_key = $dir/private/cakey.pem
default_days = 365
default_md = md5
preserve = no
email_in_dn = no
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 = md5 # 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 = The Sample Company
localityName_default = Metropolis
stateOrProvinceName_default = New York
countryName_default = US

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

[ v3_req ]
basicConstraints = CA:FALSE
subjectKeyIdentifier = hash

----End----

Более подробная информация доступна на следующих сайтах (открывается в новом окне):
OpenSSL Домашняя страница
OpenSSL документация
OpenSSL FAQ
Управление сертификатами и установка с OpenSSL Ник Burch
Франк Мартина SSL сертификаты HOWTO

Исследованы и написанная Маркус Redivo.
Настоящим предоставляется разрешение использовать этот документ в любых целях, обеспечивая сохранение информацию об авторских правах и данное исключение ответственности. Автор не несет ответственности за любые последствия, связанные с использованием этой информации.
  • Cars World
  • Cliparts for all
  • HANDMADE CHRISTMAS CARDS
  • MAC MAKEUP COSMETICS
  • MIDDAY SKY
  • LAUREN COHAN
  • OLD BLANK NEWSPAPER TEMPLATE
  • NATIVITY PAINTINGS
  • JOLLIBEE MENU