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

Source page: http://www.eclectica.ca/howto/ssl-cert-howto.php#top

Този документ описва как да се утвърди като основен сертификат орган (корен CО) с помощта на OpenSSL набор от инструменти. Като корен CО, вие сте в състояние да се регистрирате и инсталиране на сертификати за използване в приложения Интернет сървър, като Apache и Stunnel.

Съдържание

Обхват

Бърз старт

Заден план

Предварителни

Първоначалната настройка

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

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

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

Инсталиране на сертификата и ключа

Разпространение на удостоверението CО

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

Получаването на сертификат, подписан в търговската

Публикуване CО Сертификати

Резюме

Конфигурационния файл

Препратки

Обхват

В настоящия документ е много специфична, ограничена цел, но този, който отговаря на обща необходимост: предотвратяване браузър, поща и други клиенти от оплаква сертификатите, инсталирани на вашия сървър.

Не е покрита се занимава с власт търговски главния сертификат (Калифорния). Вместо това, ние ще се превърне в нашия собствен корен CО, и да подпише нашите собствени сертификати.

Тези процедури са разработени с помощта на OpenSSL 0.9.6, 24ти септември 2000, на Linux.

Върнете се в началото

Бърз старт

Тези, които искат да започнете да създавате сертификати веднага без да четете цялата този документ трябва да преминете към обобщението в края.

Върнете се в началото

Заден план

Защо да е нашия собствен корен CО? Така че ние можем да се възползваме от SSL криптиране, без да губите излишно пари за имащ подписани нашите сертификати.

Недостатък е, че браузърите ще продължат да се оплакват от нашия сайт, не се ползва с доверието, докато нашият основен сертификат се внася. Въпреки това, след това се прави, ние не са различни от търговските корен СО.

Само за клиенти ще внасят корена ни сертификат, ако ни се доверите. Това е мястото, където търговските СО идват в: те претендират да направи задълбочени изследвания хората и организациите, за които те подписват сертификатите. Внасяйки (всъщност, от продавачите на браузъра, включващи) своите надеждни основни сертификати, ние казваме, че ние им се доверите, когато те се гарантира, че някой друг е които казват, че са те. Можем да се доверим на допълнителни основните сертифициращи органи (като нас), като се внасят своите CО сертификати.

Забележка: ако сте в бизнеса за провеждане на търговска сигурен сайт, получаване на търговски подписан сертификат е единственият реалистичен избор.

Върнете се в началото

Предварителни

Ще се нуждаете от инсталиран копие на OpenSSL за това, което се предлага от http://www.openssl.org. Шансовете са, че вече е инсталиран на вашата машина. Този документ не ще покрие инсталационната процедура.

Върнете се в началото

Първоначалната настройка

На първо място, ние ще създадем директория, в която можем да работим. Няма значение, когато това е; аз съм произволно ще го създаде в дома си директория.

# mkdir CA
# cd CA
# mkdir newcerts private

Директорията на Калифорния ще съдържа:

• Нашата Сертифициращ орган (Калифорния) сертификат

• Базата данни на сертификатите, които сме подписали

• Ключовете, заявки и сертификати, които генерираме

Освен това ще бъде нашата работна директория, когато създавате или подписване на сертификати.

Директория CО/newcerts ще съдържа:

• Копие от всеки сертификат ние знак

Най-CО/частни директория ще съдържа:

• Нашият личен ключ CО

Този ключ е от значение:

• Не губете този ключ. Без него, няма да можете да влезете или да поднови всички сертификати.

• Не разкривайте този бутон за никого. Ако тя е изложена на риск, други ще бъдат в състояние да се представи като вас.

Следващата ни стъпка е да се създаде база данни за сертификатите ще подпишат:

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

Вместо да използвате конфигурационния файл, който идва с OpenSSL, ние ще създадем минимална конфигурация на собствената ни в тази директория. Започнете редактор (VI, пико…) и да се създаде основен 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----

За да се предпазим от неоторизирано използване на нашия сертификат CО, той е защитен пропуск. Всеки път, когато използвате сертификата за Калифорния, за да подпише молба, ще бъдете подканени да въведете. Сега би било добро време, за да изберете сигурна парола и я поставете на сигурно място.

Всички подготовката вече е на мястото си за създаване на нашата самостоятелно подписан сертификат корен. За това, което искаме да замените някои от тези по подразбиране ние просто пуснати в конфигурацията, така че ние ще въведем нашите Замените на командния ред.

Нашите Замените на командата “OpenSSL REQ” са:

• Създаване на нова самостоятелна подписан сертификат: -new -x509

• Създаване на сертификат за Калифорния: -extensions v3_ca

• Направете го валидна за повече от 30 дни: -days 3650

• Записване на изхода на определени места: -keyout, -out

• Използвайте нашия конфигурационен файл:  -config ./openssl.cnf

(Бележка от срока на валидност на удостоверенията корен: когато сертификат корен изтече, всички сертификати, подписани с него вече не са валидни За да коригирате тази ситуация, трябва да се създаде и разпространи на нов основен сертификат Също така, подписани всички сертификати с този, с изтекъл срок трябва да бъде отменено, и преподписа с новата. тъй като това може да бъде много работа, която искате да направите своя корен валидно удостоверение за толкова дълго, колкото си мислиш, че ще е необходимо. в този пример, ние се прави валиден в продължение на десет години.)

Изпълнете командата, както е показано. В този случай, фраза PEM пас го пита за е нов, който трябва да въведете два пъти:

# 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

Този процес води до два файла като изход:

• Личен ключ в  частен/cakey.pem

• Сертификат корен CО в  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. Процедурата включва създаване ключ и сертификат молба лично, а след подписване на искането за генериране на сертификата.

Нашата конфигурационен файл се нуждае от още няколко определения за създаване на сертификати не-CО. Добавете следното в края на файла:

---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. Всичко изглежда по същия начин, както когато сме създали сертификат CО, но три от следващите подканите получите различни отговори.

• Организационна единица: напомняне за това, което сертификатът е за

• E-mail адрес: пощите

• Общо име: името на хоста на сървъра

Общото име трябва да бъде (или 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

Върнете се в началото

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

Сега ние трябва да добавите секция конфигурационен файл, който се занимава с това да си Сертифициращ орган. В този раздел ще идентифицира пътеките към различните парчета, като например базата данни, сертификатът за Калифорния, и на частния ключ. Той също така предоставя някои основни стойности по подразбиране. Поставете следното в 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/<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

Копирайте съответните файлове в местата, посочени в указанията за кандидатстване и система. Рестартирайте приложенията, а вие сте в експлоатация с новия си сертификат.

Apache

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

Досие Коментар
/home/httpd/html Apache 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...>

Има още…

Върнете се в началото

Разпространение на удостоверението CО

Това, в крайна сметка, е стъпка, която спира на клиентите от оплаква ненадеждни сертификати. Изпрати  cacert.pem на всеки, който ще използвате вашите защитени сървъри, така че те могат да го инсталирате в своите браузъри, програми за електронна поща, и така нататък, като свидетелство за корен.

Върнете се в началото

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

Вашият верига сертификати могат да се счупят, поради изтичане сертификат по два начина:

• Удостоверенията вас, подписани с основния сертификат са изтекли.

• Вашият корен самия сертификат е изтекъл.

Във втория случай, че имате някаква работа за вършене. Трябва да се създаде нов основен сертификат CО и разпространени, а след това вашите съществуващи сертификати трябва да бъдат пресъздадени или повторно подписан.

В първия случай, че имате две възможности. Можете да се генерират нови искания за подписване на сертификат и да ги подпише, както е описано по-горе, или (ако ги държат), можете да подпишете отново първоначалните искания. И в двата случая, старите свидетелства следва да бъдат отменени, а след това на новите сертификати, подписани и инсталират в своите сигурни приложения, както е описано по-рано.

Вие не може да издава два сертификата с един и същ общото име, което е и причината изтеклите сертификати трябва да бъде отменено. Сертификатът е в директорията на 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

Сега, когато сертификатът е бил анулиран, можете да подпишете отново първоначалното искане, или да създадете и да подпише нов, както е описано по-горе.

Върнете се в началото

Получаването на сертификат, подписан в търговската

Процесът е почти същата като тази, просто демонстрира, но ТЗ прави голямата част от него. Трябва да се генерира сертификат Заявка за подписване, както е показано по-горе, и след това да го представи за подписване. Ще получите подписан сертификат за монтаж.

Този сертификат ще бъде автоматично ползва с доверието на браузъра на клиента си, тъй като браузърът да има удостоверение за търговска КО построен в. Не е необходимо да се разпределят нищо.

Конфигурацията е описано тук може да бъде недостатъчен за тази цел, тъй като има много повече, които могат да отидат в искането. Различни сертифициращи органи изискват различни функции в искането за подпис на сертификата, никой от които ние сме преминали в тук. Този допълнителен материал е извън настоящия обхват на този документ.

Върнете се в началото

Публикуване CО сертификати

Можете да публикувате сертификата на вашия уеб сайт за изтегляне. Ако направите това, вие също трябва да публикувате списъка с анулирани сертификати, както и средство за показване на сертификата, даден му сериен номер. Това е извън настоящия обхват на този документ.

Apache ще служи сертификата си във форма, разпознаваем за браузъри, ако посочите от имена. Например, можете да използвате файлово разширение “.crt” за сваляне на сертификати и да постави следното в общата част на вашата конфигурация на Apache:

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

Сега можете да публикувате сертификата за сваляне с линк като <a href=”www.sample.com/ourrootcert.crt”> Нашият корен сертификат</a>, а когато връзката е последвано браузъра на посетителя ще предложи да го инсталира сертификат.

Списъка с анулирани сертификати може да бъде създаден, както следва:

# 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 Сертификат от сертифициращ орган
private/cakey.pem CО личен ключ

Разпределете  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----

Върнете се в началото

Препратки

Повече информация можете да намерите на следните сайтове (отваря се в нов прозорец):

OpenSSL начална страница

OpenSSL документация

OpenSSL отговори

Сертификат за управление и монтаж Ник Бърч (Nick Burch) с OpenSSL

SSL сертификати HOWTO Франк Мартин (Franck Martin)

Върнете се в началото

Проучени и написана от  Маркус Редиво (Marcus Redivo).
Разрешение за ползване на този документ за всяка цел, се отпуска, при условие че информацията за авторското право и този отказ от отговорност се запазва. Автор не поема отговорност за каквито и да било последици, произтичащи от използването на тази информация.


Copyright © 1996, 2017 Marcus Redivo. All rights reserved.

 

Leave a Reply