Створення і використання SSL-сертифікатів

Цей документ описує, як встановити себе в якості кореневого центру сертифікації кореневий центр сертифікації) з використанням пакету openssl набір інструментів. В якості кореневого центру сертифікації, ви можете підписати і встановити сертифікати для використання у вашому сервері додатків, таких як Apache і Stunnel.

Область

Цей документ охоплює дуже конкретні, обмежені цілі, але той, який відповідає загальним параметрами: запобігання браузер, пошта, та інші клієнти не скаржилися сертифікатів, встановлених на сервері.
Не поширюється ця справа з комерційною кореневий сертифікат центру сертифікації (ЦС). Замість цього, ми станемо наш власний кореневої ЦС, і підписати наші власні сертифікати.

Ці процедури були розроблені з використанням openssl 0.9.6, 24 вересня 2000 року, на Linux.

Швидкий Старт

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

Фон

Чому наш власний кореневої ЦС? Так що ми можемо скористатися SSL-шифрування, не витрачаючи зайвих грошей на такі, що мають наші сертифікати підписані.
Недоліком є те, що браузери будуть як і раніше скаржаться на наш сайт не довіряють до тих пір, поки наш кореневий сертифікат імпортується. Однак, як тільки це буде зроблено, ми нічим не відрізняємося від комерційних центрів сертифікації.

Клієнти будуть тільки імпортувати кореневий сертифікат, якщо вони довіряють нам. Це де комерційні CAS: вони претендує на те, щоб зробити великі дослідження, що стосуються людей і організацій, для яких вони підписують сертифікати. Шляхом імпорту (насправді, постачальниками браузерів включення) їх довірені кореневі сертифікати, ми говоримо, що ми довіряти їм, коли вони гарантують, що хтось, хто вони говорять вони. Ми можемо довіряти додаткових кореневих центрів сертифікації (як і ми), імпортуючи сертифікати АВТОРИЗАЦІЇ.

Примітка: якщо ви займаєтеся торгівлею за безпечний сайт, отримання комерційно підписаний сертифікат є єдиним реалістичним вибором.

Передумови

Потрібно буде встановлена копія openssl для цього, яка доступна з http://www.openssl.org. Швидше за все, вона вже встановлена на вашій машині. Цей документ не поширюється на встановлення процедури.

Первісна Настройка

По-перше, ми створимо каталог, в якому ми можемо працювати. Не важливо, де це; я довільно буде створити в своїй домашній директорії.

# mkdir CA
# cd CA
# mkdir newcerts private

ЦС каталог буде містити:

  • Наш центр сертифікації (ЦС) сертифікат
  • База даних сертифікатів, ми підписали
  • Ключі, запити, і ми генеруємо сертифікати

Це теж буде нашої робочої директорії при створенні або підписання сертифікатів.
ЦС/newcerts каталог буде містити:

  • Копія кожного сертифіката ми підписуємо

ЦС/приватний каталог буде містити:

  • Наші закритого ключа CA

Цей параметр дуже важливий:

  • Не втрачайте цей ключ. Без нього Ви не зможете підписати або оновити будь сертифікати.
  • Не розголошувати цей ключ нікому. Якщо він скомпрометований, інші зможуть наслідувати вам.

Наш наступний крок полягає у створенні бази даних сертифікатів ми підпишемо:

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

Замість того, щоб використовувати файл конфігурації, який поставляється з openssl, ми збираємося створити мінімальну конфігурацію з наших в цей каталог. Почніть свій редакторі (VI, Піко, …) і створення базового пакету openssl.cnf:

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

# Establish working directory.

dir			= .

----End----

Створення кореневого сертифіката

З openssl, велика частина того, що йде в сертифікат залежить від вмісту файлу конфігурації, а не в командному рядку. Це гарна річ, тому що є багато, щоб вказати.
Конфігураційний файл поділений на розділи, які вибірково читати і обробляється відповідно до openssl з параметрами командного рядка. Розділи можуть містити один чи декілька інших розділів, ставлячись до них, що допомагає зробити конфігураційний файл більше модульним. Ім’я в квадратних дужках (наприклад, [ заявка ]») починається кожен розділ.

Тепер нам потрібно додати розділ, який визначає, як створюються сертифікати, розділ для визначення типу сертифіката, щоб створити.

Насамперед нам потрібно вказати Відмітне ім’я. Це текст, який ідентифікує власника сертифіката при перегляді. Він прямо не перераховані в конфігураційному файлі, але включена в розділ зроблений, коли запити на сертифікати створюються. Команда «openssl з треб <аргументи>», тому в розділі під назвою [ вих ].

Додайте наступний до 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----

Для того, щоб захистити себе від несанкціонованого використання нашого сертифіката АВТОРИЗАЦІЇ, це фразу захищені. Кожен раз, коли ви використовуєте сертифікат CA підписати заявку, вам буде запропоновано ввести парольну фразу. Тепер було б гарний час, щоб підібрати безпечний пароль і помістити його в безпечне місце.
Всю підготовку тепер місце для створення нашого самоподпісанного кореневого сертифіката. Для цього, ми хочемо змінити деякі значення за замовчуванням ми просто кладемо в конфігурації, тому ми будемо вказувати наші перевизначає в командному рядку.

Наш перевизначає в «додатках openssl треб» команди є:

  • Створити новий сертифікат із власним підписом: -new -x509
  • Створення сертифіката АВТОРИЗАЦІЇ: -extensions v3_ca
  • Зробити його дійсним протягом більше 30 днів: -3650 днів
  • Записуємо висновок у певних місцях: -keyout, -out
  • Використовуйте наш файл конфігурації: -config ./openssl.cnf

(Замітка на термін дії кореневих сертифікатів: коли кореневий сертифікат закінчується, всі сертифікати, підписані з ним більше не діють. Щоб виправити цю ситуацію, новий кореневий сертифікат повинен бути створений і поширений. Також, всі сертифікати, підписані з терміном дії повинні бути скасовані, і повторно підписав з новим. Як це може бути багато роботи, ви хочете зробити свій кореневий сертифікат дійсний так довго, як ви думаєте, ви будете мати потребу в цьому. У цьому прикладі ми робимо він дійсний протягом десяти років.)

Виконайте команду, як показано на рисунку. У цьому випадку УГР фразу він просить-це новий, який необхідно ввести двічі:

# 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]:<enter>
Organizational Unit Name (department, division) []:CA Division
Email Address []:ca@sample.com
Locality Name (city, district) [Metropolis]:<enter>
State or Province Name (full name) [New York]:<enter>
Country Name (2 letter code) [US]:<enter>
Common Name (hostname, IP, or your name) []:TSC Root CA

Цей процес виробляє два файли, як результат:

  • Закритий ключ в рамках private/cakey.pem
  • Кореневий сертифікат ЦС в cacert.pem

cacert.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.п’ємо) виглядає так:

-----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

Створення запиту підпису сертифіката (CSR)

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

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

----End----

Щоб уникнути необхідності повторно поставити це в командному рядку, вставте в розділ [ вих ] розділ після рядка ім’я-ідентифікатор, як показано на малюнку:

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

----End----

 

Тепер ми готові створити наш перший запит на сертифікат. У цьому прикладі ми збираємося створити сертифікат для безпечного поп сервер mail.sample.com. Все виглядає так само, як коли ми створили СА сертифікат, але три наступних запрошень отримати різні відповіді.

  • Підрозділ: нагадування про те, що сертифікат
  • Адреса електронної пошти: поштмейстер
  • Загальне ім’я: hostname сервера

Загальна назва повинна бути (або 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-шифрування. Коли ви збережете ці файли, осмислені імена допоможе; наприклад, поштовий сервер.ключ.п’ємо і поштовий сервер.треб.угр.
Сертифікат для підпису запиту виглядає так:

-----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

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

Тепер нам необхідно додати в конфігураційний файл, секцію, яка займається будучи сертифікації. У цьому розділі визначаються шляхи різні фішки, такі як бази даних, сертифіката ЦС і секретного ключа. Вона також надає деякі базові значення за замовчуванням. Вставити наступне в openssl.cnf перед [ вих ] розділ:

---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----

Підписати запит ми зробили в попередньому кроці, виконайте наступну і відповіді на запрошення. Зверніть увагу, що ви попросили ПЕМ фразу вибрали раніше:

# 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

 

Цей процес оновлення бази даних CA, і виробляє два файлу, як результат:

  • Сертифікат cert.pem
  • Копію сертифіката в newcerts/<serial>.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
  • Комбінований закритий ключ і сертифікат key-cert.pem

Скопіювати відповідні файли в місця, зазначені в інструкції для вашого застосування і системи. Перезапустіть додатка, і ви перебуваєте в експлуатацію з новим сертифікатом.

Апач

Апач має окремі нормативи для ключа та сертифіката, тому ми тримаємо кожен у свій власний файл. Ці файли повинні зберігатися за межами documentroot так піддерево, тому розумна структура каталогів може бути:

Файл Коментар
/home/httpd/html Апача Documentroot Так
/home/httpd/ssl Пов’язані з SSL файли
/home/httpd/ssl/cert.pem Сертифікат сайту
/home/httpd/ssl/key.pem Сайт закритого ключа

 

В директиву <virtualhost> для сайту (які звичайно повинні бути на порт 443), включають в себе директиви, що вказують на ці файли:

<VirtualHost 192.168.1.1: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
</VirtualHost>

Stunnel

stunnel використовується як оболонка SSL для нормальної небезпечні сервіси, такі як IMAP і Pop. Вона приймає в якості аргументів (серед іншого) службу для виконання і розташування сертифіката та закритого ключа.
Ключ та сертифікат надаються в одному файлі. Вони можуть піти куди завгодно, але гарному місці може бути /etc/ssl/certs. Вкажіть його в stunnel командного рядка наступним чином:

stunnel -p /etc/ssl/certs/key-cert.pem <other stunnel args...>

Поширення сертифіката АВТОРИЗАЦІЇ

Це, нарешті, — це той крок, який зупиняє клієнтів від скаржишся ненадійних сертифікатів. Надішліть cacert.пем для тих, хто збирається використовувати свій захищених серверах, так що вони можуть встановити свої браузери, поштові клієнти, і т. д. в якості кореневого сертифіката.

Продовження Сертифікатів

Ваш сертифікат ланцюга може зірватися через закінчення терміну дії Сертифіката двома способами:

  • Сертифікати, які ви підписали з вашого кореневого сертифіката закінчився.
  • Кореневий сертифікат минув.

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

Ви не може видати два сертифіката з однаковим загальним назвою, який є, чому прострочені сертифікати повинні бути відкликані. Сертифікат в 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

Тепер ви можете залишити сертифікат для скачування з посиланням виду <a href=»www.sample.com/ourrootcert.crt»>Our Root Certificate</a> наш кореневий сертифікат</A>, і коли посилання на відвідувача браузер запропонує встановити сертифікат.

СЛС можуть бути створені наступним чином:

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

 

Резюме

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

Одноразової Настройки

Налаштувати і створити кореневий сертифікат CA.
Команди

# 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 Сертифікат ЦС
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 Сертифікат
key-cert.pem Комбінований закритий ключ і сертифікат

 

Встановити key.pem і cert.pem, або просто key-cert.pem залежно Серверний додаток.

За Сертифікат — Продовження

Відкликати старий сертифікат та повторно підписати вихідний запит.
Команди

# openssl ca -revoke newcerts/<serial>.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----

Посилання

Більш детальна інформація доступна на наступних сайтах (відкриється в новому вікні):

Ссылка на оригинал статьи: http://www.eclectica.ca/howto/ssl-cert-howto.php

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>